Codex で MCP サーバーの一部のツールだけ許可する enabled_tools と、タイムアウト・承認の設定

Codex 公開:

Codex の config.toml で MCP サーバーごとに使えるツールを enabled_tools / disabled_tools で絞り、startup_timeout_sec と tool_timeout_sec で待ち時間を調整し、承認モードを設定する方法を解説します。

検証日 2026年9月10日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. ツールを絞る
  2. タイムアウトを調整する
  3. 承認と出力の上限
  4. まとめ

MCP サーバーを追加すると、そのサーバーが公開するツールが全部 Codex から使えるようになります。ブラウザ操作のサーバーで「スクリーンショットは撮ってほしいがフォーム送信はさせたくない」のように、一部だけを許可したい場面はよくあります。

結論として、[mcp_servers.<id>]enabled_toolsdisabled_tools でツールを絞り、default_tools_approval_modetools.<tool>.approval_mode で実行前の承認を要求できます。起動やツール実行の待ち時間は startup_timeout_sectool_timeout_sec で調整します。

KEY POINT

この記事で分かること

  • ツールの許可リスト / 拒否リストの書き方
  • 起動タイムアウトとツール実行タイムアウトの既定値と変え方
  • 承認モードと、出力トークンの上限

ツールを絞る

公式ドキュメントの例です。HTTP サーバーに対して、使えるツールを openscreenshot に絞り、さらに screenshot を拒否リストに入れています。

[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"]
default_tools_approval_mode = "prompt"
startup_timeout_sec = 20
tool_timeout_sec = 45
キー意味
enabled_tools使えるツール名の許可リスト
disabled_tools使わせないツール名の拒否リスト
enabledfalse にすると設定を残したままサーバーを無効化
requiredtrue にすると、サーバーが初期化できないとき Codex の起動が失敗する

ツール名はサーバーが公開している名前をそのまま書きます。名前は codex mcp list などで確認できます。

用語解説

stdio サーバーと HTTP サーバー: commandargs でプロセスを起動するのが stdio サーバー、url で接続するのが HTTP(streamable)サーバーです。ツールの絞り込みやタイムアウトの設定はどちらにも共通です。

タイムアウトを調整する

キー既定意味
startup_timeout_sec10サーバーの起動を待つ時間。startup_timeout_ms でミリ秒指定も可
tool_timeout_sec60ツール 1 回の実行を待つ時間

npx で毎回パッケージを取得するサーバーや、初回にブラウザを立ち上げるサーバーは 10 秒で間に合わないことがあります。起動に失敗して黙ってスキップされるのが困る場合は、required = true にして明示的に失敗させるのが確実です。

任意のサーバー(required でないもの)を待つ猶予は、グローバルの mcp_optional_startup_grace_ms(既定 1000 ミリ秒)で決まります。

承認と出力の上限

サーバー全体の承認モードは default_tools_approval_mode で決めます。値は auto / prompt / writes / approve です。個別のツールには [mcp_servers.<id>.tools.<tool>] で上書きできます。

[mcp_servers.docs]
command = "npx"
args = ["-y", "some-docs-mcp"]
enabled_tools = ["search", "summarize"]
default_tools_approval_mode = "auto"

[mcp_servers.docs.tools.summarize]
approval_mode = "prompt"
output_token_limit = 30000

output_token_limit はそのツールの出力に割り当てるトークンの上限で、検索結果のように長くなりがちなツールの出力がコンテキストを圧迫するのを防ぎます。すべてのツール出力に共通の上限を付けるなら、トップレベルの tool_output_token_limit を使います。

環境変数は env と env_vars で最小限に

stdio サーバーに渡す環境変数は [mcp_servers.<id>.env] で値を書くか、env_vars = ["LOCAL_TOKEN"] のように「転送を許可する変数名」を並べます。HTTP サーバーの認証は bearer_token_env_var で環境変数名を指定します。トークンの値そのものを config.toml に書かないでください。

MCP サーバーの追加手順そのものは Codex CLI に MCP サーバーを設定する を、承認ポリシーとの関係は親記事の config.toml でモデル・推論の深さ・プロファイルを切り替える を参照してください。どのサーバーを入れるかの候補は おすすめの MCP サーバー にまとめています。

まとめ

  • enabled_tools / disabled_tools でサーバーごとに使えるツールを絞れる
  • 起動は startup_timeout_sec(既定 10 秒)、実行は tool_timeout_sec(既定 60 秒)。起動できないと困るサーバーは required = true
  • default_tools_approval_modetools.<tool>.approval_mode で実行前の承認を要求できる
  • output_token_limit でツールごとの出力トークンを制限できる
  • トークンは bearer_token_env_varenv_vars で環境変数から渡し、値を直接書かない

よくある質問

enabled_tools と disabled_tools を両方書いたらどうなりますか?
公式の例では両方を同時に書いており、enabled_tools で許可した中から disabled_tools のものが除かれる形になっています。片方だけで済むなら片方にする方が読みやすいです。
MCP サーバーの起動が遅くてスキップされます。
startup_timeout_sec(既定 10 秒)を伸ばしてください。必須のサーバーなら required = true にすると、起動できないとき Codex 自体が起動に失敗するので気づけます。
特定のツールだけ毎回確認してほしいです。
[mcp_servers.<id>.tools.<tool>] の approval_mode で個別に設定できます。サーバー全体なら default_tools_approval_mode です。

参考にした一次情報

この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。