news 2026/4/15 17:19:33

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【光子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.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 9:50:44

Python代码示例:快速筛选偶数并求均值

请提供具体的编程语言和代码功能要求,以便生成符合需求的代码示例。例如:编程语言:Python代码要求:实现快速排序算法或编程语言:JavaScript代码要求:从API获取数据并解析JSON提供详细信息后,将生…

作者头像 李华
网站建设 2026/4/14 3:37:10

本章节我们将讨论如何React 表单与事件

React 表单与事件 本章节我们将讨论如何在 React 中使用表单。 HTML 表单元素与 React 中的其他 DOM 元素有所不同,因为表单元素生来就保留一些内部状态。 在 HTML 当中&#xff0c;像 <input>, <textarea>, 和 <select> 这类表单元素会维持自身状态&…

作者头像 李华
网站建设 2026/4/13 23:15:17

Android应用程序 c/c++ 崩溃排查流程三——ndk-stack工具使用

目录 一.背景 二.ndk-stack工具如何使用 一.背景 Android中使用c/c出现crash&#xff0c;或者前一篇的AddressSanitizer工具中&#xff0c;AddressSanitizer工具抓取的日志需要再定位下具体在哪一行&#xff0c;使用addr2line工具固然可以进行进一步排查&#xff0c;但是还有…

作者头像 李华
网站建设 2026/4/15 4:50:45

中小微企业一体化管理系统横向对比:从CRM到生产的全链路能力拆解

在数字化转型浪潮中&#xff0c;“业务孤岛”是中小微企业的核心痛点——CRM的销售数据无法同步到进销存&#xff0c;生产工单与财务核算脱节&#xff0c;薪资计算仍需人工核对销售业绩……一套能覆盖CRM、进销存、薪资、财务、上下游协同、生产工单的一体化系统&#xff0c;成…

作者头像 李华
网站建设 2026/4/15 15:10:00

“ThreadLocal是什么?揭秘它的隐藏机制!(Java面试必看)”

文章目录“ThreadLocal是什么&#xff1f;揭秘它的隐藏机制&#xff01;&#xff08;Java面试必看&#xff09;”一、什么是ThreadLocal&#xff1f;二、ThreadLocal的隐藏机制1. 线程的副本管理2. 变量的生命周期3. 实例的共享与隔离三、ThreadLocal的实际应用1. 用户登录态管…

作者头像 李华