【技术文档摘要】
<div align="center"> <a href="https://pypi.org/project/mcp-gateway/"> <img src="https://img.shields.io/pypi/v/mcp-gateway.svg?color=blue" alt="PyPI 版本"> </a> <a href="https://pypi.org/project/mcp-gateway/"> <img src="https://img.shields.io/pypi/pyversions/mcp-gateway.svg" alt="Python 版本"> </a> <a href="./LICENSE"> <img src="https://img.shields.io/github/license/lasso-security/mcp-gateway" alt="许可证"> </a>
MCP 网关是一个先进的中间件解决方案,用于集中和增强您的 AI 基础设施中的 Model Context Protocol (MCP) 服务器。
MCP 网关作为 LLM 和其他 MCP 服务器之间的中介。它:
mcp.json 文件读取服务器配置。安装 mcp-gateway 包:
pip install mcp-gateway
--mcp-json-path- 必须指向您的 mcp.json 或 claude_desktop_config.json
--plugin或-p- 指定要启用的插件(可以多次使用)
此示例启用了基本防护栏以进行令牌屏蔽,并启用了 xetrack 追踪插件以处理文件系统 MCP:
mcp-gateway --mcp-json-path ~/.cursor/mcp.json -p basic -p xetrack
您可以通过在“servers”键下添加 MCP 服务器配置来添加更多将通过网关的 MCP。
<details> <summary>Cursor 示例:</summary>{
"mcpServers": {
"mcp-gateway": {
"command": "mcp-gateway",
"args": [
"--mcp-json-path",
"~/.cursor/mcp.json",
"--plugin",
"basic",
"--plugin",
"xetrack"
],
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"."
]
}
}
}
}
}
</details>
<details>
<summary>Claude 示例:</summary>
获取 <PYTHON_PATH>
which python
{
"mcpServers": {
"mcp-gateway": {
"command": "<python path>",
"args": [
"-m",
"mcp_gateway.server",
"--mcp-json-path",
"<path to claude_desktop_config>",
"--plugin",
"basic"
],
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"."
]
}
}
}
}
}
</details>
<details>
<summary>Docker</summary>
克隆此仓库后构建镜像
docker build -t mcp/gateway .
{
"mcpServers": {
"mcp-gateway": {
"command": "docker",
"args": [
"run",
"--rm",
"--mount", "type=bind,source=/Users/oro/Projects/playground/mcp-gateway,target=/app",
"-i",
"-v", "/Users/oro/.cursor/mcp.json:/config/mcp.json:ro",
"-e", "LASSO_API_KEY=<LASSO_API_KEY>",
"-v", "mcp-gateway-logs:/logs",
"mcp/gateway:latest",
"--mcp-json-path", "/config/mcp.json",
"--plugin", "basic",
"--plugin", "lasso"
],
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"."
]
}
}
}
}
}
在此示例中,我们使用了 lasso 和基本防护栏来展示如何向 Docker 传递环境变量和参数,以及如何挂载存储以供文件系统 MCP 使用。
Docker 镜像可以在构建时包含某些插件所需的可选依赖项(例如,presidio)。
在 docker build 命令期间使用 INSTALL_EXTRAS 构建参数。提供所需额外功能的逗号分隔字符串:"presidio,xetrack"
MCP 网关会自动屏蔽响应中的敏感令牌,防止暴露凭证的同时仍提供所需的功能。
创建一个包含敏感信息的文件:
echo 'HF_TOKEN = "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"' > tokens.txt
当代理通过 MCP 网关请求读取此文件时:
使用您的 mcp-gateway 工具读取 ${pwd}/tokens.txt 并返回 HF_TOKEN
输出:

