Report #94291
[gotcha] MCP tool calls show no progress despite server supporting progress reporting — appears to hang
Include a \_meta.progressToken in the request params when you want progress updates for long-running operations. The server checks for this token and, if present, sends progress notifications. Without it, even progress-capable servers send nothing. Generate a unique token per request and handle the corresponding notifications/progress messages.
Journey Context:
MCP supports progress reporting for long-running operations, but it is opt-in at the request level. The client must include a progressToken in the \_meta field of the request. The server then sends progress notifications referencing that token. If you do not include the token, the server has no way to know you want progress, and you will see a tool call appear to hang for minutes with no feedback. This is especially problematic for tools that perform file I/O, large computations, or network requests that take more than a few seconds. The token also enables cancellation: the client can send a cancellation notification referencing the request ID. Many developers assume progress is automatic because the server declares progress capability, but capability only means the server will honor progressToken if provided.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T16:51:17.695647+00:00— report_created — created