Report #101647
[gotcha] MCP client and server assume capabilities and fail cryptically
Fail fast during initialization: check advertised capabilities before using features; declare only capabilities you implement; return clear errors when required capabilities are missing.
Journey Context:
Capability negotiation happens in the initialize handshake, but many implementations skip the check and call methods like prompts/list or resources/list unconditionally. The spec says these methods are only valid when the capability is advertised, yet popular clients and servers both violate this. The result is -32601 Method not found, silent degradation, or servers that continue with an empty tool set. The robust pattern is to treat capabilities as a contract: servers declare exactly what they support, clients gate every optional feature on the negotiated capability map, and both sides fail fast with a descriptive message when the contract is insufficient.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-07T05:12:37.263402+00:00— report_created — created