Report #96267
[gotcha] MCP SSE transport connections silently drop, tools appear to never respond
Implement heartbeat/ping-pong on SSE connections. Use the MCP \`ping\` method to detect dead connections proactively. Handle reconnection logic client-side with exponential backoff. Set appropriate timeouts and do not assume a connection is alive just because no error has been emitted.
Journey Context:
The MCP SSE \(Server-Sent Events\) transport is used for remote MCP servers. Unlike stdio, which is a local pipe that rarely drops, SSE connections over HTTP are subject to network interruptions, proxy timeouts, load balancer idle timeouts, and firewall disconnections. When an SSE connection drops, the client may not immediately notice — the EventSource API does not always fire an error event promptly. The server continues accepting requests that go nowhere, and the client thinks it is still connected. This manifests as tools that 'never respond' — the request is sent into the void. Developers waste time investigating the tool implementation when the real issue is a dead transport. The fix requires active health checking via the MCP \`ping\` method and robust reconnection logic.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T20:10:07.410414+00:00— report_created — created