MCPツールの応答がテキストだけでは物足りない。データベースの検索結果もダッシュボードの指標も、すべて文章に変換されて返ってくる。Laravel MCPパッケージの新機能「MCP Apps」を使えば、AIチャットの中にインタラクティブなHTML画面を直接表示できます。
この記事でわかること:
- MCP Appsとは何か、従来のテキスト応答と何が違うのか
- Laravel MCP Appsの導入手順
- Blade一枚でUIを構築する方法
- ツールの可視性制御とLocketの実例
MCP Appsとは
MCP Apps は、MCPツールがテキストではなくインタラクティブなHTMLを返せるようにする公式拡張仕様です。2026年1月にModel Context Protocolの公式ブログで発表され、Claude、Claude Desktop、VS Code Copilot、ChatGPT、Gooseがすでに対応しています。
ホスト側はサンドボックス化されたiframeでHTMLをレンダリングします。このiframe内のアプリは、MCPサーバー上のツールを直接呼び出したり、AIモデルにメッセージを送り返したりできます。認証やAPIを別途用意する必要はありません。
従来のMCPツールでは、数百行のデータを取得しても、モデルがテキストで要約するしかありませんでした。ユーザーが「先週のデータだけ見たい」「売上順に並べ替えたい」と思うたびに、プロンプトを入力し直す必要があります。MCP Appsなら、ソート・フィルター・ドリルダウンといった操作をUI上で直接実行できます。
Laravel MCP Appsの仕組み
Laravel MCPパッケージ v0.7.0(2026年4月21日リリース)で、MCP Apps対応が追加されました。実装を担当したのはPushpak Chhajed氏です。
MCP Appsのプロトコル実装には、いくつかの面倒なステップが伴います。MCPハンドシェイク時のio.modelcontextprotocol/uiケイパビリティ宣言、ui://URIスキームとtext/html;profile=mcp-appのMIMEタイプ指定、iframe向けのCSPヘッダー調整、ダークモード対応の設定などです。
Laravel MCPパッケージはこれらをすべて自動化します。開発者はPHPクラスとBladeビューだけに集中できます。
導入手順
Artisanコマンド1つでスキャフォールドが完了します。生成されるのはPHPリソースクラスとBladeビューの2ファイルです。
Bladeビューでは <x-mcp::app> コンポーネントを使います。このコンポーネントがMCP Apps用のJavaScript SDKを自動でインライン展開するため、npmもViteもCDN設定も不要です。
Tailwind CSSとAlpine.jsを使いたい場合は、リソースクラスにLibrary列挙型の属性を1つ追加するだけです。スクリプトタグの挿入、Alpine.jsの[x-cloak]スタイル設定、ホストのdata-theme属性に合わせたダークモード設定がすべて自動で行われます。
ツールとアプリを紐づけるには #[RendersApp] アトリビュートを使います。これにより _meta.ui.resourceUri がツール定義に注入され、サーバーがUIケイパビリティを自動で公開します。
ツールの可視性制御
UIを持つアプリでは、iframe側からだけ呼び出したいツールが出てきます。たとえば「現在のページデータを取得する」ツールは、AIモデルが推論に使うものではなく、UIの内部実装です。
Visibility::App を指定すると、そのツールはモデルのツール一覧から完全に除外されます。iframe内のapp.callServerTool(...)からのみ呼び出し可能です。選択肢は Model(モデルのみ)、App(UIのみ)、両方(デフォルト)の3つです。
実例:Locket
Locketは、Laravel公式が公開しているオープンソースのMCPサーバーです。MCP Appsの実装例として2つのアプリが含まれています。
TrendingLinksApp は、その日のブックマーク数が多いリンクをカード形式で表示します。ユーザーはリンクを開く、ブックマークする、「要約して」とモデルに依頼する操作をすべてUI上で完結できます。
UnreadQueueApp は、未読ブックマークの一覧を表示する個人用リーディングキューです。認証が必要なため、未認証ユーザーにはアプリ読み込み前にエラーを返します。
どちらもPHPリソースクラスは約12行で、UIのロジック・HTML・CSS・Alpine.jsの記述はすべてBlade 1ファイルに収まっています。ビルドツールは一切使っていません。
対応クライアントと今後
MCP Appsは、Claude、Claude Desktop、VS Code Copilot、ChatGPT、Gooseで利用できます。MCP公式の最初の拡張仕様として策定されたため、今後対応クライアントはさらに増える見込みです。
Laravelを使っているなら、既存のMCPサーバーにUI層を追加するハードルは低いです。Bladeとの統合がスムーズなので、フロントエンドのビルド環境を新たに構築する必要がありません。テキスト応答では伝えきれないデータをAIチャット内で直接操作できる仕組みとして、試す価値があります。
