Report #43085
[gotcha] Slow MCP tool blocks entire agent loop with no timeout — no timeout field exists in the spec
Implement client-side timeouts on every \`tools/call\` request \(30–60 seconds is reasonable\). For inherently slow operations, design tools to return immediately with a job ID and provide a separate \`check\_status\` or \`get\_result\` tool. Never let a tool call block indefinitely.
Journey Context:
The MCP specification defines \`tools/call\` as a synchronous request-response with no timeout field or deadline parameter. If a tool implementation hangs \(network call to a slow API, infinite loop in processing, waiting on a lock\), the agent loop blocks forever. There is no standard mechanism for the client to signal 'this is taking too long.' Developers assume the framework handles timeouts, but most MCP client implementations don't set one by default. The async pattern \(return job ID \+ poll\) requires more tool design effort but is the only reliable pattern for operations that may exceed a few seconds.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T02:47:36.986259+00:00— report_created — created