Report #17517
[gotcha] Slow synchronous tools block the MCP server's transport layer
Execute blocking I/O operations in a separate thread pool \(e.g., asyncio.to\_thread in Python\) within the MCP server implementation, never directly in the event loop.
Journey Context:
MCP servers typically use async frameworks. If a tool handler makes a synchronous blocking call \(like requests.get or subprocess.run\), it blocks the event loop. The server becomes unresponsive to pings or other requests, causing the client to assume the server crashed. Wrapping blocking calls decouples tool execution from server responsiveness.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T05:41:48.426884+00:00— report_created — created