コンテンツにスキップ

Model Context Protocol

Model Context Protocol(MCP)は、モデルをツールやコンテキストに接続します。これを使用すると、ChatGPT や Codex からサードパーティのドキュメントにアクセスしたり、ブラウザーや Figma などの開発者ツールを操作したりできます。

ChatGPT Web は、プラグインが提供するリモート MCP 対応ツールを使用できます。ローカルの Codex クライアントは、MCP サーバーに直接接続し、その設定を共有することもできます。

ChatGPT デスクトップアプリ、Codex CLI、IDE 拡張機能は MCP サーバーをサポートし、同じ Codex ホストの MCP 設定を共有します。

以下のサーバー機能は、Codex ホストで設定された MCP サーバーに適用されます。ホスト型プラグインツールでは、機能が異なる場合があります。

サポートされている MCP 機能

  • STDIO サーバー: ローカルプロセスとして実行されるサーバーです(コマンドで起動します)。
  • 環境変数
  • ストリーミング可能な HTTP サーバー: アドレスを指定してアクセスするサーバーです。
  • Bearer トークン認証
  • OAuth 認証
  • 信頼されたファーストパーティサーバー向けの ChatGPT セッション認証
  • サーバー命令: Codex は初期化中に返される MCP instructions フィールドを読み取り、サーバーのツールと併せてサーバー全体への指針として使用します。

Codex 用の MCP サーバーを構築または管理する場合は、サーバー全体に適用されるツール間ワークフロー、制約、レート制限に instructions を使用してください。最初の 512 文字は自己完結した内容にして、Codex がサーバーの使用方法を判断する際に最も重要な指針を利用できるようにしてください。

Codex を MCP サーバーに接続する

Codex は、他の Codex 設定とともに config.toml に MCP 設定を保存します。デフォルトでは ~/.codex/config.toml ですが、.codex/config.toml を使用して MCP サーバーをプロジェクト単位に設定することもできます(信頼済みプロジェクトのみ)。

ChatGPT デスクトップアプリ、Codex CLI、IDE 拡張機能はこの設定を共有します。MCP サーバーを設定すると、セットアップをやり直すことなく、これらのクライアントを切り替えられます。

ChatGPT デスクトップアプリで設定する

  1. Settings を開き、MCP servers を選択します。
  2. Add server を選択します。
  3. 名前を入力し、STDIO または Streamable HTTP を選択して、サーバーのコマンドまたは URL を指定します。
  4. サーバーを保存し、Restart を選択します。

サーバー一覧には、有効になっているサーバーと OAuth が必要なサーバーが表示されます。OAuth サーバーでサインインが必要な場合は、Authenticate を選択します。コンポーザーで /mcp と入力すると、接続済みのサーバーを確認できます。

config.toml で設定する

より細かく制御するには、~/.codex/config.toml またはプロジェクト単位の .codex/config.toml を編集します。サポートされている MCP オプションをすべて検索できる一覧については、設定リファレンスを参照してください。

設定ファイルの [mcp_servers.<server-name>] テーブルで各 MCP サーバーを設定します。

STDIO サーバー

  • command(必須): サーバーを起動するコマンドです。
  • args(任意): サーバーに渡す引数です。
  • env(任意): サーバーに設定する環境変数です。
  • env_vars(任意): 許可して転送する環境変数です。
  • cwd(任意): サーバーを起動する作業ディレクトリです。
  • experimental_environment(任意): remote に設定すると、利用可能な場合にリモート実行環境を介して stdio サーバーを起動します。

env_vars には、単純な変数名、または source を持つオブジェクトを指定できます。

env_vars = ["LOCAL_TOKEN", { name = "REMOTE_TOKEN", source = "remote" }]

文字列エントリと source = "local" は、Codex のローカル環境から読み取られます。source = "remote" はリモート実行環境から読み取られ、リモート MCP stdio が必要です。

ストリーミング可能な HTTP サーバー

  • url(必須): サーバーアドレスです。
  • auth(任意): 設定済みの Bearer トークンと認証ヘッダーの後に試行する認証です。保存済みの MCP OAuth 資格情報には oauth(デフォルト)を使用します。信頼されたファーストパーティの ChatGPT origin で現在の ChatGPT セッションを使用するには chatgpt を使用します。保存済みの OAuth はフォールバックとして使用されます。
  • bearer_token_env_var(任意): Bearer トークンを Authorization で送信するための環境変数名です。
  • http_headers(任意): ヘッダー名から静的値へのマップです。
  • env_http_headers(任意): ヘッダー名から環境変数名へのマップです(値は環境から取得されます)。

