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"
- tavily 后端
-
更具体的 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、工具调用、请求分发、会话管理、版本协商、以及多传输协定的实现
如需快速体验,请使用仓库中的示例配置、构建并运行网关,然后将你的后端工具通过配置接入网关,以实现统一的工具发现与调用。