SEP: Attested Tool-Server Admission (ATSA)#2809
Open
metereconsulting wants to merge 6 commits into
Open
Conversation
The original PR (modelcontextprotocol#2777) was closed by accident; GitHub refused to reopen it because the head fork had been deleted in the meantime. This branch is re-submitted as PR modelcontextprotocol#2809, so the SEP file name, title, table fields, and index entries are updated to match the new number. No specification content changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a new Standards Track SEP: Attested Tool-Server Admission (ATSA).
New file:
seps/0000-attested-tool-server-admission.md(I'll rename it to the PR number once assigned, per the SEP guidelines).ATSA is an optional, purely additive admission layer. A server publishes a small, offline-signed clearance assertion at a well-known URI; a host verifies it against a locally pinned trust root before any tool dispatch; admitting a server is kept distinct from authorizing its tools via a closed per-server tool allow-list; and every admission decision is auditable. No existing MCP message changes shape — an unextended host ignores the mechanism and behaves exactly as today.
Motivation (the gap in the current spec)
A host today takes a server's identity and its advertised
tools/liston faith, so a prompt-injected model can drive a destructive tool on any server it connects to. This is exploitable in every deployment, and disqualifying + unauditable for regulated operators (NIST SP 800-53 AC-3/AC-4/AC-6, AU-2/AU-9). TLS answers "did I reach the named endpoint"; the authorization profile answers "may this user use this server"; nothing answers the third question — is this server one the host is authorized to use as a tool provider, and at what sensitivity?Why this belongs in the spec, not a per-vendor layer
It can be built above MCP today — but additive ≠ interoperable. Bolted on by one vendor, attestation secures only that vendor's island. The payoff ("attested" as a claim any host can check; servers publishing one document instead of N vendor dialects; SDKs shipping the gate on by default) only materializes once a single format is agreed, and only the spec owner can mint that Schelling point.
Evidence (written from a production prototype, not theory)
extensions/mcp-attested(plus a Google Workspace bridge inextensions/mcp-google-workspace). Includes a JSON Schema, an error registry, and machine-checkable conformance vectors.Backward compatibility
None broken. The assertion lives at a well-known URI (RFC 8615); the tool allow-list is host-side state; no existing message changes shape. Unextended hosts and servers are unaffected — incremental rollout.
Design-principles alignment
The SEP's Rationale maps the proposal to all eight MCP design principles and addresses the two most likely objections head-on — Composability over specificity ("can't this just be an extension?") and Stability over velocity ("permanent cost"). It leads with Demonstration over deliberation: the mechanism is already in production. It is also written to satisfy the SEP-2484 conformance requirement out of the box — every MUST/SHOULD is already enumerated as a vector in the reference implementation.
Sponsor
Seeking a sponsor — this sits in the security / authorization scope, and was raised in
#security-igand#auth-igfor validation. Happy to walk through it at a Core Maintainer meeting.AI-assistance disclosure (per CONTRIBUTING.md)
The author originated and directed this work and independently verified every factual claim, citation, and normative statement; an AI agent was used only as a mechanical drafting aid.