Report #75326
[gotcha] Long-running MCP tool appears to hang with no feedback — progressToken was not sent
Always include a \_meta.progressToken in tool call requests when the tool may take more than a few seconds. Implement progress notification handling on the client side to display or log progress. For tools with unpredictable execution time, set a reasonable timeout and use progress notifications to distinguish 'working slowly' from 'hung'.
Journey Context:
The MCP spec defines progress notifications: if a tools/call request includes \_meta.progressToken, the server MAY send progress/notifications with progress and total fields. But if no progressToken is sent, the server has no way to send progress — the spec doesn't define a mechanism for unsolicited progress updates. This means long-running tools \(database migrations, large file processing, API calls to slow external services\) appear to hang with no feedback. The client cannot distinguish between 'still working' and 'crashed'. The fix is simple \(send a progressToken\) but often overlooked because the spec makes it optional and most example code omits it entirely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:01:59.826105+00:00— report_created — created