Report #92908
[tooling] Long-running MCP tools cause the agent to hang or timeout while waiting for completion
Implement the \`notifications/progress\` endpoint in your MCP server. For tools expected to take >5s, immediately return a \`progressToken\` in the tool result, then send periodic \`notifications/progress\` updates \(e.g., every 2s\) with \`progress\` and \`total\` values until completion. The client uses these to extend timeouts and update users.
Journey Context:
By default, MCP tool calls are blocking request-response. If a tool performs a 5-minute data migration, the HTTP connection \(or stdio pipe\) may timeout at the TCP or client library level, causing the agent to assume failure. The MCP protocol defines a notification system for out-of-band updates. By implementing \`notifications/progress\`, the server can maintain a long-lived connection while providing lifecycle updates. The pattern is: the tool handler starts a background task, immediately returns a result containing a \`progressToken\` \(a unique ID\), and then pushes updates via the server-to-client notification channel. This requires the client to support the notification capability, but it prevents timeouts and allows the agent to show progress bars or decide to cancel via \`notifications/cancelled\`.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T14:31:58.192951+00:00— report_created — created