将Mcp stdio托管为SE / StreamableHTTP实现方案

全部实现子进程 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 都不带)

  1. 鉴权 :增加 Bearer Token / ApiKey HTTP header 校验;绝对不要裸暴露公网
  2. Nginx 反向代理配置

nginx

复制代码
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off; #关闭缓冲,SSE/stream http核心
chunked_transfer_encoding on;
  1. 会话与进程策略:
    • supergateway 默认每客户端连接 spawn 一个子进程;高并发要做进程池、空闲超时 kill 子进程,防止进程爆炸。
  2. 日志:捕获子进程 stderr,采集日志;增加 prometheus 指标。

两种部署模式

  1. 代理网关模式(上面所有开源项目) :不改原有 MCP 服务,网关 spawn 子进程运行 stdio 服务,对外 SSE/StreamableHTTP;推荐用于存量 MCP 服务托管
  2. 源码直改 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);
相关推荐
IDIOT___IDIOT2 小时前
JSON-RPC 2.0 与 MCP 协议:从消息格式到进程通信 大模型MCP
rpc·大模型·json·agent·mcp
VIP_CQCRE3 小时前
用 Ace Data Cloud 搭建自动化内容营销系统:让 AI 每天搜索热点、写文章、配图并发布
ai·自动化·内容营销·mcp·acedatacloud
跨境Jacky4 小时前
亚马逊MCP选品工具和选品CLI怎么选? 成本实测拆解
跨境电商·mcp·sorftime
snowfoootball5 小时前
Claude Code自用skill/mcp分享——我的AI开发工作流
skill·mcp
李昊哲小课17 小时前
fastapi sse websocket 奶茶店实时订单看板
人工智能·python·websocket·网络协议·fastapi·sse
前端开发江鸟1 天前
从 MCP 原理到真实 Server:我把 Tool、Resource、Prompt 和错误边界跑通了
mcp
李昊哲小课1 天前
fastapi sse websocket 智能家居实时控制台
python·websocket·智能家居·fastapi·sse
zhoupenghui1682 天前
【AI大模型应用开发】【项目实战】35.基于A2A协议的智能助手(多智能体)(三)项目实现之天气MCP服务器&票务员MCP服务器&订票MCP服务器
agent·多智能体·mcp·a2a·天气mcp服务器·票务员mcp服务器·订票mcp服务器