已弃用 MCP SSE:在服务器崩溃之前迁移到 Streamable HTTP
MCP SSE 传输已于 2026 年 4 月 1 日终止生命。迁移到具有无状态处理程序、每个请求新鲜实例和会话恢复路径的 Streamable HTTP; Node、Python 和 Cloudflare Workers 的代码。
MCP 服务器发送事件传输已于 2026 年 4 月 1 日终止。客户端库仍然存在
提供 SSE 支持以实现向后兼容性,但基础协议的下一个次要版本
删除它,公共 MCP 注册机构现在拒绝新的仅在 SSE 上市。 如果您的 MCP 服务器
仍然回答 /sse 和 /messages,你有一个迁移窗口,而不是
永远的窗口。
SSE 为每个客户端打开一个 TCP 连接。 负载后面的 MCP 服务器的两个副本 平衡器产生裂脑会话; 水平缩放需要粘性路由,大多数 托管负载均衡器无法清晰地表达。 Streamable HTTP 使用标准请求-响应 具有可选可恢复流的循环,这意味着任何实例都可以响应任何请求并 世界上每个 CDN 都已经知道如何缓存和路由它。
这是完整的迁移路径:前后服务器代码,数据存储模式
有状态工具、Cloudflare Workers 实现、FastAPI 等效项以及
.well-known 元数据文件,以便客户端无需打开即可发现您的服务器
首先连接。
步骤 1:删除 SSE 处理程序
旧代码看起来像这样。 两条路线,一个进程内存中保存的会话映射,以及一个传输 保持响应打开,直到客户端断开连接:
SSE 的每个问题都显示在该片段中。 这 transports 地图仅
对一个进程可见; 重新启动服务器,每个打开的会话都会终止; 水平缩放和
您一半的客户访问了从未听说过的服务器。 把它撕下来。
第 2 步:安装 Streamable HTTP
新的处理程序更小。 一条路由同时响应 GET 和 POST; 每个请求都会产生一个新的 服务器和传输对; 当响应关闭时垃圾收集器会进行清理:
三个关键很重要。 sessionIdGenerator: undefined 选择退出会话固定
运输是完全无国籍的。 enableJsonResponse: true 返回单个 JSON
不发出进度的工具的主体,这使路径保持快速且可缓存。 这
res.on("close") 清理可防止客户端早期断开连接时套接字泄漏。
步骤 3:将会话状态移出进程内存
无状态处理程序并不意味着无状态产品。 长时间运行的工具仍需要报告 跨多个请求的进度。 将该状态放入 Redis、持久对象、DynamoDB 或 Postgres; 在入口处读取,在出口处写入:
这 Mcp-Session-Id 标头(如果存在)标识逻辑会话; 处理程序
将其用作数据存储密钥。 一个 Last-Event-Id 来自客户端的标头让
传输在断开连接后恢复流,而无需重新启动工具调用。 两个标题都是
可选; 无状态工具可以完全忽略它们。
第 4 步:部署无服务器
Streamable HTTP 解锁了 SSE 阻止的内容:在 Cloudflare Workers、AWS 上运行 MCP 服务器 Lambda、Vercel 函数或飞行器。 这是 40 小时内的完整 Cloudflare Workers 服务器 行,将 Botoi 的 IP Lookup 端点作为一个示例工具:
没有会话映射,没有后台计时器,没有保持活动状态的 ping。 Worker 按需旋转并给出答案 请求,然后关闭。 一个 Worker 可以处理任意数量的并行客户端,因为 没有共享的可变状态。 大多数情况下,Workers 上 MCP 服务器的冷启动时间不到 5 毫秒 工具表面; 在 Lambda 上,它们的冷度为 50 到 200 毫秒。
第 5 步:使用 FastAPI 进行 Python 迁移
Python 服务器具有相同的形状。 FastAPI 处理程序根据请求构造 MCP 服务器 交通运输部代表:
跨语言的模式是相同的:为每个请求构建服务器,将 HTTP 请求交给 运输,返回运输产生的任何东西。 语言运行时不同; 建筑 没有。
步骤 6:发布服务器卡以供发现
2026 年路线图弥补的差距之一是无连接的发现。 登记处和
爬虫过去需要实时握手才能了解您的服务器做了什么。 在以下位置提供 JSON 文档:
/.well-known/mcp/server-card.json 客户端可以获知传输 URL,
连接前的身份验证方案和功能设置:
这是让代理平台索引您的服务器而无需探测它的部分。 Auth0 为 代理、Cloudflare Agent Cloud 和 MCP 公共注册表均使用此格式; 添加它 一旦你的服务器变得可列出。
验证迁移
在翻转 DNS 之前,请针对新端点运行检查器或curl。 第一表面a 每个工具和资源都公开的 UI; 第二个确认有线格式正确:
一个成功的 tools/list 响应您的完整工具目录意味着服务器正在
住。 如果响应返回为 text/event-stream 当您期望 JSON 时,
交通有 enableJsonResponse 残疾人; 翻转旗帜。
切换后,让两个传输在不同的路径上运行一周:
/sse 作为老听众, /mcp 作为新的。 每隔一段时间发出一条日志行
客户端连接的时间 /sse 及其用户代理。 当日志安静下来时,您
可以删除旧的处理程序。 大多数客户端库都提供了 Streamable HTTP 支持
2025年12月和2026年2月; 预计旧的 Cursor 和 Claude Desktop 安装会有长尾。
什么保持不变,什么改变
| 忧虑 | 上交所运输 | 流式 HTTP |
|---|---|---|
| 连接型号 | 每个客户一个长寿 | 请求-响应,可选流 |
| 负载均衡 | 需要粘性会话 | 任何实例响应任何请求 |
| 会话状态 | 进程内内存 | 以会话 ID 为关键的数据存储 |
| 无服务器适配 | 因连接持续时间限制而被阻止 | 本国的 |
| 进度流 | 默认 | 通过 Accept 标头选择加入 |
| 发现 | 现场握手 | /.well-known/mcp/server-card.json |
| 工具调用 | 基于 SSE 框架的 JSON-RPC | JSON-RPC over HTTP 主体 |
要点
- SSE 已被弃用,而不是被删除。 到 2026 年,客户仍然接受它,但新的 服务器和注册表列表需要可流式 HTTP。
- 根据要求构建新鲜的。 没有进程内会话映射; 让服务器反对 仅在 RPC 持续时间内存在。
-
将状态推送到数据存储。 Redis、持久对象或 Postgres
Mcp-Session-Id标头。 - 无服务器又回到桌面上。 Cloudflare Workers、Lambda、Vercel 功能; 他们都没有很好地支持长期存在的 SSE。
-
发布服务器卡。
/.well-known/mcp/server-card.json使 无需连接即可发现您的服务器。
Botoi 的 MCP 服务器采用 Streamable HTTP,位于 api.botoi.com/mcp 拥有 49 个精选工具,涵盖 IP 查找、电子邮件验证、DNS、哈希、JWT 签名和 QR 一代。 来源是麻省理工学院许可的,反映了上述模式; 阅读 设置文档 为了 Claude Desktop、Claude Code、光标、VS Code 和 Windsurf 配置。
FAQ
- MCP SSE 是否被删除或只是被弃用?
- 自 2026 年 4 月 1 日起已弃用; 为了向后兼容,客户端库中仍然存在运行时支持,但新的 MCP 服务器和注册表列表需要 Streamable HTTP。 2026 年路线图在下一个小版本中将 SSE 从基础协议中完全删除; 现在就开始迁移,而不是在删除时开始。
- 为什么 MCP 放弃 SSE?
- SSE 为每个客户端打开一个 TCP 连接,这使得水平扩展变得痛苦。 循环负载均衡器后面的两个相同的 SSE 服务器产生了裂脑会话:存储在服务器 A 上的工具状态对于服务器 B 来说是不可见的。可流式 HTTP 使用带有可选可恢复流的短请求响应周期,因此负载均衡器和 CDN 会路由每个请求,而无需将客户端固定到实例。
- 什么是每次请求新鲜实例?
- 每个传入请求都会构造一个新的 MCP 服务器对象,处理 RPC,然后丢弃该实例。 请求之间没有内存状态。 需要持久化的状态(进度标记、工具会话)位于处理程序在进入时读取并在退出时写入的数据存储中。 这使您可以在 Cloudflare Workers 或 AWS Lambda 等无服务器平台上运行同一服务器,而无需遵守 15 分钟的连接持续时间限制。
- 我还需要 WebSocket 来进行流工具输出吗?
- 不会。可流式 HTTP 在标准 POST 响应内包含一个可选的 SSE 样式流,用于发出部分结果的工具。 与旧 SSE 的区别在于,流存在于一个 HTTP 请求中,并以工具调用结束。 您不会在工具调用之间保持套接字打开。
- 如何在本地测试 Streamable HTTP 服务器?
- 使用官方 MCP 检查器 (npx @modelcontextprotocol/inspector),它现在可以使用两种传输方式。 或者使用 JSON-RPC 主体和 Accept: text/event-stream 标头卷曲端点; 您将看到单个 JSON 响应或事件流,具体取决于工具是否发出进度。 会话恢复可使用 Mcp-Session-Id 和 Last-Event-Id 标头进行测试。
开始使用 botoi 构建
150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。