Anthropic公司近日宣布对其Model Context Protocol(MCP)进行重大技术革新,推出全新的"Streamable HTTP"传输协议,这一创新性解决方案将彻底改变MCP的远程数据传输方式。新协议不仅解决了现有HTTP+SSE方案的关键限制,还保留了MCP原有的技术优势,为AI模型与应用间的通信带来了革命性的突破。
从技术架构来看,这次更新是对MCP数据传输机制的一次全面重构。新协议采用了更加灵活、易用且兼容性更强的设计理念。与之前必须保持持续在线的SSE长连接相比,新方案允许客户端随时发送消息并等待回复,这种类似普通HTTP请求但支持流式传输的方式,极大地提升了系统的灵活性和可用性。
此次技术更新主要包含五大核心改进:首先,移除了专用的/sse端点,简化了服务器架构;其次,所有客户端到服务器的消息都通过统一的/message端点传输,实现了接口的标准化;第三,服务器可以根据实际需求动态将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请求不兼容。因此,最终决定继续使用HTTP,但赋予服务器根据需要升级到SSE的能力,而非强制使用SSE或WebSocket。
从整体来看,此次更新使MCP变得更加轻量级且灵活,服务器可自主决定是否支持流式传输;部署流程显著简化,适用于Serverless架构;兼容性大幅提升,可与各种网络基础设施无缝协作;服务器资源利用率更高,支持更大规模的并发请求。
这一创新性变更使MCP服务器变得更简单、更高效、更灵活,能够支持更大规模的分布式部署,彻底摆脱了SSE的限制,为AI模型与应用间的通信开辟了新篇章。项目地址:https://github.com/modelcontextprotocol/specification/pull/206