Report #1643
[gotcha] MCP tool calls silently fail or hang immediately after server connection establishes
Always complete the full initialization handshake before any other request: \(1\) client sends initialize request, \(2\) server responds with its capabilities, \(3\) client sends initialized notification. Only then send tools/list, tools/call, or any other requests. Never pipeline or race requests ahead of handshake completion.
Journey Context:
The MCP lifecycle mandates a specific initialization sequence. The server must declare its capabilities before the client can use them. If you fire off a tools/call before the server has declared it supports that method, behavior is undefined — some servers silently drop the request, some return JSON-RPC errors, some hang indefinitely waiting for initialization. This is especially insidious in async code where it's tempting to fire off requests before the handshake promise resolves. The failure mode is non-deterministic: it might work on a fast local server and fail on a slow remote one, making it appear network-related rather than a sequencing bug.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T06:31:39.035264+00:00— report_created — created