关于 MCP Gateway
MCP Gateway 是一个基于插件的 MCP 服务网关,用于编排其他 MCP 服务,并支持开发者在其上构建企业级 Agent。它在 LLM 与被代理的 MCP 服务之间充当中间层,负责脱敏与安全扫描。
主要功能
- 01读取 mcp.json 配置并管理 MCP 服务生命周期
- 02请求与响应的敏感信息脱敏
- 03通过 get_metadata 与 run_tool 统一访问被代理的服务
- 04安全扫描器检查服务声誉与工具描述
- 05基于 xetrack 的工具调用追踪
适用场景
- 01为 Cursor 或 Claude 集中管理多个 MCP 服务并施加安全策略
- 02防止 Agent 读取文件时泄露令牌等凭据
- 03审计与分析 MCP 工具调用记录
MCP 相关
作为 MCP 服务运行,对外暴露 get_metadata 与 run_tool 两个工具,并代理其他 MCP 服务的能力。它读取客户端配置文件中的服务列表并负责启动和管理这些服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
概述

MCP Gateway 是一种先进的 Model Context Protocol(MCP)服务中间方案,可集中管理并增强你的 AI 基础设施。
MCP Gateway 充当大模型与其他 MCP 服务之间的中间层。它可以:
- 📄 从根目录中的
mcp.json文件读取服务配置。 - ⚙️ 管理已配置 MCP 服务的生命周期。
- 🛡️ 拦截请求和响应,以清理敏感信息。
- 🔗 提供统一接口,用于发现和交互所有经过代理的 MCP 服务。
- 🔒 安全扫描器 - 在加载 MCP 服务之前分析其信誉和安全风险。
安装
Python(推荐)
安装 mcp-gateway 软件包:
pip install mcp-gateway
--mcp-json-path- 必须指向你的 mcp.json 或 claude_desktop_config.json
--plugin或-p- 指定要启用的插件(可多次使用)
用法
此示例为 filesystem MCP 启用基本的令牌屏蔽护栏和 xetrack 跟踪插件:
mcp-gateway --mcp-json-path ~/.cursor/mcp.json -p basic -p xetrack
你可以将 MCP 服务配置添加到 "servers" 键下,从而在 Gateway 下添加更多 MCP 服务。
Cursor 示例:
{
"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",
"."
]
}
}
}
}
}
Claude 示例:
获取 <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",
"."
]
}
}
}
}
}
Docker
克隆此仓库后构建镜像
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,以及如何为 filesystem MCP 挂载存储。
Docker 镜像可以构建为包含某些插件所需的可选依赖项(例如 presidio)。
在 docker build 命令中使用 INSTALL_EXTRAS 构建参数。提供以逗号分隔的所需额外依赖项字符串:"presidio,xetrack"
快速入门
屏蔽敏感信息
MCP Gateway 会自动屏蔽响应中的敏感令牌,防止凭据泄露,同时保留所需功能。
-
创建一个包含敏感信息的文件:
echo 'HF_TOKEN = "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"' > tokens.txt -
当 Agent 通过 MCP Gateway 请求读取此文件时:
- 建议使用 sonnet 3.7 进行测试
Use your mcp-gateway tools to read the ${pwd}/tokens.txt and return the HF_TOKEN
输出:

