postMessage. Each connection has its own protocol version. The core MCP lifecycle depends on the negotiated revision, while the MCP Apps connection has its own initialization handshake.
This distinction matters when an app works as a normal MCP tool but its UI does not render, or when the View renders but a host-mediated feature is missing.
The Four Versions
The date-based protocol versions are independent. A Host can support a given core MCP version without supporting MCP Apps, and an MCP Apps-capable Host may expose only some optional View APIs.
The current MCP Apps SDK exports
LATEST_PROTOCOL_VERSION as "2026-01-26". Use the SDK
handshake instead of copying this string into View code.Two Independent Protocol Layers
1. Host ↔ Server in sunpeak 0.20.x
The core MCPinitialize request negotiates the core protocol version. An MCP Apps Host also advertises the UI extension under capabilities.extensions:
getUiCapability() reads the extension without tying your server to a specific Host name.
Core MCP 2026-07-28 removes this handshake and carries the version, identity, and capabilities on each request. sunpeak 0.20.x uses the v1 MCP SDK and does not yet speak that modern wire protocol. See MCP 2026-07-28 for MCP Apps for the compatibility boundary and migration checklist.
2. View ↔ Host
The View performs a separate MCP Apps handshake over the iframe’spostMessage transport. The App class sends ui/initialize, reads the negotiated result, then sends ui/notifications/initialized.
appInfo.version identifies this View build. It does not select the MCP Apps protocol version. App.connect() handles that protocol detail.
Capability Checks Still Matter
Matching protocol versions do not mean every optional feature is available. Check the capabilities returned by the Host before showing controls that depend on them:Compatibility Rules
- Use
App.connect()for Views andAppBridgefor Hosts so the SDK handles MCP Apps version negotiation. - Use
getUiCapability()before registering UI-enabled server tools. - Keep meaningful text in tool result
contentso clients without MCP Apps support still work. - Treat Host capabilities as feature gates for server tools, resources, messages, sampling, downloads, and links.
- Register one-shot View handlers, including
ontoolinputandontoolresult, beforeconnect(). - Use
_meta.ui.resourceUrifor tool-to-View linkage. The flat_meta["ui/resourceUri"]key exists only for compatibility with older Hosts. - Upgrade the core MCP SDK and MCP Apps SDK together when their peer dependency ranges require it.
Diagnose a Version or Capability Mismatch
Primary References
MCP Apps 2026-01-26 Specification
Stable extension specification for resources, metadata, lifecycle, and View messages.
Core MCP 2026-07-28 Versioning
Current per-request version negotiation and legacy compatibility.
MCP 2026-07-28 for MCP Apps
What the stateless core revision changes for servers and what stays the same for Views.
Protocol Reference
MCP Apps types, schemas, method constants, and current SDK protocol constant.
Capability Detection
Server-side detection and text fallback pattern.