Root entries in interaction responses use file:// URIs. An arbitrary resource URI is not a valid root merely because the resource is accessible to the server. Correct the root URI without fetching or probing the referenced filesystem location.
Requirement
Section titled “Requirement”A root URI in a roots response starts with file://.
Details
Section titled “Details”Rule ID: mcp.root.uri.file-scheme
Owner: mcp
Surface: Root · Path: uri
Kind: semantic
Requirement level: must
Protocol versions: independent of the MCP protocol version
Status: internal · Enforcement: internal
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 9.4
- 9. Tools: req-interaction-protocol-version-valid
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 Root, uri (“This must start with file:// for now”)
- Tier 1 — MCP schema.ts and normative specification text: MCP 2026-07-28 specification, Client Features, Roots, Data Types (uri MUST be a file:// URI)
Examples
Section titled “Examples”Invalid example
Section titled “Invalid example”Source: expected-invalid/invalid-tool-interaction-example-semantics.json · Selected: /tools/0/interactionExamples/broken/steps/3/response/roots/0
{ "uri": "https://example.com/not-a-file-root"}Rule Source Code
Section titled “Rule Source Code”interaction.yaml at immutable tag v0.9.0-rc.3.