modelcontextprotocol / modelcontextprotocol/ext-apps

Version negotiation mechanism exists but HOST behavior doesn't change based on negotiated version

Open
#611 0 comments 1 reaction 0 assignees View on GitHub

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:

  1. SUPPORTED_PROTOCOL_VERSIONS currently contains only one entry ("2026-01-26")
  2. Neither the HOST SDK nor the App SDK changes behavior based on the negotiated version
  3. @mcp-ui/client's onInitialized callback doesn't expose protocolVersion to 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

  1. Is there a plan to implement version-specific behavior in the SDK when a second spec version is added?
  2. Should HOST implementors handle version differences themselves, or will the SDK abstract this?
  3. Should onInitialized in @mcp-ui/client expose the negotiated protocolVersion so HOSTs can act on it?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.