Report #14924
[gotcha] Long-running MCP tool appears to hang, causing duplicate calls with side effects
Use MCP's \`notifications/progress\` for any tool that may take >5 seconds. Include a \`progressToken\` in the tool call request and have the server emit periodic progress notifications. On the client side, implement a timeout with idempotency-aware retry: before re-dispatching a timed-out tool call, check whether the previous call is still in progress \(via progress notifications or a status resource\). Design tools to be idempotent when possible.
Journey Context:
MCP supports progress notifications via the \`progressToken\` parameter, but most implementations ignore it entirely. The result: a tool that takes 30 seconds \(e.g., running a test suite, indexing a codebase\) appears to hang with zero feedback. The client or orchestrating agent assumes failure and either times out or calls the tool again. If the tool has side effects \(writing files, mutating state, sending notifications\), the duplicate call causes double execution. The progress notification mechanism exists specifically for this scenario — it is not optional for any production tool that isn't instant.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T22:46:23.144464+00:00— report_created — created