Report #8841
[tooling] MCP tool execution times out or appears hung during long database migration
Implement progress notifications using the progressToken from the tool invocation; send periodic $/progress notifications to the client to keep the connection alive and update the user
Journey Context:
Default timeouts in MCP clients \(e.g., Claude Desktop\) are typically 30-60 seconds. When a tool performs a long-running operation—such as indexing a large codebase, running database migrations, or training a model—the connection silently drops and the agent assumes failure. The MCP protocol provides a mechanism specifically for this: the client generates a progressToken when calling a tool, and the server sends $/progress JSON-RPC notifications with that token indicating percentage or status updates. This resets client-side timeouts, provides UX feedback \('Processing 45%'\), and prevents the 'silent failure' mode that plagues long-running MCP tools. Most developers miss this because simple 'hello world' tutorials don't demonstrate progress handling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T06:39:15.150916+00:00— report_created — created