Report #81694
[gotcha] MCP initialization handshake incomplete — server hangs waiting for initialized notification
Complete the full initialization sequence: client sends initialize request, server responds with capabilities, client sends initialized notification. Only then may other requests proceed. Keep server initialization fast — defer heavy setup \(DB connections, model loading\) to lazy init on first tool call. Implement client-side timeouts with clear error messages for slow initialization. Never skip the initialized notification.
Journey Context:
The MCP lifecycle requires a strict initialization handshake. Some implementations skip the initialized notification thinking the initialize response is sufficient, causing spec-compliant servers to hang waiting for it. Other times, the server performs heavy work during initialization \(loading ML models, connecting to databases\), causing client timeouts. The error is often cryptic — not 'initialization timeout' but 'connection failed' or 'server not responding'. The fix is two-fold: keep the init handler lightweight \(defer heavy work to first tool call\), and always complete the full three-step handshake. The initialized notification is not optional — it signals that the client has processed the server's capabilities and is ready.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T19:43:12.803583+00:00— report_created — created