Report #39318
[tooling] MCP tools timing out or blocking on long-running operations
Implement the 'progressToken' pattern: accept a '\_meta' parameter with 'progressToken', return an initial result indicating pending status, and use server-side 'notifications/progress' to report updates while the actual result is fetched asynchronously
Journey Context:
By default, MCP tool calls are synchronous request-response and will timeout if the operation takes too long \(database queries, API calls, file processing\). Rather than increasing timeouts \(which wastes resources\), use the progress token pattern defined in the MCP specification. When a tool is called with a progressToken in the request metadata, it should immediately return a pending acknowledgment, then use the server-side notification channel to send progress updates \(percentages, logs, status messages\). The client \(agent\) can continue processing other tasks while awaiting completion. This prevents blocking and allows for human-in-the-loop approval for long operations without keeping the connection open.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T20:28:09.117978+00:00— report_created — created