MCP网关

MCP-Gateway是一个轻量级网关,用于集中访问多个MCP服务器,提供统一的入口点和治理功能。

  • by jasonnn-bc
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 jasonnn-bc/mcp-gateway

使用说明

MCP网关

一个轻量级网关,集中访问多个MCP服务器。

📖 概述

MCP网关是 概念验证 旨在作为需要与多个MCP服务器交互的应用程序的统一入口点。
所有流量都通过此网关,而不是将每个应用程序直接绑定到特定的MCP服务器。
架构:

┌─────────────────────────────────────┐     ┌──────────────────────────────────────────────────────┐
│          BEFORE: Chaos              │     │    AFTER: MCP Gateway & Registry                     │
├─────────────────────────────────────┤     ├──────────────────────────────────────────────────────┤
│                                     │     │                                                      │
│  Developer 1 ──┬──► MCP Server A    │     │  Developer 1 ──┐                  ┌─ MCP Server A    │
│                ├──► MCP Server B    │     │                │                  ├─ MCP Server B    │
│                └──► MCP Server C    │     │  Developer 2 ──┼──► MCP Gateway   │                  │
│                                     │     │                │    & Registry ───┼─ MCP Server C    │
│  Developer 2 ──┬──► MCP Server A    │ ──► │  AI Agent 1 ───┘         │        │                  │
│                ├──► MCP Server D    │     │                          │        ├─ AI Agent 1      │
│                └──► MCP Server E    │     │  AI Agent 2 ──────────────┤        ├─ AI Agent 2     │
│                                     │     │                          │        │                  │
│  AI Agent 1 ───┬──► MCP Server B    │     │  AI Agent 3 ──────────────┘        └─ AI Agent 3     │
│                ├──► MCP Server C    │     │                                                      │
│                └──► MCP Server F    │     │              Single Connection Point                 │
│                                     │     │                                                      │
│  ❌ Multiple connections per user   │     │         ✅ One gateway for all                       │
│  ❌ No centralized control          │     │         ✅ Unified server & agent access             │
│  ❌ Credential sprawl               │     │         ✅ Unified governance & audit trails         │
└─────────────────────────────────────┘     └──────────────────────────────────────────────────────┘

它被集装箱化 码头工人,使部署简单便携。
可以轻松添加和管理新的MCP服务器,为测试和开发环境提供灵活性和可扩展性。

🐳 Docker安装

要使用Docker运行项目,请执行以下步骤:

1. 构建基础图像

首先,构建一个包含所有必需库的基础映像。此映像安装中列出的依赖项 requirements.txt.

docker build -t fastapi-mcp .

2. 启动应用程序

在运行容器之前,将您的mcp服务器添加到 mcp_servers.yml 文件:

servers:
  - id: mcp-overpass
    url: http://mcp-overpass:5000/mcp
    description: Serveur MCP spécialisé dans les requêtes overpass osm3s
    protocol: sse

⚠️ 重要提示:在URL中,IP地址或域名必须与容器本身相对应。因此,所有MCP服务器和MCP网关必须在同一个Docker网络中才能正常通信。

然后,使用Docker Compose构建并运行应用程序容器。此步骤使用一个单独的Dockerfile来复制 app/ 目录进入 /app 容器内部:

docker compose up --build

⚠️ 重要 :所有MCP服务器必须与MCP网关位于同一Docker网络中。在我们的例子中,网络是网络mcp:

    networks:
      - network-mcp
    
networks:
  network-mcp:
    external: true

⚙️ 需求

确保已安装以下内容:

  • 🐳 Docker:测试版本28.5.1

  • 📦 Docker Compose:使用v2.40.2版本进行测试

🧪 测试MCP网关

容器运行后,您可以通过以下方式测试网关:

Swagger 用户界面

访问 Swagger接口 要访问swagger界面:

测试 api/v1/list 检查巡回服务器的端点:

结果 :mcp立交桥可用,但没有假mcp。检查状态键。

🔒 安全限制

通过网关使用MCP服务器时,请注意以下限制:

  • 🚫 无身份验证:目前,任何应用程序都可以在不进行身份验证的情况下向任何MCP服务器发送请求。

  • ⚠️ LLM输出控制:如果LLM调用敏感工具,攻击者可能会触发关键操作。输出必须经过验证。

  • 🎛️ 缺少细粒度权限:应只允许应用程序查询特定的MCP服务器。网关必须强制执行这些限制。

  • 🔐 无加密:没有TLS/HTTPS,通信可能会被拦截或修改。

  • 📜 无日志记录/监控:如果没有适当的审计日志,恶意使用可能不会被发现。

  • 📉 无速率限制:如果不限制请求,服务器容易受到拒绝服务攻击。

  • 🔑 无秘密管理:API密钥或令牌必须安全存储;否则,它们可能会被泄露。

  • 🕒 无补丁/更新机制:如果不进行维护,过时的MCP服务器可能包含已知漏洞。