カスタム MCP サーバーの接続
Model Context Protocol(MCP)サーバーをプラグインとして ChatGPT に接続します。ChatGPT は、サーバーが提供する読み取りツールと書き込みツールの両方に対応しています。
接続するのは、信頼できる MCP サーバーだけにしてください。信頼できないサーバーは、アプリの利用を通じて共有された情報にアクセスしたり、その情報を盗んだりするおそれがあります。また、ChatGPT をだまして意図しない形でツールを使わせ、データを変更または削除させる可能性もあります。サーバーを接続する前に、プロンプトインジェクションとその他のリスクを確認してください。
利用方法
-
アクセス方法: Web 版の ChatGPT を使用します。カスタム MCP サーバーの追加と利用には、ワークスペースの権限と、ロックダウンモードを含むセキュリティ制限が適用されます。
-
MCP サーバーをプラグインとして追加する手順:
- ChatGPT プラグインを開きます。
- プラスボタンを選択し、カスタム MCP サーバーを追加を選択します。
- 名前を入力します。説明は任意です。接続でサーバー URL を入力するか、トンネルを選択してセキュア MCP トンネルを使用します。
- サーバーの認証を設定します。
- リスクに関する警告を確認し、理解したうえで続行を選択します。
- プラグインとして作成を選択します。
- 対応する MCP プロトコル:SSE とストリーミング HTTP
- 認証方式は OAuth、認証なし、OAuth または認証なしから選択できます。
- OAuth では、静的な認証情報が指定されていれば、その情報を使用します。指定されていない場合は、認可サーバーが Client ID Metadata Documents(CIMD)への対応を表明し、アプリの作成者が CIMD を選択していれば、ChatGPT は CIMD を使用できます。CIMD は、パブリッククライアントによるトークン交換(
none)と、署名付きクライアントアサーションを使用したトークン交換(private_key_jwt)に対応しています。DCR が設定されていれば、ChatGPT は DCR も使用できます。 - 混合認証では、OAuth と認証なしを併用できます。初期化とツール一覧取得の API は認証なしで使用します。各ツールの呼び出しには、そのツールのメタデータに設定されたセキュリティスキームに応じて、OAuth または認証なしを使用します。
- OAuth では、静的な認証情報が指定されていれば、その情報を使用します。指定されていない場合は、認可サーバーが Client ID Metadata Documents(CIMD)への対応を表明し、アプリの作成者が CIMD を選択していれば、ChatGPT は CIMD を使用できます。CIMD は、パブリッククライアントによるトークン交換(
- 作成したプラグインは、個人のプラグイン一覧または作成先のワークスペースで確認できます。会話で使用する前にインストールしてください。
-
ツールの管理: アプリ設定には、アプリごとの詳細ページがあります。このページでツールのオンとオフを切り替えられます。アプリを更新すると、MCP サーバーから新しいツール、説明、サーバーの指示を取得できます。
-
会話でのアプリの利用: プロンプト入力欄に
@を入力し、インストールしたプラグインを選択します。ワークスペースの権限とセキュリティ制限の範囲内で、カスタム MCP プラグインを他のアプリと併用できます。目的のツールを呼び出すには、プロンプトの書き方をいくつか試す必要がある場合があります。たとえば、次のように指示します。- 使うツールを明示します。例:
Use the "Acme CRM" app's "update_record" tool to …。必要に応じて、サーバーのラベルとツール名を含めます。 - 使ってよいツールを限定して曖昧さを避けます。「組み込みのブラウジング機能や他のツールは使わず、Acme CRM アプリだけを使ってください。」
- 似たツールの用途を区別します。「会議には
Calendar.create_eventを優先してください。日程調整にはReminders.create_taskを使わないでください。」 - 入力形式と呼び出し順序を指定します。「まず
Repo.read_fileを{ path: "…" }で呼び出してください。次に、変更後の内容を渡してRepo.write_fileを呼び出してください。他のツールは呼び出さないでください。」 - 複数のアプリの機能が重なる場合は、どれを優先するかを最初に指定します。たとえば、「正式な情報源として
CompanyDBを使ってください。CompanyDBで結果が得られない場合に限り、他の情報源を使ってください」と指示します。 - カスタム MCP サーバーに
search/fetchツールは必須ではありません。確認設定に従って、書き込み操作を含め、アプリが公開するすべてのツールを使用できます。 - 詳しくは、ツールの使用とプロンプトの作成を参照してください。
- ツールの説明を改善すると、モデルが適切なツールを選びやすくなります。MCP サーバーでは、どのような操作を行うかが伝わるツール名と説明を付けてください。説明には「このツールは…の場合に使用します」のように使いどころを示し、使用してはいけないケースや例外的なケースも明記します。パラメーターの説明と列挙値も加えると、モデルが似たツールの中から適切なものを選び、組み込みツールが適さない場面でその使用を避けやすくなります。
- 複数のツールにまたがる指示は、サーバーの指示として追加します。ツールの呼び出し順序に関する要件、複数のツールで共有するレート制限、ツール間の関係など、サーバー全体に適用する指示には MCP の
instructionsフィールドを使用します。冒頭の 512 文字だけでも指示が伝わるようにしてください。
プロンプト例:
「Calendar.create_event」を使って、明日の午後 3 時(太平洋時間)から 30 分間、alice@example.com と bob@example.com との会議を設定してください。 他のスケジュール管理ツールは使わないでください。「GitHub.open_pull_request」を使って、「feat-retry」ブランチから「main」ブランチへの pull request を作成してください。 タイトルは「Add retry logic」、本文は「…」にしてください。 main に直接プッシュしないでください。 - 使うツールを明示します。例:
-
ツール呼び出しの確認と承認:
- ツールが送受信する JSON ペイロードを調べると、内容が正しいかを確認し、問題をデバッグできます。各ツール呼び出しの詳細を展開すると、ツールの入力と出力の JSON をすべて確認できます。
- 書き込み操作には、デフォルトで確認が必要です。書き込み操作に送信されるツール入力をよく確認し、意図した動作になることを確かめてください。誤った書き込み操作を実行すると、意図せずデータを破壊、変更、共有してしまうおそれがあります。
- 読み取り専用かどうかの判定には、ツールの
readOnlyHintアノテーションを使用します(MCP ツールのアノテーションを参照)。このアノテーションがないツールは、書き込み操作として扱われます。 - ツールごとに、承認または拒否の選択をその会話中は記憶させることができます。記憶させた選択は、その会話の残りのやり取りにも適用されます。承認の選択を記憶させるのは、そのツールを提供するアプリをよく理解し、以降の書き込み操作を個別に承認せずに任せられると判断した場合だけにしてください。新しい会話では、再び確認を求められます。同じ会話でも、再読み込みすると、その後のやり取りで再び確認を求められます。