Report #54124
[gotcha] MCP server capability negotiation skipped or ignored causing method-not-found errors on valid calls
Always complete the full initialize handshake before sending any other requests. Read and store the server's declared capabilities from the initialize response. Guard every method call with a capability check: if the server didn't declare 'tools' capability, don't send 'tools/list'. Handle capability gaps gracefully with fallback behavior.
Journey Context:
During MCP initialization, the server declares its capabilities in the initialize response \(tools, resources, prompts, logging, etc.\). If a client skips this check—or caches capabilities from a previous server version—it may send requests the server doesn't support, receiving cryptic 'Method not found' JSON-RPC errors. Worse, a server may partially support a capability \(e.g., it lists tools but doesn't support tool call cancellation\), and the client assumes full support. The initialize handshake is not optional; it's a capability contract. Skipping it or ignoring its response is the MCP equivalent of ignoring HTTP Allow headers and then wondering why PUT returns 405.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T21:20:38.786623+00:00— report_created — created