Anthropic today announced a major update to the Model Context Protocol (MCP), introducing a new "Streamable HTTP" transmission method to replace the existing HTTP+SSE approach. This innovation completely resolves key limitations in MCP remote transmission while retaining its original advantages.
This update essentially restructures the MCP data transmission mechanism, making the protocol more flexible, user-friendly, and compatible. To illustrate, the previous MCP transmission was like a customer service call requiring a constant connection (SSE needs a persistent connection), while the new approach is similar to sending messages and waiting for replies as needed (regular HTTP requests, but with optional streaming).
This update includes five core changes: First, the dedicated /sse endpoint is removed; the server no longer maintains a separate SSE (Server-Sent Events) endpoint. Second, all client-to-server messages are transmitted through a unified /message endpoint, no longer relying on /sse. Third, the server can dynamically upgrade HTTP requests to SSE streams as needed to send notifications or requests. Fourth, the client provides the Mcp-Session-Id via Header, and the server can decide whether to store session information. Finally, it supports completely stateless server operation, eliminating the need for persistent connections.
The main reasons for this change are several shortcomings in the current HTTP+SSE transmission: lack of connection resumption after disconnection, forcing clients to restart the entire session; the server needs to maintain high availability to support continuous SSE connections; and SSE only supports unidirectional communication (server to client), preventing flexible bidirectional communication. The new "Streamable HTTP" transmission method successfully addresses these issues, significantly improving system scalability and flexibility.
For developers, this update offers several conveniences: implementing an MCP server becomes simpler, requiring only a regular HTTP server to support MCP, eliminating the need for a dedicated SSE server; deployment to cloud platforms like Vercel, Cloudflare, and AWS Lambda that don't support persistent connections becomes easier; compatibility is significantly improved, as the new approach, being standard HTTP, seamlessly integrates with CDNs, API gateways, and load balancers; and scalability is significantly enhanced, supporting stateless operation and dynamically upgrading to SSE when needed.
In terms of infrastructure and server architecture, the new approach also brings revolutionary changes: stateless servers are now possible, eliminating the need for servers to continuously store client session information; it's better suited for microservice architectures, easily integrating with REST APIs, GraphQL, load balancers, and CDNs; and server resource utilization is higher, as resources are released after request processing, making it suitable for high-concurrency scenarios.
Interestingly, despite the problems with SSE, Anthropic didn't choose WebSocket as an alternative. This is because: WebSocket requires persistent connections, while MCP primarily uses an RPC-like model where each request is executed independently; WebSocket cannot transmit HTTP header information, complicating the authentication process; and WebSocket only supports GET upgrades, not POST, incompatible with MCP's primary use of POST requests. Therefore, the decision was made to continue using HTTP but give the server the ability to upgrade to SSE as needed, rather than mandating SSE or WebSocket.
Overall, this update makes MCP lighter and more flexible, allowing servers to autonomously decide whether to support streaming; the deployment process is significantly simplified, suitable for Serverless architectures; compatibility is significantly improved, seamlessly working with various network infrastructures; and server resource utilization is higher, supporting larger-scale concurrent requests.
This innovative change makes MCP servers simpler, more efficient, and more flexible, supporting larger-scale distributed deployments, completely eliminating the limitations of SSE, and opening a new chapter for communication between AI models and applications.
Project address: https://github.com/modelcontextprotocol/specification/pull/206