2 min read
OpenAI Apps SDK — MCP に UI を載せる
openaimcpapps-sdkui
Apps SDK とは
MCP サーバーに UI を追加できるフレームワーク。ChatGPT、Claude、VS Code などで動作する。
構成要素:
- MCP サーバー: ツールとリソースを定義
- Web コンポーネント: iframe で描画される UI
セットアップ
npm install @modelcontextprotocol/sdk @modelcontextprotocol/ext-apps zod
コード例
UI リソースの登録
import { registerAppResource, RESOURCE_MIME_TYPE } from "@modelcontextprotocol/ext-apps/server";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
const server = new McpServer({
name: "my-app",
version: "1.0.0"
});
registerAppResource(
server,
"dashboard",
"ui://widget/dashboard.html",
{},
async () => ({
contents: [{
uri: "ui://widget/dashboard.html",
mimeType: RESOURCE_MIME_TYPE,
text: `<html>...</html>`
}]
})
);
UI 付きツールの登録
import { registerAppTool } from "@modelcontextprotocol/ext-apps/server";
import { z } from "zod";
registerAppTool(
server,
"show_metrics",
{
title: "show_metrics",
inputSchema: {
period: z.enum(["day", "week", "month"])
},
_meta: {
ui: { resourceUri: "ui://widget/dashboard.html" }
},
},
async ({ period }) => {
const data = await fetchMetrics(period);
return {
structuredContent: { data },
content: [{ type: "text", text: `Metrics for ${period}` }],
};
}
);
プロジェクト構成
app/
server/ # MCP サーバー
index.ts
web/
src/
component.tsx # React コンポーネント
dist/
component.js # ビルド済み
所感
MCP でツールを定義して、UI で結果を可視化する流れ。Claude Code でも使える。
データ分析やダッシュボード系のツールと相性が良さそう。