Report #79222
[tooling] MCP server crashes when client doesn't support resources, or client errors when server announces unsupported capability
Always check \`protocolVersion\` and \`capabilities\` in the \`initialize\` handshake. Gate \`resources\`, \`tools\`, \`sampling\`, and \`logging\` behind capability flags; the client must not request methods if the server didn't announce the capability in \`server/capabilities\` during initialization.
Journey Context:
Developers often assume that if they implement a resource, the client supports it, or they forget to declare capabilities in the \`initialize\` response. The MCP protocol requires explicit capability negotiation during the initialization phase. If a server announces \`resources: \{\}\`, it commits to supporting \`resources/list\` and \`resources/read\`. If it doesn't announce it, the client must assume the capability is absent, preventing 'method not found' errors. This is critical for progressive enhancement: a tool-only client can safely ignore a server's resources. Servers that skip this negotiation crash or cause client errors when they try to send notifications the client didn't opt into \(like \`notifications/message\` requiring the \`logging\` capability\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T15:34:12.935001+00:00— report_created — created