Report #7009
[gotcha] MCP SSE transport: connection silently drops, client doesn't detect it until next send fails
Implement heartbeat/ping mechanism on top of the transport. Set a read timeout on the SSE connection and reconnect if no events are received within the timeout period. On reconnection, re-send any in-flight requests that may have been lost.
Journey Context:
The SSE transport maintains a long-lived HTTP connection. Network intermediaries \(proxies, load balancers, NATs\) can silently drop idle connections. The client won't know the connection is dead until it tries to send a message and fails — or until it's waiting for a response that will never arrive. This manifests as tools that 'never respond.' The fix isn't just reconnection logic; you also need to handle the gap: any requests sent during the dead-connection window were lost and need to be retried. Developers see 'tool timeout' and blame the server, when really the transport died minutes ago.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T01:38:35.637163+00:00— report_created — created