You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
add app-rendered form elicitation capability types to ModelContextProtocol.Extensions.Apps
advertise server support as elicitation: {} inside the existing io.modelcontextprotocol/ui extension
use effective request-scoped client capabilities on 2026-07-28, with initialized-session fallback for older revisions
preserve _meta.ui.resourceUri when the elicitation is embedded in an MRTR InputRequest
document the public, server-agnostic MRTR flow
Design
There is no separate app-elicitation extension package or extension identifier. Negotiation requires:
core client elicitation.form
client MCP Apps MIME support
client io.modelcontextprotocol/ui.elicitation
server io.modelcontextprotocol/ui.elicitation
McpAppElicitation.SetAppUiIfSupported attaches an absolute ui:// resource at _meta.ui.resourceUri without changing the core ElicitRequestParams. On protocol revision 2026-07-28, the request-context overload reads the capabilities carried by the current request; older initialized sessions use the server's negotiated capabilities.
The server embeds the request with InputRequest.ForElicitation. The host validates the app's standard ElicitResult, places it under the matching MRTR inputResponses key, and retries the original request with requestState. Unsupported clients receive the unchanged request for native form rendering.
The primary flow uses request-scoped client capabilities, server capabilities from server/discover, and the core MRTR shape: the server embeds the ordinary elicitation/create request in InputRequiredResult; the host validates the App's standard ElicitResult, places it under the matching inputResponses key, and retries the originating request with requestState.
No second extension, custom method, or custom result type is introduced. The Inspector is pinned to ext-apps commit 89ab2bc. The MCP Apps View↔Host bridge independently negotiates Apps protocol version 2026-01-26; that is separate from core MCP 2026-07-28.
The references are generic and contain no product-specific example details.
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
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
ModelContextProtocol.Extensions.Appselicitation: {}inside the existingio.modelcontextprotocol/uiextension2026-07-28, with initialized-session fallback for older revisions_meta.ui.resourceUriwhen the elicitation is embedded in an MRTRInputRequestDesign
There is no separate app-elicitation extension package or extension identifier. Negotiation requires:
elicitation.formio.modelcontextprotocol/ui.elicitationio.modelcontextprotocol/ui.elicitationMcpAppElicitation.SetAppUiIfSupportedattaches an absoluteui://resource at_meta.ui.resourceUriwithout changing the coreElicitRequestParams. On protocol revision2026-07-28, the request-context overload reads the capabilities carried by the current request; older initialized sessions use the server's negotiated capabilities.The server embeds the request with
InputRequest.ForElicitation. The host validates the app's standardElicitResult, places it under the matching MRTRinputResponseskey, and retries the original request withrequestState. Unsupported clients receive the unchanged request for native form rendering.Normative MCP Apps draft: modelcontextprotocol/ext-apps#733.
Core protocol context: modelcontextprotocol/modelcontextprotocol#3118.
TypeScript SDK reference: modelcontextprotocol/typescript-sdk#2578.
Validation
McpAppElicitationTestson .NET 8: 12 passedMcpAppElicitationTestson .NET 9: 12 passedMcpAppElicitationTestson .NET 10: 12 passeddotnet format --verify-no-changesfor the changed C# filesgit diff --check