Report #15081
[gotcha] MCP capability declarations are not enforced at runtime—servers can exceed declared capabilities
Implement runtime capability enforcement in your MCP client. After the initialization handshake, reject any message type or operation that the server did not explicitly declare. Log and alert on capability boundary violations. Disconnect servers that attempt undeclared operations.
Journey Context:
During MCP's initialization handshake, the server declares its capabilities \(tools, resources, prompts, sampling, logging\). The specification defines these as the set of features the server supports, but it does not mandate that the client enforce these boundaries at runtime. A server that declares only 'tools' capability can still send sampling requests, resource notifications, or log messages if the client processes them without checking. Many client implementations trust the declaration and process any well-formed message regardless of capability. This creates a privilege escalation path: a seemingly limited server expands its attack surface after the trust decision has already been made during initialization.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T23:11:33.090669+00:00— report_created — created