07|底层架构(下):MCP协议传输层(Transport layer)详解
黄佳

你好,我是黄佳。
在上一课中,我们深入剖析了 MCP 的协议层,揭示了 BaseSession 如何在 JSON-RPC 之上完成 SessionMessage 的帧化、请求–响应关联、并发收发与通知分发,让客户端和服务端只需关注高层的请求处理和工具调用。
这一课,我们将目光从 **“消息如何被打包”转向“消息如何被传输”**。因为真正的通信管道,是由传输层(Transport layer)来承载这些帧化后的 SessionMessage,将它们在进程或网络之间来回搬运。

上一课中也提到,Host 应用在启动时会分别实例化 ClientSession 和 ServerSession。二者的底层读写流对接后,本地场景通常将一个进程的标准输出通过 stdio 连向另一个进程的标准输入,而远程场景则可以通过 HTTP 与 SSE 通道互联。我们下面就进一步看看不同的场景中,MCP 协议内部如何实现各种传输方式。
MCP 的传输方式 (Transport layer)
MCP 支持多种传输方式以适配不同场景:
Stdio Transport:这是最轻量的 stdio 通道,借助标准输入 / 输出即可完成同机进程间的双向通信,适合本地进程间的通信。
HTTP + SSE Transport:基于 HTTP 的单向推流与单向发送组合(SSE + POST),适合浏览器前端与微服务后端的分离部署。服务器端使用 Server-Sent Events 推送消息给客户端。客户端通过 HTTP POST 发送请求。
Streamable HTTP Transport:更完善的 Streamable HTTP 场景中,POST 请求能返回 JSON 或切换到 SSE 流,在同一路径上混合使用 HTTP POST(发送请求)和 SSE(接收流式响应),支持 mcp-session-id 会话管理、断点续传以及 JSON/SSE 混合响应。
WebSocket Transport:基于 WebSocket 全双工通道,建立后客户端和服务端都可以随时推送 JSON-RPC 消息。适合低延迟、高频率的实时双向交互,以及真正的全双工 WebSocket 通道,为低延迟、高频双向交互提供最佳性能。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. MCP支持多种传输方式,包括stdio、HTTP + SSE、Streamable HTTP和WebSocket Transport,以适配不同场景的通信需求。 2. MCP中通过标准输入/输出(stdio)实现了最轻量的本地进程间通信方式,无需网络端口,性能开销低,且具有良好的兼容性。 3. WebSocket Transport建立全双工通道,适合低延迟、高频率的实时双向交互,提供最佳性能。 4. MCP传输过程中的错误处理是通过三条路径实现的:错误响应、错误事件和全局错误处理器,以确保不漏报任何环节的失败,并让上层业务代码选择最合适的恢复或告警策略。 5. MCP定义了标准错误码,包括ParseError、InvalidRequest、MethodNotFound、InvalidParams和InternalError,同时也支持用户自定义错误码。 6. 选择MCP的传输实现方式应根据具体业务场景来选型,如本地/调试可用stdio,浏览器或HTTP服务可用SSE+POST,可靠生产可选Streamable HTTP,高性能双向可选WebSocket。 7. 在不稳定的网络环境下,可以设计在WebSocket链路失败后自动切换到HTTP + SSE,再切回WebSocket,需要在Host/ClientSession层设计相应的重连或降级机制。 8. 如果要为MCP增加一个全新的传输方式(例如gRPC双向流),需要实现核心能力并与现有的BaseSession集成,包括实现接口或函数等。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MCP & A2A 前沿实战》,新⼈⾸单¥59
《MCP & A2A 前沿实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论