Skip to main content
MCP Apps SDK
This documentation covers MCP Apps SDK v1.5.0 (@modelcontextprotocol/ext-apps).
import type {
  McpUiInitializeRequest,
  McpUiInitializeResult,
  McpUiOpenLinkRequest,
  McpUiOpenLinkResult,
  McpUiDownloadFileRequest,
  McpUiDownloadFileResult,
  McpUiMessageRequest,
  McpUiMessageResult,
  McpUiUpdateModelContextRequest,
  McpUiRequestDisplayModeRequest,
  McpUiRequestDisplayModeResult,
  McpUiResourceTeardownRequest,
  McpUiResourceTeardownResult,
  McpUiToolInputNotification,
  McpUiToolInputPartialNotification,
  McpUiToolResultNotification,
  McpUiToolCancelledNotification,
  McpUiHostContextChangedNotification,
  McpUiInitializedNotification,
  McpUiSizeChangedNotification,
  McpUiRequestTeardownNotification,
  AppRequest,
  AppNotification,
  AppResult,
  AppEventMap,
} from "@modelcontextprotocol/ext-apps";

Request / Result Types

Initialization

TypeMethodDirectionDescription
McpUiInitializeRequestui/initializeView → HostApp info, capabilities, protocol version
McpUiInitializeResultHost → ViewProtocol version, host info, capabilities, context

View → Host Requests

TypeMethodDescription
McpUiOpenLinkRequestui/open-linkOpen URL: { url: string }
McpUiOpenLinkResult{ isError?: boolean }
McpUiDownloadFileRequestui/download-fileDownload file: { contents: (EmbeddedResource | ResourceLink)[] }
McpUiDownloadFileResult{ isError?: boolean }
McpUiMessageRequestui/messageSend message: { role: "user"; content: ContentBlock[] }
McpUiMessageResult{ isError?: boolean }
McpUiUpdateModelContextRequestui/update-model-contextUpdate context: { content?; structuredContent? }
McpUiRequestDisplayModeRequestui/request-display-modeRequest mode: { mode: McpUiDisplayMode }
McpUiRequestDisplayModeResult{ mode: McpUiDisplayMode } (actual mode set)

Host → View Requests

TypeMethodDescription
McpUiResourceTeardownRequestui/resource-teardownGraceful shutdown: {}
McpUiResourceTeardownResult{}

Notification Types

Host → View

TypeMethodDescription
McpUiToolInputNotificationui/notifications/tool-inputComplete tool arguments
McpUiToolInputPartialNotificationui/notifications/tool-input-partialStreaming partial arguments
McpUiToolResultNotificationui/notifications/tool-resultTool execution result
McpUiToolCancelledNotificationui/notifications/tool-cancelledTool execution cancelled
McpUiHostContextChangedNotificationui/notifications/host-context-changedPartial context update

View → Host

TypeMethodDescription
McpUiInitializedNotificationui/notifications/initializedInitialization complete
McpUiSizeChangedNotificationui/notifications/size-changedUI size change: { width?; height? }
McpUiRequestTeardownNotificationui/notifications/request-teardownApp requests host to tear it down

Union Types

These union types group all possible message types in the protocol. They are useful for building generic message handlers, routers, or middleware that processes any protocol message.
TypeDescription
AppRequestUnion of all request types: initialization, View → Host requests (openLink, downloadFile, sendMessage, updateModelContext, requestDisplayMode, sendLog, sendSizeChanged), proxied MCP server requests (callServerTool, readServerResource, listServerResources), Host → View requests (resourceTeardown), and ping
AppNotificationUnion of all notification types in both directions: Host → View (toolInput, toolInputPartial, toolResult, toolCancelled, hostContextChanged) and View → Host (initialized, sizeChanged, requestTeardown)
AppResultUnion of all result types corresponding to each request type
import type { AppRequest, AppNotification, AppResult } from "@modelcontextprotocol/ext-apps";

// Example: generic message logger
function logMessage(msg: AppRequest | AppNotification | AppResult) {
  console.log(`[${msg.method}]`, msg);
}

