はじめに
ChatGPT Apps SDK や MCP(Model Context Protocol)を利用すると、ChatGPT の機能を拡張できることを知り、
今回、個人開発として:
- ChatGPT から、自分がアクセス可能な Miro ボードの情報を取得する
- Miro ボード上で、自分が運営側をしている勉強会での議論整理などを手伝ってもらう
ようなツールを試作してみました。
この記事では、まず:
- ChatGPT Apps SDK とは何か
- どのような構成としたか
など、環境構築寄りの内容を書いていきます。
実際に開発していくと、
- ChatGPT が tool をどう解釈するか
- MCP の tool metadata がどう影響するか
- assistant がどのように UI を生成するか
など、かなり「AI interaction design」寄りの問題も出てきました。
そのあたりは次回以降の記事で書こうと思います。
シリーズ: 個人開発で ChatGPT Apps SDK を試してみた
※ 本記事は ChatGPT Apps SDK / MCP を用いた個人開発・検証の記録です。内容は個人の見解であり、所属組織を代表するものではありません。
ChatGPT Apps SDK とは何か
ChatGPT Apps SDK は、ChatGPT に対して独自ツールや外部サービス連携を追加できる仕組みです。
簡単に言うと、
- ChatGPT に独自機能を追加できる
- 外部 API や SaaS と連携できる
- ChatGPT の会話の中でツールを実行できる
ようになります。
最近よく聞く MCP(Model Context Protocol)と組み合わせることで、
- 独自 API
- SaaS
- データ取得処理
- 社内ツール
などを ChatGPT から扱えるようになります。
今回は、Miro API と OAuth 連携を行い、
- 自分がアクセスできる Miro Board を取得する
- Miro 上の discussion frame を取得する
- ChatGPT 上で議論整理を支援してもらう
ようなツールを作成しています。
公開も可能
Apps は公開申請も可能で、審査に通れば一般公開もできます。
実際に ChatGPT 上では、
- Notion
- Canva
- Figma
- Slack
など、さまざまな Apps が公開されています。
個人開発ツールを ChatGPT と連携する上での制限
少なくとも、私が試した時点では、個人で ChatGPT Apps SDK を利用する場合、ChatGPT の有償プランが必要でした。
今回は:
- 個人でのノウハウ収集
を主目的としているため、ChatGPT 有償プラン以外は極力お金をかけない構成にしました。
※ 私が試している時点では ChatGPT の 1か月無料お試し期間があったため、現時点では追加費用なしで試せています。
参考情報
-
OpenAI Apps SDK
https://developers.openai.com/apps-sdk/ -
OpenAI Apps SDK Quickstart
https://developers.openai.com/apps-sdk/build/examples -
OpenAI Apps の紹介
https://openai.com/chatgpt/apps/
今回の構成
今回構築したものは、ChatGPT Apps SDK から呼び出される MCP Server 部分です。
MCP Server は Google Cloud Run 上で動かしています。
利用環境:
- Windows 11
- Node.js
- Google Cloud Run
- Miro API
- OAuth 認証
Cloud Run を選んだ理由は:
- HTTP ベースで公開しやすい
- Docker ベースで構築しやすい
- 無料枠が比較的大きい
あたりです。
現時点では、個人検証用途のため無料枠内で動いています。
Windows 環境での Tips
最初、Windows ネイティブ環境で構築を試みましたが、途中で WSL 上での構築に切り替えました。
Google Cloud CLI の情報が Linux / macOS 前提のものが比較的多く感じたため、WSL の方が素直に構築できそうです。
補足
最近は生成AIがかなり構築をサポートしてくれるため、今回は細かいセットアップ手順については記載していません。
ただ、周囲の反応等をみて、もし需要がありそうなら別記事化も検討しようと思います。
次回予告
実際に Apps SDK / MCP を触ってみると、
- assistant が想定外の prose を生成する
- 候補一覧を勝手に要約する
- structuredContent が latent prompt 的に効く
など、「AI interaction 側」の調整にかなり時間を使いました。
次回は:
assistant が想定と違うレスを返す問題への対応
について書こうと思います。