当前位置: 首页 > news >正文

【光子AI】MCP 的 streamable_http 与 SSE 前后区别是什么:原理剖析和源代码详解

MCP 的 streamable_http 与 SSE 前后区别是什么:原理剖析和源代码详解

文章目录

  • MCP 的 streamable_http 与 SSE 前后区别是什么:原理剖析和源代码详解
      • 1. 核心架构区别
      • 2. 为什么要从 SSE 升级到 Streamable HTTP?
      • 3. 交互流程对比
      • 总结
  • =====================================
    • 一句话结论
    • 时间线(“前后”指的就是这些版本)
    • 旧 SSE transport vs 新 Streamable HTTP:逐点对比
      • 1) Endpoint 结构:两条 URL → 一条 URL
      • 2) 客户端发消息方式:固定 POST URL + 手摇协议 → 每条消息一次 POST(更“HTTP 化”)
      • 3) 服务端回消息方式:只能走 SSE → 可以 JSON 也可以 SSE
      • 4) 服务端主动推送:从“默认走那条 SSE 长连接” → 规范化为 GET 开 SSE
      • 5) 断线恢复/补发:旧版没标准答案 → 新版把 `Last-Event-ID`、重放规则写进规范
      • 6) Session:从“各家自定义” → 规范化 `MCP-Session-Id`
    • 工程上的“最常见坑”(你大概率就是在这卡住)
      • 坑 1:浏览器原生 `EventSource` 不能加自定义 headers
      • 坑 2:SSE 连接数限制(浏览器侧)
    • SDK 配置名的对应关系(你看到的 `streamable_http` 是什么)
    • 迁移时你应该怎么理解“前后差异”(实操版)
  • ================================================
      • 场景设定
      • 1. Legacy SSE (双通道模式)
        • 后端代码 (Server)
        • 前端代码 (Client)
      • 2. Streamable HTTP (单通道模式)
        • 后端代码 (Server)
        • 前端代码 (Client)
      • 关键差异总结
  • =================================================
    • A) Legacy SSE transport(HTTP+SSE,旧版,两条 endpoint)
      • 协议要点(对应你要对比的“差异”)
      • 1) 后端:`legacy-sse-server.js`(Node + Express)
      • 2) 前端:`legacy-sse-client.html`(浏览器:EventSource + fetch POST)
    • B) Streamable HTTP(新 transport:单一 /mcp,POST/GET,可选 SSE)
      • 协议要点(对应你要对比的“差异”)
      • 1) 后端:`streamable-http-server.js`(Node + Express)
      • 2) 前端:`streamable-http-client.html`(浏览器:fetch 处理 JSON 或 SSE)
    • 你用这两套代码做对比时,应该看到的“网络形态差异”
      • Legacy SSE(旧)
      • Streamable HTTP(新)

在 MCP (Model Context Protocol) 协议的演进中,Streamable HTTP是作为SSE (Server-Sent Events)的升级替代方案推出的。它们的核心区别在于连接架构的复杂度网络兼容性

简单来说:

  • SSE (旧版/Legacy):需要两个不同的端点(一个发消息,一个收消息),依赖长连接。
  • Streamable HTTP (新标准):只需要一个端点,统一了收发,兼容性更强,支持“按需流式”。

以下是详细的技术对比和区别:

1. 核心架构区别

特性SSE (旧版传输方式)Streamable HTTP (新版传输方式)
端点数量双端点 (Dual Endpoints)
1.
http://www.jsqmd.com/news/212332/

相关文章:

  • docker部署kkFileView实现文件预览功能
  • Linux信号处理函数中断流程分析
  • 吐血推荐!继续教育AI论文写作软件TOP9:选对工具轻松过关
  • 24v转100v 功率350w 12v转200v300v400v500v直流dcdc高压电源模块
  • [特殊字符]️_开发效率与运行性能的平衡艺术[20260107163415]
  • RAG优化完全指南:从检索到生成的实战技巧,程序员必学!建议收藏
  • ModBus协议——可用A810C-L400M30无线LORA数传电台
  • 德州仪器在CES首次展示新型汽车半导体及开发资源,提升车型的安全性和自动驾驶能力
  • 2025年终总结 - 微分几何助力突破具身智能发展的瓶颈
  • RAG技术2025年演进:从检索增强生成到上下文引擎,程序员必学大模型关键技术
  • 星巴克中国与亚朵集团达成合作推出联合会员计划 | 美通社头条
  • Python斐波那契数列代码示例
  • 五大 AI 获客软件推荐:适配不同场景的精准获客解决方案
  • 线性判别分析(LDA)
  • 我们可以使用 onChange 事件来监听 input 的变化,并修改 state
  • 吐血推荐专科生必用TOP10 AI论文软件
  • 本章节我们将讨论如何React 表单与事件
  • Nordic方案——无线射频模组AS01-ML01SC
  • GEO服务/运营商推荐!2026 GEO 优化实用指南:如何选对服务商让 AI 精准推广品牌
  • Mac隐藏效率神器
  • Python实现斐波那契数列计算
  • 优质正版素材平台实战指南:四大资源库深度解析
  • Python代码示例:快速筛选偶数并求均值
  • 智能体推理范式: ReAct(Reasoning Acting)
  • 全网最全研究生AI论文工具TOP10测评
  • 商联达AI智能体:零售业从经验到数据的革命
  • 企业选型智能体的五大核心维度:以商联达为例的实战指南
  • 程序猿之开发工具Snipaste
  • 30秒掌握Python快速排序
  • 全网最全专科生必用TOP8 AI论文平台测评