Report #100734
[gotcha] Client timeouts often fail to send \`notifications/cancelled\`, leaving servers running orphaned work
When a request times out, send \`notifications/cancelled\` for its request ID; make tool handlers idempotent and safe to abort; do not assume a missing response means the server stopped.
Journey Context:
The MCP spec says senders SHOULD issue a cancellation notification after a timeout, but at least one major SDK historically raised a timeout exception without sending one. The server therefore keeps executing, wasting resources and possibly mutating state. Cancellation is best-effort and racy, so tools must also be safe if a cancellation arrives late or never.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-02T05:00:31.188445+00:00— report_created — created