Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MCP ✖️ Apps SDKを触ってみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
hisuzuya
October 22, 2025
Technology
690
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MCP ✖️ Apps SDKを触ってみた
hisuzuya
October 22, 2025
More Decks by hisuzuya
See All by hisuzuya
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
610
AIが自分でバグを見つけて直す時代が来た
hisuzuya
0
46
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
1.1k
Other Decks in Technology
See All in Technology
データエンジニアリングとドメイン駆動設計
masuda220
PRO
14
2.5k
”AIを使う” から ”AIに任せる” へ ─ 開発プロセスを再設計してAIを組織標準にするまで
cyberagentdevelopers
PRO
2
140
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
190
テックカンファレンス三大ステークホルダーの文化人類学 ─ 違いを認め合う関係性作り
bash0c7
1
240
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
480
人とエージェントが高め合う協業設計
kintotechdev
0
760
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
170
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
210
【公開用】AI_Dev_Ex2026_AI_登壇資料
matsuritechnologies
PRO
2
500
AI_Dev_Day_製造業領域でのAI活用から見た活用の罠と成功に導く実践知.pdf
kintotechdev
0
170
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1.1k
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
550
Featured
See All Featured
Between Models and Reality
mayunak
4
380
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
520
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
190
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.7k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
410
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
370
Ethics towards AI in product and experience design
skipperchong
2
330
Transcript
MCP Apps SDKを触って みた 株式会社RAYVEN 鈴山英寿 1
自己紹介 hisuzuya (鈴山) 経歴 学生時代 プログラミングメンター・受託 開発 大手Web系 (webサービス/生成AI利活用) (現在)
株式会社RAYVEN(CTO) 専門分野 Web開発(特にフロントエンド) AIを活用したソリューションの企画・開発 2
アジェンダ 1. MCPとは - Model Context Protocolの概要 2. Apps SDKとは
- ChatGPT Apps SDKの紹介 3. デモ・実例紹介 - 実際の活用事例 3
MCP について 4
MCPとは Model Context Protocol(モデルコンテキストプロトコル) AIアプリケーションとデータソースを接続するJSON-RPC仕様に基づいた標準化さ れたプロトコル MCPの基本構造 JSON-R MCP Cl
MCP Se ファイルシ データベ AP 5
JSON-RPCとは リモートプロシージャコール(RPC)プロトコル JSON-RPC: JSON形式でリモート関数を呼び出す軽量プロトコル 言語非依存: あらゆるプログラミング言語で実装可能 非同期対応: 複数リクエストの並列処理が可能( id で対応付け)
JSON-RPC の基本構造 リクエスト/レスポンス // Request { "jsonrpc": "2.0", "id": 1, "method": "メソッド名", "params": {...} } // Response { "jsonrpc": "2.0", "id": 1, "result": {...} } 6
MCPの規格整理 主要な4つの要素 要素 役割 具体例 Tools AIが実行できる具体的な機能 計算、API呼び出し Resources AIがアクセスするデータ
ローカルファイル、データベース、API Prompts 定型的な指示テンプレート 「コードレビューして」などの定型文 Sampling AIが別のAIに相談する機能 mcp client 側のLLMへのリクエスト機能 7
MCPのtool呼び出しの通信フロ ー 1. 初期化: プロトコルバージョン確認 2. 機能確認: 利用可能なツール一覧取 得 3.
ツール実行: 実際のデータ取得 4. 結果返却: AIが次のアクションを判 断 8
1. 初期化フェーズ 1/3 Client → Server(initialize request) { "jsonrpc": "2.0",
"id": 0, // リクエストとレスポンスを対応付けるID "method": "initialize", "params": { "protocolVersion": "2024-11-05", "capabilities": { // クライアントがサポートする機能 ... }, "clientInfo": { "name": "mcp", "version": "0.1.0" } } } 9
1. 初期化フェーズ 2/3 Server → Client(initialize response) { "jsonrpc": "2.0",
"id": 0, // リクエストと同じIDを返す "result": { "protocolVersion": "2024-11-05", "capabilities": { // サーバーがサポートする機能 "tools": {} // ツール提供機能 }, "serverInfo": { "name": "secure-filesystem-server", "version": "0.2.0" } } } 10
1. 初期化フェーズ 3/3 Client → Server(準備完了通知) { "jsonrpc": "2.0", "method":
"notifications/initialized" } ※ 通知(notification)には id が不要。一方向の通信のた め 11
2. ツール一覧取得 1/2 Client → Server(tools/list request) { "jsonrpc": "2.0",
"id": 1, "method": "tools/list" } 12
2. ツール一覧取得 2/2 Server → Client(tools/list response) { "jsonrpc": "2.0",
"id": 1, "result": { "tools": [ { "name": "read_file", "description": "ファイルの内容を読み取る", "inputSchema": { "type": "object", "properties": { "path": { "type": "string" } }, "required": ["path"] } } // ... その他のツール ], "_meta": { // ページネーション情報やカーソルなどのメタデータ(オプショナル) } } 13
3. ツール実行 1/2 Client → Server(tools/call request) { "jsonrpc": "2.0",
"id": 3, "method": "tools/call", "params": { "name": "list_directory", "arguments": { "path": "/Users/username/Desktop" } } } 14
3. ツール実行 2/2 Server → Client(tools/call response) { "jsonrpc": "2.0",
"id": 3, "result": { "content": [ { "type": "text", "text": "[FILE] document.pdf\n[DIR] images\n[FILE] readme.txt" } ] } } 15
Apps SDK について 16
Apps SDKとは ChatGPT Apps SDK の概要 提供元: OpenAI 公開日: 2025年10月6日(OpenAI
DevDay 2025で発 表) 利用可能プラン: Pro プラン対応 17
Apps SDK 公式サンプル 0:00 18
Tools定義と連携 (tools/list レスポンス例) { "jsonrpc": "2.0", "id": 1, "result": {
"tools": [ { "name": "add_todo", "description": "新しいタスクを追加", "inputSchema": { // ... }, "_meta": { "openai/outputTemplate": "ui://widget/todo-list.html", // UIリソースとツールの紐付け "openai/toolInvocation/invoking": "Displaying the list of todos", // ツール実行中にChatGPTが表示するメッセージ "openai/toolInvocation/invoked": "Displayed the list of todos" // ツール実行完了後にChatGPTが表示するメッセージ } } ] } } 19
window.openai オブジェクト (参考: Apps SDK Reference) ChatGPTとの通信インタフェース Apps SDK では
window.openai グローバルオブジェクトで機能にアクセス window.openai のメソッド例 // サーバーサイドツールの呼び出し await window.openai.callTool("add_todo", { title: "新しいタスク", completed: false, }); // ウィジェット状態の永続化(4kトークン以下推奨) window.openai.setWidgetState({ todos: updatedTodos, }); 20
実装例:Resources一覧の取得 // Client → Server { "jsonrpc": "2.0", "id": 1,
"method": "resources/list" } // Server → Client { "jsonrpc": "2.0", "id": 1, "result": { "resources": [{ "uri": "ui://widget/todo-list.html", "mimeType": "text/html+skybridge", "name": "Todo List Widget" }] } } 21
実装例: tools/call のリクエスト/レスポンス // Client → Server (ツール実行) { "jsonrpc":
"2.0", "id": 2, "method": "tools/call", "params": { "name": "add_todo", "arguments": { "title": "新しいタスク", "completed": false } } } // Server → Client (レスポンス) { "jsonrpc": "2.0", "id": 2, "result": { "content": [{ "type": "text", "text": "{\"success\": true}" }] } } 22
ウィジェット表示の仕組み _meta の outputTemplate が鍵 1. ツール定義時に設定(tools/list レスポンス) "_meta": {
"openai/outputTemplate": "ui://widget/todo-list.html" } 2. ChatGPTの動作フロー ツール実行( tools/call ) ツールの _meta.outputTemplate を確認 指定されたリソースを resources/read で取得 ウィジェットを表示し、 window.openai.toolOutput に結果を設定→ ツール実行すると、自動的にウィジェットが表示される 23
Apps SDK で遊んでみた Coharu VRM 0:00 24
Coharu Apps SDK連携 カスタムウィジェット実装例 0:00 25
Apps SDK触ってみた感想 良い点 coharu がかわいい 柔軟なUIでインタラクティブな操作が可能 課題点 開発環境の制約: ローカルでのwidget開発・テストができず、ChatGPT上でのみ動 作確認可能
window.openai などの独自のルールを学習する必要がある ウィジェットをclaudeなどでも出てくるなら共通規格にしてほしい、 、 、 。 26
ご清聴ありがとうございました 参考文献 MCP関連 MCP 公式仕様書 - Lifecycle Qiita - MCPの仕組みと通信の詳細
Apps SDK関連 OpenAI Apps SDK - Reference OpenAI Apps SDK - Build Custom UX azukiazusa.dev - ChatGPT Apps SDKを使ってみた 27
28