将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);
相关推荐
大连好光景43 分钟前
如何将已有应用转成MCP服务?
mcp
liangshanbo12154 小时前
SSE 自定义事件解析与断线续传:高级面试题
sse·eventsource
xiwc6 小时前
我用 MCP + 多 Agent 搭了一条自动化内容发布流水线
人工智能·mcp
蓝胖的四次元口袋6 小时前
MCP知识梳理(1)
mcp
EatFan7 小时前
「失控AI智能体」首遭FTC立案:英伟达Agent安全体系落地,AI智能体合规设计如何前置
大数据·人工智能·安全·ai智能体·mcp·agent安全·ftc
EatFan8 小时前
MCP 从概念到落地:Java(Spring AI Alibaba)与 .NET 双栈接入实操对比
java·人工智能·后端·spring·.net·java后端·mcp
EatFan1 天前
从“框架混战“到“运行时收敛“:2026 年 AI Agent 开发框架的三条路线之争
java·数据库·人工智能·多智能体·ai agent·mcp·agent 框架
诺伦1 天前
AI Agent编排实战:用四层架构搭建增长运营垂类Agent系统 | RiseClaw玄策
人工智能·ai agent·mcp·agent编排·增长运营
大连好光景1 天前
MCP协议与Function Calling的区别?
functioncalling·mcp
Patrick在香港1 天前
MCP 的 initialize 握手真的没了?67 行标准库实测 2026-07-28 规范
python·agent·claude·mcp·json-rpc