Report #35649
[gotcha] MCP server rejects requests with cryptic errors — 'Server not initialized' or connection drops
Always complete the full \`initialize\` request → server response → \`initialized\` notification handshake before sending \`tools/list\`, \`tools/call\`, or any other MCP request. Do not pipeline requests before the handshake completes.
Journey Context:
The MCP spec defines a mandatory initialization lifecycle: the client sends an \`initialize\` request, the server responds with its capabilities, and the client sends an \`initialized\` notification. Only after this exchange can the client send any other requests. If you skip this or race ahead \(e.g., sending \`tools/list\` immediately after \`initialize\` without waiting for the response\), the server will reject the request. This is especially easy to get wrong with async code where you fire-and-forget the initialize call. The spec is clear but the error messages from servers vary widely — some return JSON-RPC errors, some just close the connection.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T14:19:00.197332+00:00— report_created — created