modelcontextprotocol / modelcontextprotocol/ext-apps
Version negotiation mechanism exists but HOST behavior doesn't change based on negotiated version
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 2.9k
- Forks
- 387
- Avg merge
- 3h 21m
- Merged PRs (30d)
- 6
Description
We're implementing a HOST using AppBridge and noticed a structural gap between the specification and the current SDK implementation.
What the SDK does
The negotiation mechanism exists in _oninitialize (source):
const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(requestedVersion)
? requestedVersion
: LATEST_PROTOCOL_VERSION; // fallback to latest
However:
SUPPORTED_PROTOCOL_VERSIONScurrently contains only one entry ("2026-01-26")- Neither the HOST SDK nor the App SDK changes behavior based on the negotiated version
@mcp-ui/client'sonInitializedcallback doesn't exposeprotocolVersionto HOST implementors
The concern
When a second spec version is eventually added, HOSTs have no guidance on how to handle apps built against older versions. The MCP Apps spec defines that protocolVersion should be exchanged, but doesn't specify what should happen on a mismatch.
The SDK comment (source) says "Apps and hosts don't need to manage protocol versions manually", but there is currently no HOST implementation guide and no version-specific behavior in the SDK.
Questions
- Is there a plan to implement version-specific behavior in the SDK when a second spec version is added?
- Should HOST implementors handle version differences themselves, or will the SDK abstract this?
- Should
onInitializedin@mcp-ui/clientexpose the negotiatedprotocolVersionso HOSTs can act on it?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading _oninitialize in src/app-bridge.ts and the protocol-version comment near lines 210-214. Then inspect @mcp-ui/client's onInitialized callback. Done would require an agreed version-negotiation behavior and a documented decision about whether HOSTs receive the negotiated protocolVersion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100