SEP: HTTP Message Signing for MCP Client Authentication#2752
Open
njdawn wants to merge 4 commits into
Open
Conversation
Adds a draft SEP proposing RFC 9421 HTTP Message Signatures as an optional, additive proof-of-possession client-authentication mechanism for MCP. Supersedes the dormant SEP-1415 with technical-feedback fixes: correct RFC 9421 component/parameter semantics, prohibition of the `alg` parameter, Accept-Signature negotiation, nonce-based replay protection, Signature-Agent key distribution for init-less mode, and a stable-identity `tag` that survives key rotation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per SEP-1850, rename the file from 0000- to 2752- now that the PR number is known, and update the header to match. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Reformatted the SEP markdown per prettier (italics, table spacing). - Ran `npm run generate:seps` to produce docs/seps/2752-*.mdx and update docs/seps/index.mdx + docs/docs.json. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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 draft SEP proposing RFC 9421 HTTP Message Signatures as an optional, additive proof-of-possession client-authentication mechanism for MCP. It supersedes the dormant SEP-1415 with the technical-feedback fixes from that thread, and is complementary to (not in competition with) SEP-1932 (DPoP).
Why this proposal
MCP currently authenticates clients with bearer tokens (OAuth access tokens, API keys,
MCP-Session-Id). That model has well-known structural weaknesses that the rest of the web has been migrating away from:(@method, @target-uri, content-digest, mcp-protocol-version, mcp-session-id)binds the credential to this specific request.created+noncecollapse that window to single-digit minutes.tagprovides a stable, unforgeable client identifier across key rotations.The acute use case is wallet-based and high-stakes authentication — MCP servers brokering on-chain transactions, payments, secret stores, or production database writes. A leaked bearer in those settings drains a wallet or exfiltrates secrets with no recovery. Proof-of-possession lets the wallet key itself become the natural MCP client credential.
What's different from SEP-1415
The 1415 thread surfaced a series of RFC-compliance issues that this draft addresses explicitly, with citations:
algparameter creates substitution-attack riskkty+crvper RFC 9421 §7.3.5createdlisted as a signed componentcreatedis a signature parameter (§2.2), not a componentAccept-Signatureresponse header (§3.3)(tag, nonce)cache (§2.3)Signature-Agentheader (draft-meunier-http-message-signatures-directory) for first contact (§2.6.1)MCP-Protocol-Versionnot in signaturetagparameter as stable client ID (§2.5);signatures/rotateKeymethod (§3.4)cnfinclientInfofor sessioned,Signature-Agentfor stateless (§2.6)Relationship to in-flight work
Signature-Agent.Status
rmcp; client-side TypeScript fetch wrapper on the official SDK) planned and will be linked once a sponsor advances this toIn-Review.Checklist
cc: potential reviewers from the closed 1415 thread who provided technical feedback: @dickhardt @jricher @dadrus @fsiyavud @spacewander @covia-dev — your input shaped this draft.