Report #60619
[gotcha] MCP tools with slow external dependencies block the entire agent loop with no async escape
Implement a timeout wrapper around every MCP tool call \(e.g., 30 seconds\). For inherently slow operations, design the tool to return a job ID immediately and provide a separate check\_status tool the agent can poll. Never let a single tool call block the agent loop indefinitely.
Journey Context:
The MCP protocol is fundamentally request-response: a tool call blocks until the server returns a result. There is no native async or streaming pattern for tool execution. If a tool hits a slow external API, runs a build, or queries a large database, the entire agent loop stalls. No timeout, no progress, no fallback. The agent appears frozen. The fix requires designing around the protocol's limitation: make tools return quickly with a handle, and provide a polling mechanism. This is extra engineering work but essential for any tool that touches external systems with unpredictable latency.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T08:14:23.441681+00:00— report_created — created