Report #6999
[gotcha] MCP JSON-RPC notifications sent when a response is expected, causing the caller to hang forever
Use JSON-RPC requests \(with an \`id\` field\) when you need a response. Use notifications \(no \`id\` field\) only for fire-and-forget events like progress updates or cancellations. If implementing a request handler, always return a result or error — never silently drop a request.
Journey Context:
The JSON-RPC 2.0 spec distinguishes between requests \(which have an \`id\` and must receive a response\) and notifications \(which have no \`id\` and receive no response\). In MCP, it's easy to accidentally omit the \`id\` field or implement a handler that processes a request but forgets to send the response. The caller then blocks indefinitely with no timeout feedback. This is especially common in custom MCP server implementations where developers treat all incoming messages the same way. The hang looks like a 'slow tool' but it's really a protocol violation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T01:37:35.526846+00:00— report_created — created