資格情報のソースを解決できない場合、Codex は認証なしでサーバーに接続できます。MCP OAuth ログインを開始するには、別途 codex mcp login <server-name> を実行します。

その他の設定オプション

  • startup_timeout_sec(任意): サーバーの起動を待機するタイムアウト(秒)です。デフォルト: 10
  • tool_timeout_sec(任意): サーバーがツールを実行する際のタイムアウト(秒)です。デフォルト: 60
  • enabled(任意): false に設定すると、削除せずにサーバーを無効化します。
  • required(任意): true に設定すると、この有効なサーバーを初期化できない場合に起動を失敗させます。
  • enabled_tools(任意): ツールの許可リストです。
  • disabled_tools(任意): ツールの拒否リストです(enabled_tools の適用後に適用されます)。
  • default_tools_approval_mode(任意): このサーバーのツールに対するデフォルトの承認動作です。サポートされている値は autopromptwritesapprove です。writes モードでは、読み取り専用としてマークされていないツールについて確認を求めます。
  • tools.<tool>.approval_mode(任意): ツールごとの承認動作の上書きです。

OAuth プロバイダーで固定のコールバックポートが必要な場合は、config.toml のトップレベル mcp_oauth_callback_port を設定します。設定しない場合、Codex はエフェメラルポートにバインドします。

MCP OAuth フローで特定のコールバック URL(リモート Devbox ingress URL やカスタムコールバックパスなど)を使用する必要がある場合は、mcp_oauth_callback_url を設定します。Codex はこの値をベースコールバック URL として使用し、サーバー固有のコールバック ID を追加して、ログイン中に送信する OAuth redirect_uri を生成します。OAuth プロバイダーには、追加されたコールバック ID、および設定されたパス、クエリ、ポートを含む、完全な派生 redirect_uri を登録してください。サフィックスのないベースホストやパスだけを登録しないでください。ローカルコールバック URL(例: localhost)はローカルインターフェイスにバインドされます。非ローカルのコールバック URL は 0.0.0.0 にバインドされるため、コールバックがホストに到達できます。

MCP サーバーが scopes_supported を通知する場合、Codex は OAuth ログイン中にサーバーが通知したスコープを優先します。それ以外の場合、Codex は config.toml に設定されたスコープにフォールバックします。

config.toml の例

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
env_vars = ["LOCAL_TOKEN"]

[mcp_servers.context7.env]
MY_ENV_VAR = "MY_ENV_VALUE"
# Optional MCP OAuth callback overrides (used by `codex mcp login`)
mcp_oauth_callback_port = 5555
mcp_oauth_callback_url = "https://devbox.example.internal/callback"
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
http_headers = { "X-Figma-Region" = "us-east-1" }
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"] # applied after enabled_tools
default_tools_approval_mode = "prompt"
startup_timeout_sec = 20
tool_timeout_sec = 45
enabled = true

[mcp_servers.chrome_devtools.tools.open]
approval_mode = "approve"

プラグインが提供する MCP サーバー

インストール済みのプラグインは、プラグインマニフェストに MCP サーバーを含めることができます。これらのサーバーはプラグインから起動されるため、ユーザー設定でトランスポートコマンドを設定することはありません。ユーザー設定では、plugins.<plugin>.mcp_servers.<server> にあるオン/オフ状態とツールポリシーを引き続き制御できます。

[plugins."sample@test".mcp_servers.sample]
enabled = true
default_tools_approval_mode = "prompt"
enabled_tools = ["read", "search"]

[plugins."sample@test".mcp_servers.sample.tools.search]
approval_mode = "approve"

便利な MCP サーバーの例

MCP サーバーの一覧は増え続けています。ここでは、よく使われるものをいくつか紹介します。

  • OpenAI Docs MCP: OpenAI 開発者向けドキュメントを検索して読むことができます。
  • Context7: 最新の開発者向けドキュメントに接続します。
  • Figma Local および Remote: Figma のデザインにアクセスします。
  • Playwright: Playwright を使用してブラウザーを制御および検査します。
  • Chrome Developer Tools: Chrome を制御および検査します。
  • Sentry: Sentry のログにアクセスします。
  • GitHub: git がサポートする範囲を超えて GitHub を管理します(プルリクエストや issue など)。