返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

MCP协议或迎来重大更新:引入Streamable HTTP传输

[复制链接]
链载Ai 显示全部楼层 发表于 2 小时前 |阅读模式 打印 上一主题 下一主题
图片

大家通过上面这张图简单了解一下什么是MCP

MCP协议迎来重大更新,引入了全新的Streamable HTTP传输机制。这一更新解决了当前HTTP+SSE传输方式的关键限制,同时保留了其优势。这项改进得益于来自Shopify、Pydantic、Cloudflare、LangChain、Vercel、Anthropic团队及MCP社区众多成员的宝贵反馈。


主要变更

与当前HTTP+SSE传输相比,新版本有以下变化:

-移除了`/sse`端点

-所有客户端→服务器消息通过`/message`(或类似)端点传输

-所有客户端→服务器请求都可由服务器升级为SSE,用于发送通知/请求

-客户端在请求头中提供会话ID;服务器可根据需要关注此ID

-客户端可通过空GET请求到`/message`端点来初始化SSE流

这种方法可以向后兼容实现,并允许服务器根据需要完全无状态运行。


更新动机

当前的远程MCP通过HTTP+SSE传输工作,存在以下问题:

-不支持恢复性

-要求服务器维护高可用性的长连接

-服务器消息只能通过SSE传递


主要优势

1.无状态服务器可行性:不再需要高可用性的长连接

2.纯HTTP实现:MCP可在纯HTTP服务器中实现,无需SSE支持

3.基础设施兼容性:仅是"普通HTTP",确保与中间件和基础设施兼容

4.向后兼容:现有传输机制的增量演进

5.灵活升级路径:服务器可根据需要使用SSE进行流式响应


应用场景


无状态服务器

一个完全无状态的服务器可以不支持长连接:

-始终确认初始化(无需保存状态)

-通过单个JSON-RPC响应处理工具列表请求

-执行工具调用请求,完成后将响应作为HTTP响应体返回


带流式处理的无状态服务器

无状态服务器仍可利用流式处理:

-接收工具调用请求时,服务器指示响应将使用SSE

-执行工具时发送进度通知

-工具执行完成后发送响应并关闭SSE流


有状态服务器

类似当前实现,但需要处理会话ID头,以便在水平扩展部署中正确路由消息。


为何不选择WebSocket

团队详细讨论了将WebSocket作为主要远程传输的可能性,但决定暂不采用,原因如下:

-在"RPC式"使用场景下会产生不必要的运营和网络开销

-浏览器无法附加授权等头信息

-只有GET请求可透明升级到WebSocket,需要复杂的两步升级过程


总结

此次更新为MCP协议带来更高的灵活性和稳健性,使其能够适应更广泛的应用场景。虽然当前选择了基于HTTP的方案,但未来仍可能探索WebSocket等其他传输方式。

通过这次技术升级,MCP协议将更好地满足现代应用架构的需求,为开发者提供更强大、更可靠的消息通信能力。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