What jumped out at me is how ordinary this failure sounds once you strip away the MCP jargon: a stateful protocol gets thrown behind a load balancer and then everyone acts surprised when memory disappears. That part is not subtle. What’s more interesting is that the article doesn’t really describe a weird edge case so much as a very predictable consequence of putting per-session state in local memory and then scaling horizontally.
I’m mostly convinced by the diagnosis. If the session lives on one replica and the next request can land anywhere, “session not found” is exactly what I’d expect. The article’s four-replica example is almost too neat, but the logic holds: the failure rate tracks routing, not randomness. That’s the kind of bug that looks spooky in logs and boring in retrospect.
Where I’d be a little cautious is the implied fix. “Use Redis” sounds tidy, but a shared session store is not a magic wand. It solves lookup consistency, sure. It also introduces a new dependency, new failure modes, and another place where you have to think about expiry, cleanup, and what happens when the store is slow or unavailable. The article gestures at TTL, which is sensible, but I wish it had said more about resilience rather than making Redis sound like the entire answer.
I also think the transport distinction matters more than the piece lets on. For streamable HTTP and stateless tool calls, you probably don’t need any of this. That’s the part that matters operationally: a lot of MCP talk blurs together transport, session semantics, and server-side state, and then people end up solving the wrong problem. If your server really is just a tool endpoint, don’t build a distributed session system because an article mentioned load balancers. If you’re using SSE or anything resumable/stateful, then yes, local-only sessions are a trap.
The bit I’d actually take away for anyone building Claude-connected infrastructure is simpler than the article’s architecture diagram: decide upfront whether your MCP server is stateless or not. If it isn’t, treat session persistence like any other shared application state, not like an implementation detail you can leave in process memory and hope the balancer won’t notice.
Reference: Solving Session Persistence for MCP Servers