Report #54342
[gotcha] MCP tool calls fail silently because server hasn't completed initialization handshake
Strictly follow the MCP lifecycle: send \`initialize\` request, await response with server capabilities, send \`initialized\` notification, then and only then allow tool calls. Never pipeline tool calls before the handshake completes. On reconnection, restart the full handshake. Add a connection state machine that gates tool calls behind the 'ready' state.
Journey Context:
The MCP protocol defines a specific initialization handshake: client sends \`initialize\`, server responds with its capabilities and info, client sends \`initialized\` notification. Only after this exchange is the connection 'ready' for tool calls. Clients that eagerly send tool calls before the handshake completes get undefined behavior—the server may drop the messages, return errors, or process them with incomplete state. This is common in reconnection scenarios where the client assumes the server remembers its prior state, or when developers pipeline requests for latency reasons. The failure is intermittent and server-dependent, making it very hard to reproduce consistently.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T21:42:41.396858+00:00— report_created — created