全部实现子进程 spawn,桥接原有 stdio MCP 服务,不用改原有 MCP 服务代码,支持 SSE、新版 StreamableHTTP(MCP 官方单端点 HTTP‑stream),可以直接拿来做托管部署GitHub。
1️⃣ supergateway(最推荐,社区活跃度最高,Node.js)
GitHub:https://github.com/supercorp-ai/supergateway
- ✅支持:
stdio → SSE/stdio → StreamableHTTP/stdio → WebSocket,双向转换 - ✅自动管理子进程生命周期,消息帧处理,Docker 支持,直接 npx 一键运行
- ✅支持多客户端连接,会话管理,符合 MCP 最新规范
- 一行命令把你的 stdio MCP 暴露成StreamableHTTP(新版官方推荐)
bash
# 将本地stdio命令 mcp‑server 转为 StreamableHTTP,监听8000端口
npx -y supergateway \
--stdio "python your_mcp_server.py" \
--outputTransport streamableHttp \
--port 8000
访问端点:POST http://127.0.0.1:8000/mcp
输出 SSE 模式:
bash
npx -y supergateway --stdio "python your_mcp_server.py" --outputTransport sse --port 8000
SSE 端点:GET /sse,消息 POST /messages
适合:快速原型、容器部署、企业托管测试;生产注意增加鉴权(API‑Key 中间件自己叠加)。
2️⃣ mcp‑proxy(Python,成熟桥接工具)
GitHub:GitHub - sparfenyuk/mcp-proxy: A bridge between Streamable HTTP and stdio MCP transports · GitHub
- ✅Python 实现;支持双向:stdio ↔ SSE / StreamableHTTP
- ✅支持配置文件、docker‑compose 部署、会话管理
- 安装
bash
pip install mcp-proxy
注意:这个项目有两个同名仓库,认准
knaou/mcp‑proxy;另一款是 SSE→stdio(客户端侧),不要混淆。
3️⃣ mcpgate(Rust,单二进制网关,企业级多后端)
GitHub:https://github.com/mokeyish/mcpgate
- ✅Rust编译单二进制,无运行时依赖;支持配置文件定义多个 stdio 后端 MCP 服务
- ✅对外统一暴露 SSE / StreamableHTTP,多客户端接入
- ✅支持进程管理、健康检查、docker,适合 K8s 部署
- 通过
config.json配置多个 stdio MCP 服务,网关对外统一提供网络 transport。
4️⃣ mcp‑stdio‑bridge(Python,生产向网关)
GitHub:https://github.com/hackagadget/mcp-stdio-bridge
- ✅YAML 配置、配置热重载、完整测试用例,健壮的子进程管理、stderr 日志捕获
- ✅仅做桥接:任意 stdio 可执行 MCP → SSE;支持 docker 镜像 amd64/arm64。
5️⃣ IBM mcpgateway.translate(IBM 官方开源工具)
文档:https://ibm.github.io/mcp-context-forge/using/mcpgateway-translate/
bash
python3 -m mcpgateway.translate \
--stdio "uvx mcp‑server‑git" \
--expose‑sse \
--port 9000
IBM 出品,协议兼容性很好,适合企业调研。
项目对比选型矩阵
表格
| 项目 | 语言 | stdio→SSE | stdio→StreamableHTTP | 打包方式 | 适合场景 |
|---|---|---|---|---|---|
| supergateway | TS/Node.js | ✅ | ✅ | npx / docker | 快速上线,开发测试,容器托管【首选】 |
| mcp‑proxy | Python | ✅ | ✅ | pip / docker | Python 栈技术栈团队 |
| mcpgate | Go | ✅ | ✅ | 单二进制 /docker | 生产 K8s,多 MCP 后端,无依赖 |
| mcp‑stdio‑bridge | Python | ✅ | 部分支持 | docker | 追求稳定性,配置热重载 |
| IBM mcpgateway.translate | Python | ✅ | ✅ | python 模块 | 企业调研,IBM 生态 |
⚠️生产托管必须补齐(开源 demo 都不带)
- 鉴权 :增加 Bearer Token / ApiKey HTTP header 校验;绝对不要裸暴露公网。
- Nginx 反向代理配置
nginx
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off; #关闭缓冲,SSE/stream http核心
chunked_transfer_encoding on;
- 会话与进程策略:
- supergateway 默认每客户端连接 spawn 一个子进程;高并发要做进程池、空闲超时 kill 子进程,防止进程爆炸。
- 日志:捕获子进程 stderr,采集日志;增加 prometheus 指标。
两种部署模式
- 代理网关模式(上面所有开源项目) :不改原有 MCP 服务,网关 spawn 子进程运行 stdio 服务,对外 SSE/StreamableHTTP;推荐用于存量 MCP 服务托管。
- 源码直改 transport:直接修改 MCP 服务代码,去掉 StdioTransport,使用 SDK 内置 SSEServerTransport / StreamableHttpServerTransport,不需要子进程桥接,适合你掌握源码的场景。
客户端连接示例(StreamableHTTP)
使用 MCP 官方 SDK:
typescript
import { StreamableHttpClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHttpClientTransport(new URL("http://127.0.0.1:8000/mcp"));
await client.connect(transport);