In depth
Streamable HTTP is MCP's answer to the shortcomings of SSE: a single endpoint, symmetric traffic, session IDs for stateful workflows, and easy integration with standard HTTP infrastructure (load balancers, reverse proxies, CDNs).
The client sends each JSON-RPC request as an HTTP POST with `Content-Type: application/json`. The server responds in one of three ways: (1) a single JSON-RPC response for simple tool calls; (2) a chunked/streamed response containing multiple SSE-style events for long-running calls with progress; (3) an HTTP 202 Accepted for fully async workflows (where the actual result comes over a separate SSE channel).
Session management uses the `Mcp-Session-Id` HTTP header. The server issues a session ID during initialization; the client includes it on every subsequent request. This enables statefulness without breaking the HTTP model.
Streamable HTTP is the recommended transport for any new remote MCP server. All major MCP SDK versions from 2025 onward support it by default.