Skip to content

SEP-2343: Clarify that elicitation requires authorization for remote servers#2343

Draft
pcarleton wants to merge 1 commit intomodelcontextprotocol:mainfrom
pcarleton:paulc/elicitation-auth-requirement
Draft

SEP-2343: Clarify that elicitation requires authorization for remote servers#2343
pcarleton wants to merge 1 commit intomodelcontextprotocol:mainfrom
pcarleton:paulc/elicitation-auth-requirement

Conversation

@pcarleton
Copy link
Copy Markdown
Member

@pcarleton pcarleton commented Mar 3, 2026

Summary

The elicitation spec requires servers to bind state to user identity (MUST bind elicitation requests to the client and user identity) and prohibits association with session IDs alone (State MUST NOT be associated with session IDs alone). However, MCP authorization is optional — making these requirements unsatisfiable for remote servers that don't implement auth.

This PR makes the dependency explicit:

  1. Adds a Warning in the Statefulness section stating that remote servers implementing elicitation SHOULD implement MCP authorization
  2. Adds a cross-reference in Security Considerations clarifying that identity binding requires authorization for remote servers

Context

This gap was surfaced during review of an H1 bug bounty report demonstrating phantom task injection via leaked session IDs. While the PoC relied on a non-compliant server (violating multiple existing MUSTs), the reviewers noted that the spec could be clearer about elicitation's implicit dependency on authorization.

Note: the Tasks spec already handles this well by explicitly acknowledging the no-auth case and providing a fallback (crypto-random IDs + short TTL). This PR brings elicitation's clarity in line with that approach.

The elicitation spec requires servers to bind state to user identity and
prohibits association with session IDs alone, but MCP authorization is
optional. This makes these requirements unsatisfiable for remote servers
without auth. Add an explicit warning and cross-reference to make this
dependency clear.
@pcarleton
Copy link
Copy Markdown
Member Author

cc @nbarbettini @wdawson wdyt about this change?

@nbarbettini
Copy link
Copy Markdown
Contributor

@pcarleton I support this change, but I think could be tightened further.

@wdawson and I discussed it in person and noticed this tension:

  • MCP authorization is optional, i.e. a public/anonymous server can be fully spec-compliant
  • However, as you've correctly pointed out here, there is no blessed way to satisfy elicitation's requirements without MCP authorization
  • Therefore, elicitation cannot be used in a public server, and the only blessed way to do elicitation in an authorized server is to implement MCP authorization as described.

Tldr - I think the warning could be elevated from SHOULD to MUST because there isn't really an alternative.

There's maybe also a case to be made for elevating the SHOULD in MCP authorization to a MUST for all non-public HTTP servers, but that is a bigger discussion. 🙂

@dend dend added auth security proposal SEP proposal without a sponsor. SEP labels Mar 3, 2026
@localden localden changed the title spec: clarify that elicitation requires authorization for remote servers SEP-2343: Clarify that elicitation requires authorization for remote servers Mar 15, 2026
@sep-automation-bot sep-automation-bot bot added draft SEP proposal with a sponsor. and removed proposal SEP proposal without a sponsor. labels Mar 18, 2026
@sep-automation-bot
Copy link
Copy Markdown

State Transition: proposal → draft

This SEP has been transitioned from proposal to draft.

@pcarleton has been assigned as the sponsor for this SEP.


This is an automated message from the SEP lifecycle bot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auth draft SEP proposal with a sponsor. security SEP

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants