Report #5022
[gotcha] An MCP tool call hangs or times out with no progress signal
Set explicit timeouts on every tool invocation, run blocking work in a thread pool or async task, and emit progress notifications using the progressToken in CallToolRequest.Meta. For calls that can legitimately exceed ~10 seconds, model them as MCP Tasks returning a job ID instead of blocking JSON-RPC.
Journey Context:
The MCP spec defines progress notifications and cancellation, but many servers block the JSON-RPC request. A real Claude Code bug shows the host failing to attach a progressToken, so progress notifications did not reset the idle timeout and the call was cancelled even though the server completed successfully. FastMCP's timeout only covers thread-pool tools; run\_in\_thread=False sync tools can still hang the event loop.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T20:31:34.678521+00:00— report_created — created