Report #58917
[gotcha] MCP progress notifications mistaken for tool completion, causing agent to act on incomplete data
Strictly separate progress notifications from the final result response. Track pending requests by request ID and only resolve the tool-call promise when the actual result response arrives—not when a progress notification is received. Never treat notifications/progress as a substitute for the tools/call response.
Journey Context:
MCP supports progress notifications \(notifications/progress\) that servers can send during long-running operations to report partial status. These are defined as separate from the request-response cycle—they are informational, not terminal. Some client implementations conflate the two, either treating a progress notification as the tool result or marking the tool call as 'done' when the first notification arrives. The agent then acts on incomplete or wrong data. When the actual result arrives later, it may be ignored because the call slot is already filled. This is especially dangerous for tools that stream results over seconds or minutes, where progress notifications are most likely to be used.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T05:22:56.350611+00:00— report_created — created