在该仓库根目录启动 MCP 网关服务器:
mcp-gateway -p basic -p presidio
您也可以通过以下方式调试服务器:
LOGLEVEL=DEBUG mcp-gateway --mcp-json-path ~/.cursor/mcp.json -p basic -p presidio
以下是 MCP 使用的工具,用于创建到其他 MCP 服务器的代理
get_metadata - 提供有关所有可用代理 MCP 的信息,帮助 LLM 选择合适的工具和资源run_tool - 在清理请求和响应后执行来自任何代理 MCP 的能力有关插件系统的工作原理、如何创建自己的插件或如何贡献的详细信息,请参阅 插件系统文档。
MCP 网关支持各种插件以增强安全性和功能。这是内置防护栏插件的概述:
| 名称 | PII 屏蔽 | 令牌/秘密屏蔽 | 自定义策略 | 提示注入 | 危害内容 |
|---|---|---|---|---|---|
basic | ❌ | ✅ | ❌ | ❌ | ❌ |
presidio | ✅ | ❌ | ❌ | ❌ | ❌ |
lasso | ✅ | ✅ | ✅ | ✅ | ✅ |
注意: 若要使用 presidio 插件,需要单独安装:pip install mcp-gateway[presidio]。
mcp-gateway -p basic
屏蔽基本秘密
mcp-gateway -p presidio
Presidio 是一个识别和匿名化包
mcp-gateway -p lasso
要使用 Lasso Security 的高级 AI 安全防护栏,请更新您的 mcp.json 配置如下:
LASSO_API_KEY=<YOUR-API-KEY> 添加到您的环境变量或 "env" 部分。servers 下插入其他 MCP 服务器配置。示例:
{
"mcpServers": {
"mcp-gateway": {
"command": "mcp-gateway",
"args": [
"--mcp-json-path",
"~/.cursor/mcp.json",
"-p",
"lasso"
],
"env": {
"LASSO_API_KEY": "<lasso_token>"
},
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"."
]
}
}
}
}
}
🔍 对 MCP 交互进行全面监控。
🛡️ 实时缓解特定于 GenAI 的威胁,如提示注入和敏感数据泄露,内置保护优先考虑部署的安全性。
✨ 使用灵活的自然语言定制符合您业务独特需求的安全策略。
⚡ 快速简便地安装适用于任何部署风格。几分钟内通过直观易用的仪表板监控 MCP 的数据流。
Lasso 防护栏通过 Lasso 的 API 检查内容是否存在安全违规行为,然后再处理请求和响应。
了解更多请访问我们的网站 👉 Lasso Security。
xetrack 是一个轻量级包,用于跟踪机器学习实验、基准测试和监控结构化数据。
我们可以使用它来调试和监控 工具调用,使用日志(loguru)或 duckdb 和 sqlite。
mcp-gateway -p xetrack
pip install xetrack
XETRACK_DB_PATH - SQLite 数据库的位置。
XETRACK_LOGS_PATH - 日志位置FLATTEN_ARGUMENTS - 展平参数,默认 trueFLATTEN_RESPONSE - 展平响应,默认 true.gitignore{
"mcpServers": {
"mcp-gateway": {
"command": "mcp-gateway",
"args": [
"--mcp-json-path",
"~/.cursor/mcp.json",
"-p",
"xetrack"
],
"env": {
"XETRACK_DB_PATH": "tracing.db",
"XETRACK_LOGS_PATH": "logs/"
},
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"."
]
}
}
}
}
}
假设您使用文件系统 list_directory 工具在路径 "." 上操作,您可以在 logs/<date>.log 中找到调用参数。
您可以使用 xetrack CLI 查询数据库:
$ xt tail tracing.db --json --n=1
[
{
"timestamp": "2025-04-17 17:12:48.233126",
"track_id": "mottled-stingray-0411",
"meta": "f3be31e09667745f",
"paths": null,
"call_id": "deab617e-0a45-4950-9de9-3fb549810cf2",
"capability_name": "list_directory",
"content_type": "text",
"content_annotations": "f3be31e09667745f",
"response_type": "CallToolResult",
"server_name": "filesystem",
"capability_type": "tool",
"isError": 0,
"content_text": "[DIR] .cursor\n[DIR] .git\n[FILE] .gitignore\n[DIR] .pytest_cache\n[DIR] .venv\n[FILE] LICENSE\n[FILE] MANIFEST.in\n[FILE] README.md\n[DIR] docs\n[DIR] logs\n[DIR] mcp_gateway\n[FILE] pyproject.toml\n[FILE] requirements.txt\n[DIR] tests\n[DIR] tmp",
"path": ".",
"prompt": null
}
]
使用 Python
from xetrack import Reader
df = Reader("tracing.db").to_df()
使用 DuckDB CLI 和 UI
$ duckdb --ui
D INSTALL sqlite; LOAD sqlite; ATTACH 'tracing.db' (TYPE sqlite);
D SELECT server_name,capability_name,path,content_text FROM db.events LIMIT 1;
┌─────────────┬─────────────────┬─────────┬────────────────────────────────────┐
│ server_name │ capability_name │ path │ content_text │
│ varchar │ varchar │ varchar │ varchar │
├─────────────┼─────────────────┼─────────┼────────────────────────────────────┤
│ filesystem │ list_directory │ . │ [DIR] .cursor\n[DIR] .git\n[FILE… │
└─────────────┴─────────────────┴─────────┴────────────────────────────────────┘
当然,您可以使用另一个 MCP 服务器查询 SQLite 数据库 😊
安全扫描器在加载前分析 MCP 服务器的潜在安全风险,通过声誉分析和工具描述扫描提供额外一层保护。
mcp-gateway --scan -p basic
特性:
初始配置:
{
"mcpServers": {
"mcp-gateway": {
"command": "mcp-gateway",
"args": [
"--mcp-json-path",
"~/.cursor/mcp.json",
"--scan"
],
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"."
]
}
}
}
}
}
首次运行后,扫描器将分析所有配置的 MCP 服务器并在您的配置中添加 blocked 状态:
{
"mcpServers": {
"mcp-gateway": {
"command": "mcp-gateway",
"args": [
"--mcp-json-path",
"~/.cursor/mcp.json",
"--scan"
],
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"."
],
"blocked": "passed"
}
}
}
}
}
状态值:
"passed" - 服务器通过了所有安全检查,可以安全使用"blocked" - 服务器未能通过安全检查,将被阻止加载"skipped" - 跳过了服务器扫描(手动覆盖)null - 服务器尚未扫描或先前被阻止的服务器现在被认为安全注意: 如果您确信某个被阻止的服务器是安全的,可以手动将其状态改为
"skipped"。
您的代理直接与我们的 MCP 网关交互,网关充当中央路由器和管理系统。每个底层 MCP 都被单独封装和管理。
关键功能
无偏见防护栏
统一可见性
安全扫描器
高级追踪