OpenAI MCP Extensions を使うと、ChatGPT のサイドバー、コンポーザー、ファイルビューアーなど、ユーザーが日常的に使う画面にプラグインを組み込めます。
ChatGPT 無料版と ChatGPT Go のユーザーは、まもなく Web 版でプラグインの拡張機能を利用できるようになります。既存のプラグイン機能への影響はありません。コンポーザーでのメンションは、ChatGPT デスクトップアプリでのみ利用できます。
拡張機能のお試し
さまざまな拡張機能をまとめたサンプルプラグイン Bits & Bolts で、それぞれの動作を試せます。新しい拡張機能の提供に合わせて、サンプルも更新していきます。
開発の始め方
インストール手順、SDK の使用例、仕様の全文は GitHub リポジトリで確認できます。
MCP サーバーとアプリの UI に拡張機能を追加できます。
MCP Python SDK を使って、サーバー側に拡張機能を追加できます。
MCP と MCP Apps の仕様を拡張する、プログラミング言語に依存しない API を正式に定義しています。
サーバーの準備ができたら、プラグインを接続してテストし、配布用にパッケージ化します。
拡張機能リファレンス
拡張機能を使うと、ユーザーは ChatGPT のさまざまな画面からプラグインを利用できます。対応する拡張機能を宣言するには、SDK を使って数行のコードを書くだけです。
| 拡張機能 | ユーザーができること | |
|---|---|---|
| サイドバーアプリ | サイドバーからアプリを開き、全画面で作業できます。 | |
| 会話パネル | 会話の横にアプリを開き、チャットしながら同じ画面で作業できます。 | |
| プラグイン設定 | プラグイン固有の設定を ChatGPT 内で変更できます。 | |
| ファイルビューアーとエディター | プラグイン独自の画面で対応ファイルを開き、内容の閲覧、リアルタイム更新の確認、変更の保存ができます。 | |
| 表示モード | ChatGPT の会話内でアプリを表示する場所と表示方法を選べます。 | |
| ディープリンク | サイドバーアプリ内の特定のページや項目を直接開けます。 | |
| モデルコンテキストの拡張 | 注釈を制御し、添付したコンテキストをコンポーザーにどう表示するかを指定できます。 | |
| メッセージ送信の拡張 | 現在の会話にメッセージを送信できます。デスクトップアプリと Web 版の Work モードでは、新しい会話にも送信できます。 | |
| コンポーザーでのメンション | ChatGPT デスクトップアプリのコンポーザーで、プラグインのコンテンツを検索して選択できます。 | |
| 拡張フォーム | ユーザーに構造化されたデータの入力や画像の選択を求め、その回答をツールに返せます。 | |
| プラグインのオンボーディング | 新しい会話でも既存の会話でも、案内に沿ってセットアップを進められます。 |
サイドバーアプリ
グローバルサイドバーに、MCP App を全画面で起動するための項目を追加します。
MCP App のツールを登録するときに、次のメタデータを _meta として渡します。ui://parts/library は、登録済みの UI リソースの URI に置き換えてください。
import type { OpenAIUiToolMetadata } from "@openai/mcp-extensions/server";
const toolMetadata = {
ui: { resourceUri: "ui://parts/library" },
"openai/ui": {
entrypoints: [{ type: "global" }],
} satisfies OpenAIUiToolMetadata,
};
{ type: "thread" } を使うと、会話のサイドパネルにエントリーポイントを追加できます。登録コードの全体例は、エントリーポイントのガイドを参照してください。
ファイルビューアーとエディター
ユーザーが対応する拡張子のファイルを開いたときに、スレッドのサイドパネルで MCP App を起動できます。
ツールの _meta にファイル用のエントリーポイントを設定し、ビューアーが対応する拡張子を指定します。
import type { OpenAIUiToolMetadata } from "@openai/mcp-extensions/server";
const toolMetadata = {
ui: { resourceUri: "ui://parts/viewer" },
"openai/ui": {
entrypoints: [{ type: "file", extensions: ["stl"] }],
} satisfies OpenAIUiToolMetadata,
};
ui://parts/viewer は、登録済みの UI リソースの URI に置き換えてください。アプリには、開いたファイルのリソース URI が渡されます。この URI を受け取り、アプリの SDK でリソースを読み込む手順は、ファイルハンドラーのガイドを参照してください。
拡張フォーム
ChatGPT 標準のコンポーネントを使って、標準の MCP フォームに画像選択などの機能を追加できます。
import type {
OpenAIForm,
OpenAIFormOption,
} from "@openai/mcp-extensions/server";
function partSelectionSchema(parts: OpenAIFormOption[]): OpenAIForm {
return {
type: "object",
properties: {
part: {
type: "string",
title: "Part",
oneOf: parts,
},
},
required: ["part"],
};
}フォームのリクエストでは、このスキーマを requestedSchema として渡します。各選択肢に const と title を指定し、必要に応じて x-openai-thumbnail でアイコンを追加します。OpenAI に登録された MCP サーバーでは、複数回の往復を伴うリクエスト(MRTR)が必要です。
拡張機能の活用事例
よく知られているプラグインが拡張機能をどのように活用しているかを紹介します。