SEP-3118: App-Rendered Elicitations for MCP Apps - #3118
Conversation
|
Following the MCP Apps working-group discussion, the concrete follow-up is now available:
The draft keeps this within the existing |
|
The coordinated public references are now aligned to protocol revision
The primary flow uses request-scoped client capabilities, server capabilities from No second extension, custom method, or custom result type is introduced. The Inspector is pinned to ext-apps commit The references are generic and contain no product-specific example details. |
| same underlying app resource. | ||
|
|
||
| The app's response action (`accept`, `decline`, or `cancel`) retains its core elicitation meaning. | ||
| The app **MUST NOT** directly retry the server operation or bypass the host's response handling. |
There was a problem hiding this comment.
MAY the app do app-initiated tool calls unrelated to the elicitation request?
There was a problem hiding this comment.
Oh this is interesting! I would need to think about this a little more since it's plausible that we get into a case of continued nesting of tool call triggers an MCP App which triggers an MCP App + Elicitation which can side-trigger another MCP Tool (potentially with it's own Elicitation or MCP App) 😵
My initial thought is that we should keep it simple and say no to this up front?
Motivation and context
This SEP proposes app-rendered form elicitations as an additive capability of the existing
io.modelcontextprotocol/uiextension.The proposal preserves a complete core form elicitation as the interoperable fallback and adds explicit
ui.resourceUrirouting for capable hosts. The primary flow is protocol revision2026-07-28:_meta["io.modelcontextprotocol/clientCapabilities"]server/discoverelicitation/createrequest inside an MRTRInputRequiredResultElicitResultunder the matchinginputResponseskey and retry withrequestStateLegacy initialized sessions use the same capability objects in the initialize exchange and may deliver the same semantic elicitation as a direct server-to-client request. No second extension, app-specific method, or custom result type is introduced.
Reference implementations:
Normative MCP Apps draft: modelcontextprotocol/ext-apps#733
Related discussion:
Sponsor requested from the MCP Apps Working Group.
AI assistance disclosure: This proposal was developed with substantial assistance from OpenAI Codex. I directed the design, reviewed the proposal and reference implementations, and validated the behavior.
Validation
PUPPETEER_SKIP_DOWNLOAD=true npm_config_cache=/private/tmp/mcp-sep-mint-cache npm run prepBreaking changes
None. The proposal is additive and preserves native core form elicitation as the fallback.
Types of changes
Checklist