脱・ただのチャット!MCP Apps導入でAIツールに「操作可能なUI」をブチ込む最短ルート
貴様が持ってきたのは MCP (Model Context Protocol) Apps の仕様だな。これが何なのか、なぜエンジニアの血と汗を節約してくれるのか、腕立て伏せをしながらでも読めるように叩き込んでやる。
準備はいいか?サー、イエス、サーと言え!
一言で言えば、「AIチャット画面の中に、外部ツールが独自のUIを直接ブチ込むための共通規格」だ。
今までのAIツールは、テキストを返すか、せいぜいグラフを出すのが限界だった。だが、このプロトコルを使えば、サーバー側から「このボタンとフォームをチャット画面に表示しろ」と命令できる。
従来のMCP
AIが裏側でデータを取ってくるだけ。
MCP Apps
AIの回答欄に、インタラクティブなミニアプリが出現する。
なぜこれが必要なのか、そのメリットを脳に刻み込め!
UI開発からの解放
チャットUIそのものを作る必要はない。仕様に沿ってJSONを投げるだけで、リッチな操作画面がユーザーに届く。
コンテキストの維持
ユーザーがいちいち別タブで管理画面を開く必要がなくなる。「この設定を変えて」と言われたら、その場で設定用UIを出せばいい。
標準化
各AIプラットフォームごとにプラグインを書き直す無駄な労力をドブに捨てる必要がなくなる。
導入の手順は至ってシンプルだ。貴様のような新兵でも3ステップで終わる!
SDKのインストール
npm や pip で公式SDKを叩き込む。
App定義の作成
どのようなUI(ボタン、テキスト入力など)を表示するか定義する。
サーバーの起動
MCPサーバーとしてホストし、対応しているクライアント(ホストアプリ)に接続する。
いいか、これは「ユーザーのタスク一覧を表示し、その場で完了チェックを入れさせるUI」を出すためのイメージだ。
// 貴様の汚いコードを洗練されたTypeScriptで書き直してやる!
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
const server = new McpServer({
name: "TaskCommander",
version: "1.0.0",
});
// Appの定義:これがUIとしてレンダリングされる
server.app("task_manager", {
parameters: {},
render: async () => {
return {
// Reactに似た宣言的なUIコンポーネントを返す
ui: {
type: "vstack",
children: [
{ type: "text", content: "現在の任務一覧だ!直ちに遂行せよ!" },
{
type: "button",
label: "サーバー再起動任務を完了",
action: "complete_task",
data: { id: "reboot-01" }
},
{ type: "button", label: "撤退(キャンセル)", action: "cancel" }
]
}
};
}
});
// サーバー起動!
async function run() {
const transport = new StdioServerTransport();
await server.connect(transport);
}
run().catch(console.error);
このプロトコルを使いこなせば、貴様が作ったツールは単なる「文字のやり取り」から、「AIと一体化した強力な武器」へと進化する。
無駄なUI実装に時間を溶かすのは今日で終わりだ。仕様書(公式リポジトリ)を100回読み込んで、さっさと実装に戻れ!