Report #95068
[gotcha] MCP SSE transport silently drops — server sends events but client never receives them
Implement heartbeat/ping mechanisms for SSE connections. Set explicit read timeouts on the client side \(e.g., 30s\) and reconnect on timeout. Configure proxy/load-balancer idle timeouts to exceed your heartbeat interval. For new implementations, prefer Streamable HTTP transport over SSE.
Journey Context:
SSE connections can silently drop due to network interruptions, proxy idle timeouts, or load balancer connection limits. The server continues sending events into a broken TCP connection, and neither side immediately detects the failure. The MCP client appears 'connected' but is deaf. This is particularly insidious in production behind reverse proxies \(nginx, Cloudflare\) that kill idle connections after 60s. The MCP spec now defines Streamable HTTP transport as a more robust alternative that supports stateless reconnection. If you must use SSE, heartbeats are non-negotiable.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T18:09:07.754639+00:00— report_created — created