Event Maps

Type-safe maps of event names to notification params types, used by addEventListener / removeEventListener.
import type { AppEventMap } from "@modelcontextprotocol/ext-apps";
import type { AppBridgeEventMap } from "@modelcontextprotocol/ext-apps/app-bridge";
TypeSideEvents
AppEventMapView (App)toolinput, toolinputpartial, toolresult, toolcancelled, hostcontextchanged
AppBridgeEventMapHost (AppBridge)sizechange, sandboxready, initialized, requestteardown, loggingmessage

Method Constants

Type-safe string constants for protocol method names.
import {
  INITIALIZE_METHOD,
  INITIALIZED_METHOD,
  OPEN_LINK_METHOD,
  DOWNLOAD_FILE_METHOD,
  MESSAGE_METHOD,
  REQUEST_DISPLAY_MODE_METHOD,
  REQUEST_TEARDOWN_METHOD,
  RESOURCE_TEARDOWN_METHOD,
  SIZE_CHANGED_METHOD,
  TOOL_INPUT_METHOD,
  TOOL_INPUT_PARTIAL_METHOD,
  TOOL_RESULT_METHOD,
  TOOL_CANCELLED_METHOD,
  HOST_CONTEXT_CHANGED_METHOD,
} from "@modelcontextprotocol/ext-apps";
ConstantValue
INITIALIZE_METHOD"ui/initialize"
INITIALIZED_METHOD"ui/notifications/initialized"
OPEN_LINK_METHOD"ui/open-link"
DOWNLOAD_FILE_METHOD"ui/download-file"
MESSAGE_METHOD"ui/message"
REQUEST_DISPLAY_MODE_METHOD"ui/request-display-mode"
REQUEST_TEARDOWN_METHOD"ui/notifications/request-teardown"
RESOURCE_TEARDOWN_METHOD"ui/resource-teardown"
SIZE_CHANGED_METHOD"ui/notifications/size-changed"
TOOL_INPUT_METHOD"ui/notifications/tool-input"
TOOL_INPUT_PARTIAL_METHOD"ui/notifications/tool-input-partial"
TOOL_RESULT_METHOD"ui/notifications/tool-result"
TOOL_CANCELLED_METHOD"ui/notifications/tool-cancelled"
HOST_CONTEXT_CHANGED_METHOD"ui/notifications/host-context-changed"

Other Constants

ConstantValueDescription
LATEST_PROTOCOL_VERSION"2026-01-26"Current protocol version
RESOURCE_MIME_TYPE"text/html;profile=mcp-app"MIME type for MCP App resources
RESOURCE_URI_META_KEY"ui/resourceUri"Deprecated metadata key for tool-resource linkage
EXTENSION_ID"io.modelcontextprotocol/ui"Extension identifier for capability negotiation

Zod Schemas

Every type has a corresponding Zod schema exported for runtime validation. Schema names follow the pattern {TypeName}Schema (e.g., McpUiThemeMcpUiThemeSchema).

Core Type Schemas

import {
  McpUiThemeSchema,
  McpUiDisplayModeSchema,
  McpUiHostContextSchema,
  McpUiHostCapabilitiesSchema,
  McpUiAppCapabilitiesSchema,
  McpUiHostCssSchema,
  McpUiHostStylesSchema,
  McpUiSupportedContentBlockModalitiesSchema,
} from "@modelcontextprotocol/ext-apps";
SchemaValidates
McpUiThemeSchemaMcpUiTheme"light" or "dark"
McpUiDisplayModeSchemaMcpUiDisplayMode"inline", "fullscreen", "pip"
McpUiHostContextSchemaMcpUiHostContext — theme, styles, locale, dimensions, etc.
McpUiHostCapabilitiesSchemaMcpUiHostCapabilities — host feature flags
McpUiAppCapabilitiesSchemaMcpUiAppCapabilities — app-declared features
McpUiHostCssSchemaMcpUiHostCss — host CSS (fonts)
McpUiHostStylesSchemaMcpUiHostStyles — style variables + CSS
McpUiSupportedContentBlockModalitiesSchemaMcpUiSupportedContentBlockModalities — text, image, audio, etc.

