The document root has the required mcpdesc, info, and protocolVersions members, only the members of Section 3.2, and non-empty ordinary collections. Failures inside a root member belong to the rule that owns that member’s schema location; this rule reports root-level failures.
Requirement
Section titled “Requirement”A document validates against the JSON Schema for its declared mcpdesc version. This rule owns the document root and generic JSON values; every other schema location belongs to a more specific rule.
Details
Section titled “Details”Rule ID: mcpdesc.document.schema
Owner: mcpdesc
Surface: Document
Kind: structural
Requirement level: Not specified in the rule record
Protocol versions: independent of the MCP protocol version
Document schema locations: #, #/$defs/jsonValue, #/$defs/specificationExtensionValue
Status: internal · Enforcement: internal
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 16.1, item 7
- 16. Conformance: req-document-schema
-
- Document Structure: req-root-fields
-
- Document Structure: req-closed-objects
-
- Document Structure: req-ordinary-collections-non-empty
-
- Document Structure: req-ordinary-collections-omitted
-
- Versioning: req-mcpdesc-required
-
- Versioning: req-mcpdesc-version
-
- Versioning: req-version-check
-
- Info Object: req-info-required
-
- Transports: req-transports-non-empty
-
- Capabilities: req-capabilities-non-empty
-
- Tags: req-tags-non-empty
-
- Tags: req-tags-omitted
-
- Conformance: req-conforming-document
-
- Specification Extensions: req-extension-names
-
- Specification Extensions: req-extension-unknown-accepted
-
- Serialization: req-serialization-empty-collections
The optional root $schema does not select the schema used for validation: optional-schema-omitted.json omits it and validates against the schema for its mcpdesc version.
Examples
Section titled “Examples”Valid example
Section titled “Valid example”Source: expected-valid/optional-schema-omitted.json · Selected: whole document
Show whole fixture
{ "mcpdesc": "0.9.0", "info": { "name": "schema-omitted", "version": "1.0.0" }, "protocolVersions": [ "2026-07-28" ]}Invalid example
Section titled “Invalid example”Source: expected-invalid/empty-ordinary-root-collections.json · Selected: /capabilities
[]Invalid example
Section titled “Invalid example”Source: expected-invalid/empty-tag-catalog-reference.json · Selected: /tags
[]Rule Source Code
Section titled “Rule Source Code”document.yaml at immutable tag v0.9.0-rc.3.