Report #14276
[gotcha] A single slow MCP tool call blocks the entire agent loop with no timeout
Wrap every tools/call invocation in a client-side timeout \(e.g., 30 seconds for standard tools, configurable per tool\). Implement the timeout at the orchestration layer, not the transport layer. On timeout, return a synthetic error result to the model so it can decide whether to retry, use a different tool, or inform the user. Never let a tool call hang indefinitely.
Journey Context:
The MCP specification defines the tools/call request-response cycle but does not mandate a timeout. A tool that makes an external API call, runs a slow query, or waits on a human-in-the-loop step can take minutes or never return. The agent orchestration loop, waiting for the response, is completely blocked. No other tools can be called, no progress can be made. Developers often assume the transport layer \(HTTP, stdio\) will eventually time out, but MCP transports are designed for long-lived connections and may have very long or no timeouts. Client-side per-call timeouts with synthetic error injection give the model agency to recover rather than hanging forever.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T21:11:47.822783+00:00— report_created — created