mcpField
M
MCP Gateway

MCP Gateway

本地服务
lasso.security开发工具39740 周前更新

关于 MCP Gateway

MCP Gateway 是一个基于插件的 MCP 服务网关,用于编排其他 MCP 服务,并支持开发者在其上构建企业级 Agent。它在 LLM 与被代理的 MCP 服务之间充当中间层,负责脱敏与安全扫描。

主要功能

  1. 01读取 mcp.json 配置并管理 MCP 服务生命周期
  2. 02请求与响应的敏感信息脱敏
  3. 03通过 get_metadata 与 run_tool 统一访问被代理的服务
  4. 04安全扫描器检查服务声誉与工具描述
  5. 05基于 xetrack 的工具调用追踪

适用场景

  1. 01为 Cursor 或 Claude 集中管理多个 MCP 服务并施加安全策略
  2. 02防止 Agent 读取文件时泄露令牌等凭据
  3. 03审计与分析 MCP 工具调用记录

MCP 相关

作为 MCP 服务运行,对外暴露 get_metadata 与 run_tool 两个工具,并代理其他 MCP 服务的能力。它读取客户端配置文件中的服务列表并负责启动和管理这些服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

PyPI 版本 Python 版本 许可证

MCP Gateway

概述

README 配图

MCP Gateway 是一种先进的 Model Context Protocol(MCP)服务中间方案,可集中管理并增强你的 AI 基础设施。

MCP Gateway 充当大模型与其他 MCP 服务之间的中间层。它可以:

  1. 📄 从根目录中的 mcp.json 文件读取服务配置。
  2. ⚙️ 管理已配置 MCP 服务的生命周期。
  3. 🛡️ 拦截请求和响应,以清理敏感信息。
  4. 🔗 提供统一接口,用于发现和交互所有经过代理的 MCP 服务。
  5. 🔒 安全扫描器 - 在加载 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 会自动屏蔽响应中的敏感令牌,防止凭据泄露,同时保留所需功能。

  1. 创建一个包含敏感信息的文件:

    echo 'HF_TOKEN = "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"' > tokens.txt
    
  2. 当 Agent 通过 MCP Gateway 请求读取此文件时:

    • 建议使用 sonnet 3.7 进行测试
    Use your mcp-gateway tools to read the ${pwd}/tokens.txt and return the HF_TOKEN
    

输出:

Hugging Face 令牌屏蔽示例

用法

在此仓库根目录中使用 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 Security 的高级 AI 安全防护措施,请按如下方式更新 mcp.json 配置:

  1. 将 LASSO_API_KEY=<YOUR-API-KEY> 添加到环境变量中,或添加到“env”部分。
  2. 在 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 - 是否扁平化参数,默认为 true
  • FLATTEN_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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。