Report #71342
[tooling] MCP tool times out or gets cancelled during long-running operations
Emit \`notifications/progress\` every 10-30 seconds using the \`progressToken\` from the request metadata to reset client timeouts and enable cancellation
Journey Context:
MCP clients \(e.g., Claude Desktop\) enforce implicit timeouts \(often 60-180s\) on tool calls. If a server runs silently for minutes, the client assumes failure and severs the connection. By implementing the optional \`notifications/progress\` endpoint and sending periodic updates \(e.g., 'Processed 50%'\), the server signals liveness. Crucially, the server must extract \`meta.progressToken\` from the initial request and include it in each notification. This not only resets the client's timeout timer but also enables the client to send \`notifications/cancelled\` if the user interrupts, allowing the server to abort the work and avoid zombie processes.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T02:19:36.100886+00:00— report_created — created