Initialization Schemas

import {
  McpUiInitializeRequestSchema,
  McpUiInitializeResultSchema,
  McpUiInitializedNotificationSchema,
} from "@modelcontextprotocol/ext-apps";
SchemaValidates
McpUiInitializeRequestSchemaMcpUiInitializeRequest — View → Host init
McpUiInitializeResultSchemaMcpUiInitializeResult — Host → View init response
McpUiInitializedNotificationSchemaMcpUiInitializedNotification — View → Host init complete

Request / Result Schemas

import {
  McpUiOpenLinkRequestSchema,
  McpUiOpenLinkResultSchema,
  McpUiDownloadFileRequestSchema,
  McpUiDownloadFileResultSchema,
  McpUiMessageRequestSchema,
  McpUiMessageResultSchema,
  McpUiUpdateModelContextRequestSchema,
  McpUiRequestDisplayModeRequestSchema,
  McpUiRequestDisplayModeResultSchema,
  McpUiResourceTeardownRequestSchema,
  McpUiResourceTeardownResultSchema,
} from "@modelcontextprotocol/ext-apps";
SchemaValidates
McpUiOpenLinkRequestSchemaMcpUiOpenLinkRequest — open URL request
McpUiOpenLinkResultSchemaMcpUiOpenLinkResult — open URL result
McpUiDownloadFileRequestSchemaMcpUiDownloadFileRequest — download file request
McpUiDownloadFileResultSchemaMcpUiDownloadFileResult — download file result
McpUiMessageRequestSchemaMcpUiMessageRequest — send message request
McpUiMessageResultSchemaMcpUiMessageResult — send message result
McpUiUpdateModelContextRequestSchemaMcpUiUpdateModelContextRequest — update context request
McpUiRequestDisplayModeRequestSchemaMcpUiRequestDisplayModeRequest — display mode request
McpUiRequestDisplayModeResultSchemaMcpUiRequestDisplayModeResult — display mode result
McpUiResourceTeardownRequestSchemaMcpUiResourceTeardownRequest — teardown request
McpUiResourceTeardownResultSchemaMcpUiResourceTeardownResult — teardown result

Notification Schemas

import {
  McpUiToolInputNotificationSchema,
  McpUiToolInputPartialNotificationSchema,
  McpUiToolResultNotificationSchema,
  McpUiToolCancelledNotificationSchema,
  McpUiHostContextChangedNotificationSchema,
  McpUiSizeChangedNotificationSchema,
  McpUiRequestTeardownNotificationSchema,
} from "@modelcontextprotocol/ext-apps";
SchemaValidates
McpUiToolInputNotificationSchemaMcpUiToolInputNotification — tool arguments
McpUiToolInputPartialNotificationSchemaMcpUiToolInputPartialNotification — streaming partial arguments
McpUiToolResultNotificationSchemaMcpUiToolResultNotification — tool result
McpUiToolCancelledNotificationSchemaMcpUiToolCancelledNotification — tool cancelled
McpUiHostContextChangedNotificationSchemaMcpUiHostContextChangedNotification — context update
McpUiSizeChangedNotificationSchemaMcpUiSizeChangedNotification — size change
McpUiRequestTeardownNotificationSchemaMcpUiRequestTeardownNotification — app-initiated teardown request

Metadata Schemas

import {
  McpUiResourceCspSchema,
  McpUiResourcePermissionsSchema,
  McpUiResourceMetaSchema,
  McpUiToolVisibilitySchema,
  McpUiToolMetaSchema,
} from "@modelcontextprotocol/ext-apps";
SchemaValidates
McpUiResourceCspSchemaMcpUiResourceCsp — CSP configuration
McpUiResourcePermissionsSchemaMcpUiResourcePermissions — browser permissions
McpUiResourceMetaSchemaMcpUiResourceMeta — resource UI metadata
McpUiToolVisibilitySchemaMcpUiToolVisibility — tool visibility
McpUiToolMetaSchemaMcpUiToolMeta — tool UI metadata