Client capabilities and their settings change across MCP protocol versions. Check each declared requirement against every version in the primitive’s effective scope. Split variants when a requirement cannot be represented consistently across that scope.
Requirement
Section titled “Requirement”Each client capability requirement and nested member exists in every applicable protocol version’s ClientCapabilities type, with object values and a boolean listChanged.
Details
Section titled “Details”Rule ID: mcp.client-capabilities.protocol-shape
Owner: mcp
Surface: ClientCapabilities · Path: clientRequirements
Kind: structural
Requirement level: must
Status: internal · Enforcement: internal
Protocol version applicability
Section titled “Protocol version applicability”2024-11-05 |
2025-03-26 |
2025-06-18 |
2025-11-25 |
2026-07-28 |
|---|---|---|---|---|
| applies | applies | applies | applies | applies |
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 8.5
- 8. Capabilities: req-client-requirements-protocol-version-valid
-
- Capabilities: req-client-requirements-values
-
- Capabilities: req-client-requirements-extensions
Based on
Section titled “Based on”- Tier 1 — MCP schema.ts and normative specification text: MCP 2024-11-05 to 2026-07-28 schema.ts, interface ClientCapabilities (members and nested members per protocol version)
Examples
Section titled “Examples”Valid example
Section titled “Valid example”Source: expected-valid/client-capability-requirements.json · Selected: /tools/0/clientRequirements
{ "tasks": { "requests": { "sampling": { "createMessage": {} } } }}Invalid example
Section titled “Invalid example”Source: expected-invalid/protocol-version-incompatible-client-capability-requirements.json · Selected: /tools/0/clientRequirements
{ "tasks": { "list": {} }}Invalid example
Section titled “Invalid example”Source: expected-invalid/invalid-client-requirement-value.json · Selected: /tools/0/clientRequirements/roots
{ "listChanged": "yes"}Rule Source Code
Section titled “Rule Source Code”capabilities.yaml at immutable tag v0.9.0-rc.3.