Anthropic公司近日发布了Model Context Protocol(MCP)的重大更新,引入了创新的“Streamable HTTP”传输机制,用以取代传统的HTTP+SSE方案。这一技术革新有效克服了MCP远程传输的瓶颈,同时保留了原有协议的强大功能。

本次更新实质上是对MCP数据传输机制的根本性重构,使协议更具有灵活性、便捷性和兼容性。以类比来说,原有的MCP传输方式如同需与客服保持实时在线沟通(SSE的长连接要求),而新方案则更像是能随时发送信息并等待响应(普通HTTP请求,可选流式传输)。

此次更新涉及五大核心变更:首先,取消了专用的/sse端点,服务器不再独立维护SSE端点;其次,所有客户端至服务器的消息都通过统一的/message端点传输,不再依赖/sse;第三,服务器能够根据需求将HTTP请求动态升级为SSE流,以发送通知或请求;第四,客户端通过Header提供Mcp-Session-Id,服务器可自行选择是否存储会话信息;最后,支持无状态服务器运行,不再需要维持长期连接。

此次变更的根本原因在于HTTP+SSE传输存在缺陷:不支持连接断开后恢复功能,客户端需重新开始整个会话;服务器需保持高可用性以维持SSE连接;且SSE仅支持单向通信(服务器至客户端),无法实现双向灵活通信。新“Streamable HTTP”传输方式有效解决了这些问题,大幅提升了系统的可扩展性和灵活性。

对于开发者来说,此次更新带来了诸多便利:MCP服务器的搭建变得更加简单,仅需普通HTTP服务器即可支持MCP,无需额外搭建SSE服务器;部署到不支持长连接的云平台(如Vercel、Cloudflare、AWS Lambda)更为容易;兼容性显著提升,新方案作为标准HTTP,可与CDN、API网关、负载均衡无缝集成;扩展性大幅增强,支持无状态模式运行,并可动态升级到SSE。

在基础设施和服务器架构方面,新方案同样带来颠覆性变化:无状态服务器成为可能,服务器不再需要持续存储客户端会话信息;更适合微服务架构,可轻松与REST API、GraphQL、负载均衡、CDN等系统集成;服务器资源利用率更高,处理请求后即可释放资源,适合高并发场景。

值得一提的是,尽管SSE存在缺陷,Anthropic并未选择WebSocket作为替代方案。原因在于:WebSocket需维持长连接,而MCP主要采用类似RPC的模式,每个请求独立执行;WebSocket无法传输HTTP头部信息,导致身份验证复杂;WebSocket仅支持GET升级而非POST,与MCP主要使用的POST请求不兼容。因此,Anthropic最终决定继续使用HTTP,并赋予服务器根据需求升级到SSE的能力。

总体而言,此次更新使MCP更加轻量级和灵活,服务器可自主决定是否支持流式传输;部署流程显著简化,适用于Serverless架构;兼容性大幅提升,可与各种网络基础设施无缝协作;服务器资源利用率更高,支持更大规模的并发请求。

这一创新性变更让MCP服务器变得更为简单、高效、灵活,支持更大规模的分布式部署,彻底摆脱了SSE的限制,为AI模型与应用间的通信开启了新的篇章。

项目地址:https://github.com/modelcontextprotocol/specification/pull/206