Replies: 1 comment
-
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Pre-submission Checklist
Your Idea
Example
Call
display-pdfw/o mandatory "url" parameter results in custom iframe with elicitationScreen.Recording.2026-03-02.at.19.16.46.mov
Implementation details can be found in THIS BRANCH
Motivation
MCP servers can currently pause a tool call and request structured user input from the client via
elicitation/create. This works well when the client is Claude Desktop or another host that renders its own native elicitation UI.However, in the ext-apps model, the app running inside the iframe is better positioned to handle elicitation - it has domain-specific context and can render a purpose-built form instead of a generic dialog. For example, a PDF viewer app can show a URL input field with appropriate validation and placeholder text, rather than relying on the host's generic form renderer.
Today there's no way for a server's elicitation/create request to reach the app iframe.
Proposal
Add end-to-end plumbing so that elicitation/create flows from the server through the host and bridge into the app:
elicitation/createrequests forwarded by the bridgeHosts that want to support this would need to:
Declare elicitation: {} in client capabilities during initialize
Call AppBridge.setupElicitationForwarding(client) — this returns a setBridge callback that handles request buffering and forwarding automatically
Call setBridge(appBridge) after the app has completed ui/initialize
The helper encapsulates the timing gap between the server sending elicitation/create (which can happen immediately during tools/call execution) and the app iframe being ready to handle it.
Open questions
Scope
Beta Was this translation helpful? Give feedback.
All reactions