Report #54343
[gotcha] MCP progress notifications can't be correlated to the correct concurrent tool call
Always pass a unique \`progressToken\` in the \`\_meta\` field of each tool call request. Track the mapping from progressToken to request ID in the client. When a progress notification arrives, look up the token to route it to the correct pending call. Never assume progress notifications arrive in order or map to the most recently sent request.
Journey Context:
MCP supports progress notifications for long-running tool calls via a \`progressToken\` in the request \`\_meta\` field. The server sends progress updates referencing this token. If the client doesn't track which token belongs to which request—or worse, reuses tokens across requests—progress notifications get misrouted. With concurrent tool calls, this means progress bar A updates based on tool B's progress. The tokens are optional, so many implementations skip them, then add progress support later without proper correlation logic. The result is confusing UX and potentially incorrect cancellation decisions if progress is used to determine timeouts.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T21:42:45.798233+00:00— report_created — created