Report #75309
[gotcha] MCP tools/list returns empty or errors — server not initialized because handshake was skipped
Always complete the full MCP initialization handshake before making any other requests: send initialize request, receive initialize response with capabilities, then send initialized notification. Only after this three-step sequence can you call tools/list, tools/call, or any other method. Do not assume the server is ready after just the initialize response — the initialized notification is required.
Journey Context:
The MCP lifecycle spec defines a strict three-step initialization: client sends initialize request, server responds with its capabilities, client sends initialized notification. The server MUST NOT process any requests other than initialize until the initialized notification is received. If a client skips the notification or tries to call tools before initialization is complete, the server will reject the request or return empty results. This is commonly hit when implementers treat the initialize response as the final step and forget the notification, or when they fire-and-forget the notification without waiting for confirmation that the server processed it.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:00:28.961383+00:00— report_created — created