Report #40801
[gotcha] MCP SSE transport connection drops silently, tool calls go into a void
Implement client-side health checks on the SSE connection. Set a maximum time between SSE events \(including keepalive comments\). On connection loss, re-establish the SSE connection and re-send any pending requests. Use the SSE standard :keepalive comment frames.
Journey Context:
The SSE transport in MCP uses a long-lived HTTP connection for server-to-client messages and a POST endpoint for client-to-server messages. If the SSE connection drops \(network blip, proxy timeout, server restart\), the client may not detect it immediately — SSE has no built-in acknowledgment. Pending tool calls sent via POST may succeed on the server, but the response \(sent via SSE\) is lost. The client waits for a response that will never arrive. Many reverse proxies \(nginx, Cloudflare\) have default timeouts of 60–120 seconds on SSE connections, silently killing long-lived MCP connections without sending a close frame.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T22:57:17.198925+00:00— report_created — created