MCP协议支持的传输方式解析
一、Stdio(标准输入/输出)Stdio 是 MCP 协议规定的默认本地传输方式,利用进程的标准输入和标准输出进行双向通信。
- 适用场景:本地 CLI 工具、桌面应用或 IDE 插件需要与 AI 模型快速交互。
- 优势:实现简单、依赖极少、延迟低;只要能读写 stdin/stdout 的环境都能接入。
- 注意:仅限同一台机器或容器内进程,无法跨网络使用。
二、Streamable HTTP(单端点 HTTP + 可选 SSE)Streamable HTTP 是 2025 年新引入的远程传输方式,使用单一 HTTP 端点双向承载 JSON-RPC 消息:
- 客户端 → 服务器:每条 JSON-RPC 请求作为一次 HTTP POST;
- 服务器 → 客户端:
- 可以直接返回 JSON 响应;
- 也可以升级为
text/event-stream
,通过 Server-Sent Events (SSE) 持续推送结果流。
- 适用场景:需要跨网络、长连接或多客户端并发的 Web 服务。
- 优势:只需一个路径即可完成请求与流式响应,易于部署与负载均衡。
- 注意:需保持 HTTP 长连接,可能受防火墙或代理限制。
三、SSE(双端点 HTTP + EventStream)在部分文档与生态工具中,传统 SSE 仍被作为独立远程传输方式列出:
- 客户端使用 POST 端点发送请求;
- 客户端同时订阅另一个
/sse
GET 端点接收服务器推流。虽然配置稍繁琐,但兼容旧版客户端,仍在生产环境广泛使用。
四、自定义传输扩展MCP 协议层对传输“去耦合”,允许开发者实现 WebSocket、Unix Socket、ZeroMQ 等自定义通道,只要满足双向消息交换即可。常见做法:
- 内网高频通信可选 Unix Domain Socket;
- 需要浏览器端实时互动可选 WebSocket。在企业内部落地时,可根据网络拓扑、安全要求与负载特性灵活选择或混用多种传输方式。
五、小结
- 本地场景首选 Stdio,简单高效;
- 远程场景优先 Streamable HTTP,单端点易维护;
- 兼容旧生态可继续暴露 SSE;
- 如有特殊需求,可利用 MCP 的“传输可插拔”特性自定义实现。正确选择合适的传输层,能确保 MCP 服务的稳定性、扩展性与开发效率。