MCP网关服务

MCP Gateway是一个高级中介解决方案,用于集中和增强AI基础设施,提供统一接口、安全扫描和敏感信息屏蔽功能。

  • by lasso-security
  • Python
  • 本地部署
  • 397 星标
  • 更新于
在 GitHub 查看 lasso-security/mcp-gateway

使用说明

MCP网关

概述

MCP网关是用于模型上下文协议(MCP)服务器的高级中介解决方案,可集中和增强您的AI基础设施。

MCP网关充当LLM和其他MCP服务器之间的中介。它

  1. 📄 从读取服务器配置 mcp.json 位于根目录中的文件。
  2. ⚙️ 管理配置的MCP服务器的生命周期。
  3. 🛡️ 拦截请求和响应以净化敏感信息。
  4. 🔗 提供一个统一的接口,用于发现所有代理的MCP并与之交互。
  5. 🔒 安全扫描仪 -在加载MCP服务器之前,分析服务器信誉和安全风险。

安装

Python(推荐)

安装mcp网关包:

pip install mcp-gateway

--mcp-json-path -必须导致你 mcp.json 或 claude_desktop_config json
--plugin 或 -p -指定要启用的插件(可以多次使用)

用法

此示例启用了用于文件系统MCP的令牌掩码和xetrack跟踪插件的基本护栏:

mcp-gateway --mcp-json-path ~/.cursor/mcp.json -p basic -p xetrack

通过将MCP服务器配置置于“服务器”键下,您可以添加更多将在网关下的MCP。

Cursor example:
{
  "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 example:

获取 <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,以及如何为文件系统MCP挂载存储。 Docker镜像可以用某些插件所需的可选依赖关系构建(例如。, presidio).
使用 INSTALL_EXTRAS 在 docker build 命令。提供所需额外内容的逗号分隔字符串: "presidio,xetrack"

快速入门

隐藏敏感信息

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

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

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

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

输出:

用法

使用此存储库根目录上的python_env配置启动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访问令牌
  • 微软团队webhook
  • 松弛应用令牌

要塞

mcp-gateway -p presidio

要塞 是身份识别和匿名化包

  • 信用卡
  • IP
  • 电子邮件
  • 电话
  • 社会安全号码
  • 等

套索

mcp-gateway -p lasso

先决条件

要使用Lasso Security的高级AI安全护栏,请更新您的 mcp.json 配置如下:

  1. 添加 LASSO_API_KEY=<YOUR-API-KEY> 到您的环境变量或“env”部分。
  2. 在密钥下插入其他MCP服务器配置 servers

例子:

{
  "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检查内容是否存在安全违规行为。

在我们的网站上阅读更多👉 拉索安全.

追踪

Xetrack

xetrack 是一个轻量级的软件包,用于跟踪ml实验、基准测试和监控结构化数据。

我们可以用它来调试和监控 工具调用 有日志(卢古鲁)或 duckdb 和 SQLite. .

mcp-gateway -p xetrack

先决条件

pip install xetrack

参数

  • XETRACK_DB_PATH -sqlite数据库位置。
    • 所有日志都注册在 事件 桌子。
    • 如果MCPs响应返回了花哨的对象,请阅读xetrack 资产 取回它。
  • XETRACK_LOGS_PATH -日志位置
  • FLATTEN_ARGUMENTS -平铺参数,默认 true
  • FLATTEN_RESPONSE -使响应变平,默认 true
  • 建议忽略日志位置
  • 建议使用 数据版本控制 管理数据库文件

快速入门

{
    "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之前,对敏感信息进行消毒。

许可证

麻省理工学院