In depth
SSE transport was introduced in the first public MCP spec as the way to run MCP servers remotely. The client opens a long-lived GET request to the server's `/sse` endpoint. The server responds with an `event-stream` MIME type and pushes JSON-RPC messages as they occur. For requests in the opposite direction, the client POSTs to a separate `/messages` endpoint.
This dual-endpoint design worked but had quirks: it required sticky sessions, two routes per server, and didn't play well with some reverse proxies or load balancers. Browser-based clients could use EventSource but had limited control over headers.
The MCP spec revision `2025-03-26` introduced **streamable HTTP** as a simpler alternative: one endpoint, optional server-side streaming, full header control, idempotent by session ID. New servers should use streamable HTTP. SSE remains supported for backwards compatibility but is no longer recommended.
If you maintain an older remote MCP server, consider migrating — the streamable HTTP implementation is often simpler and handles more edge cases cleanly.