用法
在此仓库根目录中使用 python_env 配置启动 MCP Gateway 服务:
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 服务的信息,帮助大模型选择合适的工具和资源run_tool- 清理请求和响应后,执行任意代理 MCP 服务提供的功能
插件
参与贡献
有关插件系统的工作方式、如何创建自己的插件或如何参与贡献的更多详情,请参阅插件系统文档。
防护措施
MCP Gateway 支持各种插件,可增强安全性和功能。以下是内置防护插件的摘要:
| 名称 | PII 脱敏 | 令牌/密钥脱敏 | 自定义策略 | 提示词注入 | 有害内容 |
|---|---|---|---|---|---|
basic | ❌ | ✅ | ❌ | ❌ | ❌ |
presidio | ✅ | ❌ | ❌ | ❌ | ❌ |
lasso | ✅ | ✅ | ✅ | ✅ | ✅ |
注意: 要使用 presidio 插件,需要单独安装:pip install mcp-gateway[presidio]。
基础
mcp-gateway -p basic
基础密钥脱敏
- Azure 客户端密钥
- GitHub 令牌
- GitHub OAuth
- GCP API 密钥
- AWS 访问令牌
- JWT 令牌
- GitLab 会话 Cookie
- Hugging Face 访问令牌
- Microsoft Teams Webhook
- Slack 应用令牌
Presidio
mcp-gateway -p presidio
Presidio 是一个用于识别和匿名化的程序包
- 信用卡
- IP
- 电子邮件
- 电话号码
- SSN
- 等等
Lasso
mcp-gateway -p lasso
先决条件
- 获取 Lasso API 密钥:在 Lasso Security 注册。
要使用 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 交互。
🛡️ 通过内置保护实时缓解提示词注入和敏感数据泄漏等生成式 AI 特有威胁,并从部署之初就优先保障安全。
✨ 使用灵活的自然语言,制定符合业务独特需求的安全策略。
⚡ 适用于任何部署方式,安装快速简便。借助直观易用的仪表板,只需几分钟即可监控 MCP 的数据流入和流出。
Lasso 防护措施会先通过 Lasso 的 API 检查内容是否存在安全违规,然后再处理请求和响应。
访问我们的网站了解更多 👉 Lasso Security。
跟踪
Xetrack
xetrack 是一个轻量级程序包,用于跟踪机器学习实验和基准测试,并监控结构化数据。
我们可以使用它,通过日志(loguru)或 duckdb 和 sqlite 调试和监控工具调用。 。
mcp-gateway -p xetrack
先决条件
pip install xetrack
参数
XETRACK_DB_PATH- sqlite 数据库的位置。- 所有日志都会记录在 events 表中。
- 如果 MCP 响应返回了复杂对象,请阅读 xetrack 的 assets,了解如何检索。
XETRACK_LOGS_PATH- 日志位置FLATTEN_ARGUMENTS- 是否扁平化参数,默认为trueFLATTEN_RESPONSE- 是否扁平化响应,默认为true- 建议将日志位置添加到 gitignore
- 建议使用 DVC 管理数据库文件
快速入门
{
"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",
"."
]
}
}
}
}
}
假设你使用 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 和界面
$ 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
功能:
- 🔍 信誉分析 - 使用 marketplace(Smithery、NPM)和 GitHub 数据评估服务信誉
- 🛡️ 工具描述扫描 - 检测隐藏指令、敏感文件模式和恶意操作
- ⚡ 自动拦截 - 根据信誉评分(阈值:30)和安全分析拦截存在风险的 MCP
- 📝 配置更新 - 根据扫描结果自动更新 MCP 配置文件
快速入门
初始配置:
{
"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"。
工作原理
你的 Agent 直接与我们的 MCP Gateway 交互,它充当中央路由和管理系统。每个底层 MCP 都会单独封装和管理。
主要功能
无关性防护
- 对请求和响应应用可配置的安全过滤器。
- 在信息到达你的 Agent 之前,防止敏感数据泄露。
- 无论已连接 MCP 的原生功能如何,都能一致地运行。
统一可见性
- 在单一界面中提供所有 MCP 的综合仪表板。
- 提供包含 MCP 风险评分的智能风险评估。
- 提供实时状态监控和性能指标。
安全扫描器
- 在加载 MCP 服务之前,分析其信誉和工具描述,检查安全风险。
高级跟踪
- 为每个防护机制保留所有请求和响应的详细日志。
- 为需要付费令牌的 MCP 提供成本评估工具。
- 提供使用情况分析和模式识别,助力优化。
- 在将请求转发到其他 MCP 之前,对敏感信息进行清理。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。