MCP Appをホストする
McpAppFrameがiframeとSDKブリッジを管理します。リソースを読み込み、ツールの結果を渡し、ホストが対応するコールバックを有効にします。アプリは任意のUIフレームワークで作成できます。
ここで試す
天気予報を取得し、日付を選び、アプリ内から更新できます。全画面表示やピクチャーインピクチャーを試してから戻っても、選択内容は保持されます。上部のテーマコントロールもアプリに反映されます。
スクリプトによるデモです。LLMやAPIキーは必要ありません。
アプリの状態: 接続中。
ローカルデモを読み込み中…
仕組み
MCPツールはui:// HTMLリソースを宣言します。接続されたクライアントがそのリソースを読み込み、McpAppFrameに渡します。
SDKブリッジがサンドボックス内のアプリを初期化し、ホスト機能、Materialスタイル変数、ライトモードまたはダークモード、コンテナーの寸法を渡します。
ホストがツールの入力と結果を送信します。McpAppProviderはuseToolCallを通じてMaterialコンポーネントから利用できるようにします。
アプリはサーバーツールの呼び出し、表示モードの要求、モデルコンテキストの更新、チャットメッセージの追加を要求できます。有効にする機能はホストが決めます。
開発を始める
McpAppFrameがiframeとSDKブリッジを管理します。リソースを読み込み、ツールの結果を渡し、ホストが対応するコールバックを有効にします。アプリは任意のUIフレームワークで作成できます。
McpAppProviderがアプリをホストに接続します。ツール呼び出しを読み取り、ホスト機能を利用し、ライトモードまたはダークモードに従い、使い慣れたMaterialコンポーネントを使えます。
import { Material3Provider } from '@language-lit/material3-expressive'
import { McpAppFrame, useMcpAppResource } from
'@language-lit/material3-expressive-mcp-apps'
export function ToolApp({ client, uri, toolResult }) {
const { resource, error } = useMcpAppResource(client, uri)
if (error) return <p role="alert">{error.message}</p>
return <Material3Provider>
{resource && <McpAppFrame client={client} resource={resource}
toolResult={toolResult} title="Tool app" sandboxUrl={sandboxUrl}
onAuthorizeToolCall={authorizeToolCall} />}
</Material3Provider>
}各ドキュメントでは連携パッケージのスタイルシートより先にコアのスタイルシートを読み込みます。スタートガイドではローカルへのインストールとアプリリソースの登録方法を説明します。
互換性
このプレビューではext-appsと分割されたMCPクライアント/サーバーSDKの2.0.0、Material 3 Expressiveの1.3.0-rc.1、React 19でテストしています。連携パッケージはReact 18と19をpeer依存関係として宣言しています。外部ホストとの相互運用性は認定されていません。
全画面表示は終了操作を備えたCSS表示モードで、モーダルダイアログではありません。ホストのライトモードまたはダークモードは自動で反映されます。カスタムMaterialパレットを反映するにはテーマの共有が必要です。この連携パッケージはコアのMaterial準拠マトリックスには含まれません。