Skip to content

Add app-rendered elicitation support to MCP Apps - #1723

Draft
krubenok wants to merge 7 commits into
modelcontextprotocol:mainfrom
krubenok:feature/apps-elicitation-integrated
Draft

krubenok wants to merge 7 commits into
modelcontextprotocol:mainfrom
krubenok:feature/apps-elicitation-integrated

Conversation

@krubenok

@krubenok krubenok commented Jul 23, 2026 •

Copy link
Copy Markdown

Summary

Add app-rendered form elicitation conventions to ModelContextProtocol.Extensions.Apps. The normative proposal is entirely contained in the MCP Apps extension: modelcontextprotocol/ext-apps#733. Core SEP-3118 is closed because no core protocol change is required.

Negotiation uses the nested elicitation: {} setting on the existing io.modelcontextprotocol/ui extension on both peers, together with core elicitation.form and Apps MIME support. McpAppElicitation.SetAppUiIfSupported attaches an absolute ui:// resource at _meta.ui.resourceUri without changing the core elicitation types. Unsupported clients retain native form rendering.

The request-context overload uses effective request-scoped client capabilities on 2026-07-28, with initialized-session fallback for older revisions. Metadata survives InputRequest.ForElicitation; the host returns the App's standard ElicitResult through the existing MRTR flow. Accepted content must match the requested schema; explicit decline/cancel results do not trigger fallback.

Includes capability types, metadata and result-validation helpers, documentation, and focused tests. No separate extension package, method, result type, or core protocol change is introduced.

TypeScript reference: modelcontextprotocol/typescript-sdk#2578.

Validation

Rebased on C# SDK main b9faee70.

  • Apps and app-elicitation tests on .NET 8: 83 passed.
  • Apps and app-elicitation tests on .NET 10: 83 passed.
  • Apps package build for .NET Standard 2.0: passed, no warnings or errors.
  • .NET 9 build succeeded; test execution could not run because this machine lacks the .NET 9 runtime.
  • git diff --check: passed.

@jeffhandley jeffhandley added this to the 2.x milestone Jul 27, 2026
@krubenok
krubenok force-pushed the feature/apps-elicitation-integrated branch from ac13c74 to 5fd0c8d Compare July 29, 2026 16:24
@krubenok krubenok changed the title Prototype app-rendered elicitation in MCP Apps Add app-rendered elicitation support to MCP Apps Jul 29, 2026
@krubenok

krubenok commented Jul 29, 2026 •

Copy link
Copy Markdown
Author

The coordinated public references are now aligned to protocol revision 2026-07-28:

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.

krubenok and others added 7 commits October 25, 2026 19:58
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
Require hierarchical ui:// resource URIs and merge elicitation into existing typed and JSON MCP Apps server capabilities without losing existing settings.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 19b7c141-8708-451b-b194-0c029b8e79a1
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@krubenok
krubenok force-pushed the feature/apps-elicitation-integrated branch from d5fe141 to 11509f2 Compare October 26, 2026 03:07

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants