Server capabilities have defined members rather than arbitrary top-level names. Remove unknown members or use the experimental or extensions maps where the applicable protocol version allows them. MCP Description specification extensions follow their own x- rules.
Requirement
Section titled “Requirement”A server Capabilities Object contains only the capabilities the applicable MCP protocol version defines; custom capabilities go in experimental and, from MCP 2026-07-28, in extensions.
Details
Section titled “Details”Rule ID: mcp.server-capabilities.members
Owner: mcp
Surface: ServerCapabilities
Kind: structural
Requirement level: must
Document schema locations: #/$defs/capabilities, #/$defs/capabilityPrompts, #/$defs/capabilityResources, #/$defs/capabilityTools, #/$defs/extensionCapabilities
Status: arbitrated · 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, Sections 8.2 and 8.4
- 8. Capabilities: req-capabilities-closed
-
- Capabilities: req-extensions-identifier-form
-
- Specification Extensions: req-extension-ineligible-locations
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 ServerCapabilities (no index signature)
- Tier 1 — MCP schema.ts and normative specification text: MCP 2024-11-05 to 2026-07-28 schema.ts, ServerCapabilities doc comment (“this is not a closed set: any server can define its own, additional capabilities”)
Gaps and arbitrations
Section titled “Gaps and arbitrations”x-* properties are MCP Description specification extensions, not capabilities; native projection removes them.
Examples
Section titled “Examples”Valid example
Section titled “Valid example”Source: expected-valid/client-capability-requirements.json · Selected: /capabilities/0
{ "protocolVersions": [ "2026-07-28" ], "extensions": { "io.modelcontextprotocol/ui": {} }}Invalid example
Section titled “Invalid example”Source: expected-invalid/unknown-server-capability.json · Selected: /capabilities/0
{ "tools": {}, "acmeReplay": {}}Rule Source Code
Section titled “Rule Source Code”capabilities.yaml at immutable tag v0.9.0-rc.3.