将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);
相关推荐
Lambert2811 天前
MCP 史上最大升级:握手没了、会话没了,Java 生态的六个坑
ai编程·mcp
会周易的程序员1 天前
软件接入大模型实现 Agent —— 从原理到 C++ 落地完全指南
c++·人工智能·物联网·架构·agent·工业协议·mcp
梦想blog2 天前
Claude Code + Chrome MCP:让浏览器自动化测试更简单
前端·chrome·自动化·mcp
xrlfreedom2 天前
大厂 MCP 面试实录:基于 JSON Schema 与 RAG 的调用异常排查方案设计
json schema·mcp·rag 知识库
逸Y 仙X2 天前
MCP(模型控制协议)完全指南:从核心概念到实战开发
python·大模型·llm·ai编程·mcp
Behavior2 天前
Claude Code + chrome-devtools MCP:安装部署与实战全记录
claude·mcp
阿里云云原生2 天前
从 MCP 协议演进看网关架构变革:Higress v2.2.4 实践与验证报告
mcp
deepseek232 天前
MCP Gateway 架构实战:企业级 AI Agent 连接层的设计与选型
ai agent·企业架构·mcp
今日无bug3 天前
从「拿来主义」到「亲手造轮子」:2 种 MCP 文件服务器写法对比
前端·node.js·mcp
SeaDhdhdhdhdh3 天前
MCP Server 搭建与使用指南
java·ai·agent·mcp