Report #44217
[gotcha] MCP SSE transport reconnects but in-flight JSON-RPC requests are lost with no way to know if they were processed
Implement per-request timeouts and retry logic; design tool calls to be idempotent where possible \(use idempotentHint annotation\); track in-flight request IDs and on reconnection, either retry or query state; use the Last-Event-ID header for event replay but don't assume it covers request-response pairs.
Journey Context:
The SSE transport supports reconnection via the Last-Event-ID header, but this only covers server-to-client event replay. Any JSON-RPC request that was in-flight \(sent but no response received\) at the moment of disconnection is in an ambiguous state — the server may have processed it, or it may have been lost. For non-idempotent operations \(create\_resource, delete\_file\), retrying risks duplication and not retrying risks dropping the operation. There is no built-in mechanism to resolve this ambiguity.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T04:41:16.469908+00:00— report_created — created