Uh oh!
There was an error while loading. Please reload this page.
fix: preserve experimental capability settings - #721
Conversation
@modelcontextprotocol/ext-apps@modelcontextprotocol/server-basic-preact@modelcontextprotocol/server-basic-react@modelcontextprotocol/server-basic-solid@modelcontextprotocol/server-basic-svelte@modelcontextprotocol/server-basic-vanillajs@modelcontextprotocol/server-basic-vue@modelcontextprotocol/server-budget-allocator@modelcontextprotocol/server-cohort-heatmap@modelcontextprotocol/server-customer-segmentation@modelcontextprotocol/server-debug@modelcontextprotocol/server-lazy-auth@modelcontextprotocol/server-map@modelcontextprotocol/server-pdf@modelcontextprotocol/server-scenario-modeler@modelcontextprotocol/server-shadertoy@modelcontextprotocol/server-sheet-music@modelcontextprotocol/server-system-monitor@modelcontextprotocol/server-threejs@modelcontextprotocol/server-transcript@modelcontextprotocol/server-video-resource@modelcontextprotocol/server-wiki-explorercommit: |
There was a problem hiding this comment.
Pull request overview
This PR updates the MCP Apps capability schema so experimental capabilities sent during ui/initialize preserve their namespaced keys and associated settings, instead of being parsed into empty objects.
Changes:
- Updated App and Host capability type definitions to model
experimentalas a keyed map instead of an empty object. - Regenerated Zod and JSON schemas so
experimentalis a record (preserving keys/settings) rather thanz.object({})(which strips unknown keys). - Extended the App ↔ Host initialization integration test to include
experimentalentries and assert they round-trip correctly.
Reviewed changes
Copilot reviewed 3 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/spec.types.ts | Changes experimental capability typing from {} to a keyed record type for both host and app capabilities. |
| src/generated/schema.ts | Updates Zod schemas to validate/preserve experimental as a record rather than stripping keys via z.object({}). |
| src/generated/schema.json | Updates the emitted JSON schema to allow arbitrary additionalProperties for experimental entries instead of rejecting/stripping them. |
| src/app-bridge.test.ts | Adds coverage ensuring experimental capabilities survive the initialization handshake intact. |
| specification/draft/apps.mdx | Updates the draft specification examples/types to document the new keyed experimental shape. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
idosal
left a comment
There was a problem hiding this comment.
Awesome. Thanks @victor-openai !
Uh oh!
There was an error while loading. Please reload this page.
kbsoso9999-maker
commented
Aug 23, 2026
/plugin marketplace add modelcontextprotocol/ext-apps |
kbsoso9999-maker
commented
Aug 23, 2026
|
Motivation
Experimental App and Host capability entries are parsed as empty objects, stripping namespaced declarations during
ui/initialize. Preserve their keys and settings in both capability maps.