Skip to content
{mcpdesc}

Match client requirements to the protocol version

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.

Each client capability requirement and nested member exists in every applicable protocol version’s ClientCapabilities type, with object values and a boolean listChanged.

Rule ID: mcp.client-capabilities.protocol-shape
Owner: mcp
Surface: ClientCapabilities · Path: clientRequirements
Kind: structural
Requirement level: must
Status: internal · Enforcement: internal

2024-11-05 2025-03-26 2025-06-18 2025-11-25 2026-07-28
applies applies applies applies applies

Source: expected-valid/client-capability-requirements.json · Selected: /tools/0/clientRequirements

{
"tasks": {
"requests": {
"sampling": {
"createMessage": {}
}
}
}
}

Source: expected-invalid/protocol-version-incompatible-client-capability-requirements.json · Selected: /tools/0/clientRequirements

{
"tasks": {
"list": {}
}
}

Source: expected-invalid/invalid-client-requirement-value.json · Selected: /tools/0/clientRequirements/roots

{
"listChanged": "yes"
}

capabilities.yaml at immutable tag v0.9.0-rc.3.