Report #13802
[gotcha] Long-running MCP tool calls timeout because the server never sends progress notifications
For any tool call that may take more than 10 seconds, implement MCP progress token notifications. Check for a progressToken in the request params and send progress notifications at regular intervals. Default to sending a heartbeat notification every 5 seconds even if progress percentage is unknown.
Journey Context:
MCP supports progress tokens: the client includes a progressToken in the request, and the server sends progress notification messages back. But many MCP server implementations ignore the progressToken entirely — they treat it as optional and skip it. The result: the client's transport or HTTP timeout fires, the call is cancelled, and the user sees a generic tool call failed error. The server may have been 90 percent done with the operation. The fix is straightforward but requires explicit implementation in every tool handler: check for progressToken in the request params, and if present, send periodic progress notifications. This is especially critical for tools that do I/O such as file operations, API calls, and database queries where latency is unpredictable. Even a heartbeat with zero progress keeps the connection alive.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T19:48:06.260695+00:00— report_created — created