返回市场
MCP网关

MCP网关

作者:lasso-security312 星标更新:2025-07-15

项目介绍

【技术文档摘要】

<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 网关

</div>

概述

MCP 网关是一个先进的中间件解决方案,用于集中和增强您的 AI 基础设施中的 Model Context Protocol (MCP) 服务器。

MCP 网关作为 LLM 和其他 MCP 服务器之间的中介。它:

  1. 📄 从根目录中的 mcp.json 文件读取服务器配置。
  2. ⚙️ 管理已配置的 MCP 服务器的生命周期。
  3. 🛡️ 截获请求和响应以清除敏感信息。
  4. 🔗 提供统一的界面来发现和与所有代理的 MCP 进行交互。
  5. 🔒 安全扫描器 - 在加载 MCP 服务器之前分析服务器声誉和安全风险。

安装

Python(推荐)

安装 mcp-gateway 包:

pip install mcp-gateway

--mcp-json-path - 必须指向您的 mcp.jsonclaude_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"

</details>

快速开始

屏蔽敏感信息

MCP 网关会自动屏蔽响应中的敏感令牌,防止暴露凭证的同时仍提供所需的功能。

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

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

    • 推荐使用 sonnet 3.7 进行测试
    使用您的 mcp-gateway 工具读取 ${pwd}/tokens.txt 并返回 HF_TOKEN
    

输出:

Hugging Face 令牌屏蔽示例

使用

在该仓库根目录启动 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

屏蔽基本秘密

  • Azure 客户端密钥
  • GitHub 令牌
  • GitHub OAuth
  • GCP API 密钥
  • AWS 访问令牌
  • JWT 令牌
  • GitLab 会话 cookie
  • HuggingFace 访问令牌
  • Microsoft Teams Webhook
  • Slack 应用令牌

Presidio

mcp-gateway -p presidio

Presidio 是一个识别和匿名化包

  • 信用卡
  • IP 地址
  • 电子邮件
  • 手机号码
  • 社会保障号码
  • 等等

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 交互进行全面监控。

🛡️ 实时缓解特定于 GenAI 的威胁,如提示注入和敏感数据泄露,内置保护优先考虑部署的安全性。

✨ 使用灵活的自然语言定制符合您业务独特需求的安全策略。

⚡ 快速简便地安装适用于任何部署风格。几分钟内通过直观易用的仪表板监控 MCP 的数据流。

Lasso 防护栏通过 Lasso 的 API 检查内容是否存在安全违规行为,然后再处理请求和响应。

了解更多请访问我们的网站 👉 Lasso Security

追踪

Xetrack

xetrack 是一个轻量级包,用于跟踪机器学习实验、基准测试和监控结构化数据。

我们可以使用它来调试和监控 工具调用,使用日志(loguru)或 duckdbsqlite

mcp-gateway -p xetrack

先决条件

pip install xetrack

参数

  • XETRACK_DB_PATH - SQLite 数据库的位置。
    • 所有日志都注册在 events 表中。
    • 如果从 MCP 响应中返回复杂的对象,请阅读 xetrack 的 资产 来检索它们。
  • 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",
                        "."
                    ]
                }
            }
        }
    }
}

假设您使用文件系统 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

特性:

  • 🔍 声誉分析 - 使用市场(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"

工作原理

您的代理直接与我们的 MCP 网关交互,网关充当中央路由器和管理系统。每个底层 MCP 都被单独封装和管理。

关键功能

无偏见防护栏

  • 对请求和响应应用可配置的安全过滤器。
  • 在信息到达您的代理之前防止敏感数据暴露。
  • 无论连接的 MCP 的原生能力如何,都能一致工作。

统一可见性

  • 提供全面的仪表板,以便在一个界面上查看所有 MCP。
  • 包括智能风险评估和 MCP 风险评分。
  • 提供实时状态监控和性能指标。

安全扫描器

  • 在加载前分析 MCP 服务器的声誉和工具描述以检测安全风险。

高级追踪

  • 维护所有请求和响应的详细日志,针对每个防护栏。
  • 提供成本评估工具,用于需要付费令牌的 MCP。
  • 提供使用分析和模式识别以优化。
  • 在转发请求给其他 MCP 之前清除敏感信息。

许可证