MCP Gateway

使用说明(Markdown 格式)

MCP Gateway

简述

  • 这是一个用于 MCP(Model Context Protocol)场景的后端网关。它充当 LLM 客户端与众多后端服务之间的中介,能够按需发现、路由并执行工具、管理资源、渲染提示模板,同时提供多传输协议(stdio、HTTP SSE、Streamable HTTP)、健康与熔断等生产就绪特性。

主要功能点

  • Meta-MCP 模式:内置四个元工具,用于跨后端发现与调用工具,显著减少上下文工具定义的代价。
    • gateway_list_servers:列出可用后端
    • gateway_list_tools:列出某后端的工具
    • gateway_search_tools:跨后端按关键词搜索工具
    • gateway_invoke:在任意后端调用任意工具
  • 多传输协议支持:stdio 子进程、HTTP SSE、Streamable HTTP,便于对接各种 MCP 服务
  • 安全与访问控制:Bearer 令牌、API Key 多客户端控制、节流与速率限制、可配置的公开路径
  • Capabilities 热加载:直接从 YAML/OpenAPI 转能力定义,支持热更新,无需重启 AI 会话
  • 容错与鲁棒性:熔断、重试、限流、健康检查、健康指标与指标收集
  • 自动发现与探索:通过环境、配置文件、正在运行的进程等多渠道发现 MCP 服务器,并可将发现结果写回配置
  • 实时通知:SSE 模式下的服务器到客户端通知推送,以及基于后端的事件聚合

安装与运行

  • 直接编译安装(Rust):在仓库根目录执行 cargo build --release,然后执行生成的二进制文件
  • 通过 Homebrew 安装(适用于 macOS/Linux):
    • tap 号: MikkoParkkola/tap
    • 安装 mcp-gateway
  • Docker 运行示例:
    • 将本地服务器配置文件映射到网关容器内,然后启动网关,示例配置文件路径为 /config.yaml
  • 配置示例与说明:网关使用 YAML 配置,包含服务器端口、后端定义、Meta-MCP、Failsafe、后端清单等,仓库中 README 已提供详细字段与默认值

服务器配置(MCP 客户端需要的概念性信息)

  • 为了帮助理解,以下 JSON 表达的是用于 MCP 客户端了解如何启动后端(server/command 与参数)以接入网关的示意信息;具体运行时请以网关的 YAML/JSON 配置为准。

  • 后端示例(以仓库中的配置为准):

    • tavily 后端
      • name: tavily
      • command: npx -y @anthropic/mcp-server-tavily
      • env: TAVILY_API_KEY: "${TAVILY_API_KEY}"
      • 描述: "Web search"
    • context7 后端
      • http_url: "http://localhost:8080/mcp"
      • 描述: "Documentation lookup"
  • 更具体的 JSON 配置示例(仅作理解用途): { "servers": [ { "name": "tavily", "type": "stdio", "command": "npx -y @anthropic/mcp-server-tavily", "env": { "TAVILY_API_KEY": "${TAVILY_API_KEY}" }, "description": "Web search" }, { "name": "context7", "type": "http", "http_url": "http://localhost:8080/mcp", "description": "Documentation lookup" } ], "meta_mcp": { "enabled": true }, "server": { "host": "127.0.0.1", "port": 39400 } } 注:以上 JSON 仅用于说明理清 Config 思路,实际应用请参考仓库的 YAML 配置格式和示例。

基本使用方法

  • 启动网关
    • 服务器配置文件(servers.yaml)示例请参考 README 提供的字段,将 Tavily、Context7 等后端以“backends”形式声明,包含命令、环境变量和 HTTP URL 配置等。
    • 启动命令示例:mcp-gateway --config servers.yaml
    • 端口默认 39400,启动后网关会对外提供 /health、/mcp、/mcp/{backend} 等端点。
  • 连接 MCP 客户端
    • 客户端需要的最小配置(示意,具体请按客户端要求):
    • 服务器端点:http://localhost:39400/mcp
    • 客户端配置示例(JSON,非必需,便于理解): { "mcpServers": { "gateway": { "type": "http", "url": "http://localhost:39400/mcp" } } }
  • 动态能力与工具
    • 将 OpenAPI/OpenAPI YAML 转换为能力(capability),部署到 capabilities 目录后,网关会热加载,无需重启即可使用新能力
  • 安全与运维
    • 可启用 Bearer Token、Api Keys、速率限制、熔断与健康检查,健康端点 /health 提供后端状态摘要

使用中的要点

  • Meta-MCP 四元工具用于跨后端高效发现、列表与调用,减少需要加载在上下文中的工具数量,提升对话上下文质量
  • Capabilities 的热加载设计允许在不中断现有会话的情况下扩展能力
  • 支持多种传输协议,确保适配不同 MCP 服务端/后端实现

更多信息

  • 官方 README 提供了详细的快速开始、API 参考、故障排除、Metrics、构建与贡献等内容
  • 该网关实现了 MCP 协议的核心能力:MCP 2.0/2025 版本的请求/响应处理、JSON-RPC、工具调用、请求分发、会话管理、版本协商、以及多传输协定的实现

如需快速体验,请使用仓库中的示例配置、构建并运行网关,然后将你的后端工具通过配置接入网关,以实现统一的工具发现与调用。

服务器信息