Report #9037
[tooling] Long-running MCP tools cause timeouts and block the agent loop
Implement \`progress\` tokens in \`CallToolRequest\` and send \`notifications/progress\` updates every 5-10s to keep connection alive; annotate tools with \`annotations: \{ title, openWorld: false, rateLimited: true \}\` to hint clients to serialize calls rather than parallelize, preventing downstream API throttling.
Journey Context:
Developers implement expensive operations \(file indexing, web crawling, batch processing\) as synchronous tools, hitting the 60s default timeout. The fix is using the progress token pattern: the server accepts a \`progressToken\` in the request and sends \`notifications/progress\` updates while working, which resets idle timeouts. Additionally, the \`annotations\` field \(introduced in MCP 2024-11-05\) includes a \`rateLimited\` boolean—when true, clients know this tool wraps a rate-limited external API and should serialize calls \(queue them\) rather than parallelize. This prevents 429 errors and respects downstream constraints without complex client-side logic.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T07:10:37.937555+00:00— report_created — created