日本語

Model Context Protocol

Codex にサードパーティ製ツールとコンテキストへのアクセスを許可します

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

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

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

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

対応している MCP 機能

  • STDIO servers:ローカルプロセスとして実行されるサーバー(コマンドで起動します)。
    • 環境変数
  • Streamable HTTP servers:指定したアドレス経由でアクセスするサーバーです。
    • Bearer トークン認証
    • OAuth 認証
    • 信頼されたファーストパーティサーバー向けの ChatGPT セッション認証
  • サーバー指示:Codex は初期化時に返される MCP の instructions フィールドを読み取り、サーバーのツールとともにサーバー全体のガイダンスとして使用します。

Codex 用の MCP server を構築または保守する場合は、サーバー全体に適用されるツール横断ワークフロー、制約、レート制限を instructions に記述してください。Codex がサーバーの使用方法を判断する際に最も重要なガイダンスを利用できるよう、先頭の 512 文字だけで内容が完結するようにしてください。

Codex を MCP server に接続する

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

ChatGPT デスクトップアプリ、Codex CLI、IDE 拡張機能はこの設定を共有します。 MCP servers を一度設定すれば、再設定せずにこれらのクライアントを切り替えられます。

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

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

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

config.toml で設定する

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

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

STDIO servers

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

env_vars には、単純な変数名またはソースを指定したオブジェクトを含められます。

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

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

Streamable HTTP servers

  • url(必須):サーバーのアドレスです。
  • auth(任意):設定済みの Bearer トークンと認証ヘッダーの後に試行する認証方式です。保存済みの MCP OAuth 認証情報には oauth(デフォルト)を使用します。信頼されたファーストパーティの ChatGPT オリジンで現在の ChatGPT セッションを使用し、保存済み OAuth をフォールバックにするには chatgpt を使用します。
  • bearer_token_env_var(任意):Authorization で送信する Bearer トークンの環境変数名です。
  • 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 server が 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 servers

インストール済みのプラグインは、そのプラグインマニフェストに MCP servers を含めることができます。これらのサーバーはプラグインから起動されるため、ユーザー設定ではトランスポートコマンドを指定しません。ただし、ユーザー設定の 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 servers の例

MCP servers の一覧は増え続けています。よく使われるものをいくつか紹介します。

  • OpenAI Docs MCP:OpenAI の開発者向けドキュメントを検索して閲覧できます。
  • Context7:最新の開発者向けドキュメントに接続します。
  • Figma LocalRemote:Figma のデザインにアクセスします。
  • Playwright:Playwright を使用してブラウザーを操作・検査します。
  • Chrome Developer Tools:Chrome を操作・検査します。
  • Sentry:Sentry のログにアクセスします。
  • GitHubgit が対応していない GitHub 操作(pull request や issue など)を管理します。