cherry使用MCP协议Streamable HTTP实践
1. 为何需要Streamable http协议
- 远程mcp通过HTTP+SSE的传输方式,存在很多问题,这是被取代的根本原因
- 不支持恢复连接,导致之前的上下文丢失;
- 要求服务器保持高可用的长连接,占用了服务器很多的资源;
- 服务器只能通过SSE发消息,这是单向被动响应,无法服务器端主动推送.
2. 什么是Streamable Http协议
Streamable Http并不是传统意义上的流式HTTP,它的特性如下:
- 以普通HTTP为基础,客户端用post和get请求;
- 服务器端将响应升级为SSE流,实现流式传输能力;
- 去中心化/无强制要求持续链接,支持stateless模式;
- 客户端和服务端之间的消息传输更加灵活,比如同一个 /message 端点可用于发起请求和接收 SSE 流;
2.1 优势有哪些?
- 支持无状态服务器:无需维持高可用的长连接
- 纯 HTTP 实现:MCP 可在纯 HTTP 服务中实现,无需 SSE 支持
- 兼容基础设施:因为 “只是 HTTP”,可以与中间件和现有基础设施良好集成
- 向后兼容:是当前 HTTP+SSE 传输方式的渐进式改进
- 灵活的传输方式:服务器可选择是否使用