MCP网关容器

一个用于Model Context Protocol (MCP)的容器化网关,将多个MCP服务器聚合到一个统一的SSE端点,便于向LLMs和MCP客户端暴露各种工具。

  • by mamorett
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mamorett/mcp-gateway-docker

使用说明

MCP网关Docker

一个强大的、容器化的网关 模型上下文协议(MCP)该项目将多个MCP服务器(基于stdio)复用到一个统一的SSE(服务器发送事件)端点中,使各种工具易于向LLM和MCP客户端公开。

特性

  • 多服务器聚合:连接单个配置文件中定义的多个MCP服务器。
  • 自动重新连接:如果子进程崩溃或退出,则自动监视并重新启动它们。
  • 苏格兰和南方能源公司运输:通过HTTP SSE公开统一的服务器接口,与现代MCP客户端兼容。
  • 容器化:包括一个包含Python 3.12和Node.js 20的Dockerfile,支持Python和基于Node的MCP服务器。
  • 集成工具:自动构建和包含 快照 在 /usr/local/bin 用于与相机相关的任务。
  • 健康监测:简单 /health 用于编排的端点(例如Kubernetes活性探测)。

建筑

网关充当多个“子”服务器的MCP客户端(通过标准输入/输出),同时充当外部客户端的MCP服务器(通过SSE)。

[ Client ] <--- SSE / HTTP ---> [ MCP Gateway ] <--- stdio ---> [ MCP Server A ]
                                                <--- stdio ---> [ MCP Server B ]

配置

网关是通过JSON文件配置的。默认情况下,它会在以下位置查找配置 /etc/mcp/config.json,但这可以用以下命令覆盖 MCP_CONFIG_PATH 环境变量。

示例 config.json

{
  "mcpServers": {
    "everything": {
      "command": "npx",
      "args": [
        "-y",
        "--quiet",
        "@modelcontextprotocol/server-everything"
      ]
    },
    "custom-python-server": {
      "command": "python3",
      "args": [
        "/app/servers/my_server.py"
      ],
      "env": {
        "MY_API_KEY": "secret-value"
      }
    }
  }
}

快速开始

1.塑造形象

docker build -t mcp-gateway .

2.运行容器

安装配置文件和任何必要的服务器脚本:

docker run -d \
  -p 8080:8080 \
  -v $(pwd)/config.json:/etc/mcp/config.json \
  -v $(pwd)/servers:/app/servers \
  --name mcp-gateway \
  mcp-gateway

API终点

  • GET /sse:苏格兰和南方能源公司的切入点。在此处连接您的MCP客户端。
  • POST /messages:用于向服务器发送消息的端点(SSE传输的一部分)。
  • GET /health:退货 {"status": "ok"}.

发展

网关由以下组件构建:

  • Python 3.12
  • MCP Python SDK
  • 斯塔雷特 (ASGI框架)
  • Uvicorn (ASGI服务器)

本地设置

  1. 使用安装依赖项 uv 或 pip:
    pip install mcp starlette uvicorn
    
  2. 运行网关:
    export MCP_CONFIG_PATH=./mcp-test/config/config.json
    python gateway.py
    

许可证

麻省理工学院