Report #82315
[gotcha] MCP tool calls sent before initialization handshake completes fail with unhelpful errors
Strictly await the full initialization sequence \(initialize request → initialize response → initialized notification\) before sending any tools/call, tools/list, or other requests. Add explicit state tracking in the client: do not allow requests until state is 'initialized'. Log clear errors if a request is attempted before initialization.
Journey Context:
The MCP lifecycle spec requires a three-step handshake: client sends initialize request, server responds with capabilities, client sends initialized notification. Only after this sequence are requests allowed. But in practice, eager client implementations sometimes fire tool calls immediately after receiving the initialize response, before sending the initialized notification. The server must reject these with an error, but the error message is often generic \('Server not initialized'\) without pointing to the lifecycle violation. This is especially common in reconnection scenarios where the client assumes the server remembers its state.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T20:45:27.821050+00:00— report_created — created