Why was the HTTP+SSE transport deprecated as an MCP transport in 2025?
HTTP+SSE split the two directions across a long-lived SSE stream and separate POSTs; that asymmetry broke on serverless and stateless infra, so Streamable HTTP replaced it with one endpoint.
Imagine ordering at a drive-through where you shout your order through one window but the food comes out a totally different window that has to stay open the whole time. If that second window ever closes, the kitchen loses track of your whole order. The old MCP remote transport worked like that: replies streamed back on a long-open server channel while your requests went through a separate door. Cloud platforms that spin servers up and down hated keeping that channel open. The new design uses a single window for both ordering and receiving. The reply can still stream when needed, but nothing has to stay propped open, so it works on platforms that start fresh for every request.
Detailed answer & concept explanation~7 min readEverything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
4 min: name the asymmetry, explain the lifecycle pain, contrast the unified single-endpoint design, then tie it to stateless serverless deployment and optional streaming.
| Aspect | HTTP+SSE (deprecated) | Streamable HTTP (current) |
|---|---|---|
| Endpoints | Separate SSE stream + POST endpoint | Single unified endpoint |
| Server-to-client | Long-lived SSE GET stream | Optional SSE on the POST response |
| Connection model | Persistent open socket required | Per-request, no held socket |
| Statefulness | Stateful, sticky routing needed | Stateless-friendly |
| Serverless fit | Poor, cannot hold stream open | Clean, maps to Workers and Lambda |
| Spec revision | 2024-11-05 | 2025-03-26 onward |
Real products, models, and research that use this idea.
- Cloudflare's remote MCP server guides target Streamable HTTP so Workers can serve MCP statelessly without holding an SSE socket open.
- Anthropic's MCP spec revision 2025-03-26 introduced Streamable HTTP and deprecated the standalone HTTP+SSE transport from the 2024-11-05 revision.
- The official MCP TypeScript and Python SDKs ship a StreamableHTTPServerTransport, with the older SSE transport kept only for backward compatibility.
What an interviewer would ask next. Try answering before peeking at the approach.
QHow does Streamable HTTP let a stateless server still support multi-message sessions?
QIf streaming is optional in Streamable HTTP, when should a server actually stream the response?
Don't say thisRed flags and common mistakes that signal junior thinking. Click to expand.
Red flags and common mistakes that signal junior thinking. Click to expand.
Guessing the answer is about WebSockets or binary payloads. The real reason is the asymmetric two-channel design that broke connection lifecycle on stateless and serverless infra.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.
Same topic, related formats. Practice these next.