{"slug": "mcp-is-now-stateless", "title": "MCP is Now Stateless !", "summary": "The Model Context Protocol (MCP) has transitioned from a session-based, bidirectional connection model to a stateless request/response API, eliminating the Mcp-Session-Id and protocol-level sessions. This change, detailed in a Towards AI article by Kushal Banda, simplifies scaling by allowing round-robin load balancing and serverless deployments, with application state now managed via explicit handles in tool results. The update also revises HTTP interactions to be POST-oriented, removing standalone GET streams and DELETE session teardown from the protocol path.", "body_md": "MCP stopped being a connection you hold. It became an API you call.\n\nThe MCP protocol moved from a bidirectional, session-shaped model to a request/response core. If you run MCP servers behind a load balancer, on serverless, or across a replica pool, this change is the difference between sticky routing and plain round-robin.\n\nThis piece walks the architecture in three frames: how it was, how it is, and why the shift helps you ship.\n\nRemote MCP used to behave like a held-open relationship.\n\nYou started with initialize. The server could mint an Mcp-Session-Id. Your client stored that id and sent it on later calls. The load balancer often went sticky so every request for that session landed on the same instance. A long-lived GET SSE stream carried server-to-client traffic. Ending the session meant an explicit DELETE.\n\nThat design worked for a single process. It fought you at scale.\n\nWhy sticky? Because session state lived on Instance A. Later calls had to come back to A. Instance B and C could not serve you for that session. Kill Instance A and the whole session dies with it. The client starts over.\n\nConnection lifecycle, in short:\n\nIf you have run sticky sessions for any HTTP API, you already know the ops cost: affinity config, session stores, expiry, garbage collection, and painful failovers.\n\nThe latest update flipped the core to stateless.\n\nThere is no negotiation handshake. Every request carries its protocol version and client capabilities in _meta. The server accepts or rejects each request on its own. Protocol-level sessions are gone. Mcp-Session-Id is no longer part of the model.\n\nHTTP shape gets simpler too. Streamable HTTP for the modern revision is POST-oriented. Standalone GET streams and DELETE session teardown are out of the protocol path. Long-lived push, when you need it, is explicit: POST subscriptions/listen and hold an SSE only for that subscription.\n\nNow: no connection to hold. Every request stands on its own.\n\nHere’s the Request lifecycle:\n\nPOST with _meta\n\nApp state did not disappear. It moved. Instead of hiding carts, browsers, or DB connections inside a protocol session, the server mints an explicit handle (a string in a tool result). Later tools take that handle as an argument. You own TTL and cleanup. The protocol stays sessionless.\n\nThat is the architectural bargain: protocol state is gone; application state is visible and portable across replicas.\n\nPut the two models side by side and the production story is obvious.\n\nFour outcomes matter most when you operate the system:\n\nStateless at the protocol layer does not mean zero state in your product.\n\nYou still design handles, TTLs, and auth around those handles. Broken SSE streams mean you re-issue the request; stream resumability via Last-Event-ID is gone. Dynamic “tools appear after connect” patterns are out; lists must stay session-independent. Clients that support both legacy and modern revisions need a clear probe and fallback path.\n\nIf your gateway or auth layer was keyed on Mcp-Session-Id, plan a migration. The state moved into the open: request _meta plus explicit handles you manage.\n\nThanks for reading! If you have any questions or feedback, please let me know on [Medium](https://medium.com/@kushalbanda) or [LinkedIn](https://www.linkedin.com/in/kushalbanda/)\n\n[MCP is Now Stateless !](https://pub.towardsai.net/mcp-is-now-stateless-7c940c539e4a) was originally published in [Towards AI](https://pub.towardsai.net) on Medium, where people are continuing the conversation by highlighting and responding to this story.", "url": "https://wpnews.pro/news/mcp-is-now-stateless", "canonical_source": "https://pub.towardsai.net/mcp-is-now-stateless-7c940c539e4a?source=rss----98111c9905da---4", "published_at": "2026-08-11 10:44:39+00:00", "updated_at": "2026-08-11 10:47:19.813757+00:00", "lang": "en", "topics": ["ai-infrastructure", "developer-tools", "ai-agents"], "entities": ["Model Context Protocol (MCP)", "Kushal Banda", "Towards AI", "Medium"], "alternates": {"html": "https://wpnews.pro/news/mcp-is-now-stateless", "markdown": "https://wpnews.pro/news/mcp-is-now-stateless.md", "text": "https://wpnews.pro/news/mcp-is-now-stateless.txt", "jsonld": "https://wpnews.pro/news/mcp-is-now-stateless.jsonld"}}