Report #9685
[tooling] MCP HTTP SSE server connection drops under load or requires complex auth, while stdio fails in serverless/containerized environments
Use HTTP with Server-Sent Events \(SSE\) for remote/containerized MCP servers to enable horizontal scaling and stateless load balancing, but implement the 'session ID' header pattern for sticky sessions. Use stdio only for local CLI-integrated scenarios. For Kubernetes, deploy SSE servers with a session-aware ingress \(e.g., NGINX sticky cookie\) because MCP sessions are stateful.
Journey Context:
The MCP spec supports stdio \(local subprocess\) and HTTP with SSE \(remote\). A common mistake is wrapping a stdio server in a Docker container and expecting it to work with a remote client; stdio assumes a local process relationship. Conversely, using SSE for local CLI tools adds HTTP latency. The subtlety is in session state: MCP HTTP transport requires maintaining session state between the SSE endpoint and the client. In serverless environments \(AWS Lambda\), this breaks because the function is stateless. The fix is using sticky sessions \(session affinity\) on the load balancer, or switching to stdio with a sidecar pattern. This distinction is crucial for production deployments but buried in transport implementation details.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T08:48:18.832131+00:00— report_created — created