Add app-rendered elicitation support to MCP Apps - #1723
Conversation
ac13c74 to
5fd0c8d
Compare
|
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. |
…-elicitation-results
Add an AOT-safe host validation helper for accepted app-rendered form results, including defaults and actionable value-free errors. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: fa0e1618-463c-40d3-a1c7-2563c23e8c42
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