Codex CLIにおけるMCP サーバー活用

下記の記事で、「Codex CLI は MCP サーバーに対応。必要ならファイルシステム等の“道具”を拡張できます(高度ですが将来の自動化に有用)。」との回答をGPT 5 Thinkingから得ていた。これについてさらに質問した。

(注)本記事の内容は正確性を保証するものではない。

「Codex CLI は MCP サーバーに対応。必要ならファイルシステム等の“道具”を拡張できます(高度ですが将来の自動化に有用)」という回答をもらったことがありますが、具体的には、どのような使い方ができるということですか。

GPT 5 Thinking の回答

以下は「MCP(Model Context Protocol)に Codex CLI をつなぐと“具体的に何ができるのか”」を、要点→使い方の具体例→設定例→活用シナリオ→安全運用のポイント、の順でコンパクトにまとめたものです。

要点(ひとことで)

  • MCPは“AI用USB-C”のような標準ポートCodex CLI(ローカルのコーディング・エージェント)から、ファイルシステム・GitHub・DB・HTTP APIなど外部ツールを“サーバ(MCP server)”経由で呼び出せます。つまり、Codexに新しい道具を差し込んで拡張できる、ということです。 (Model Context Protocol)
  • Codex CLI自体がMCP対応なので、~/.codex/config.toml にMCPサーバ定義を足すだけで使えます。 (GitHub)

できること(具体例)

  1. 安全に“ローカル作業”を自動化
  • MCPのFilesystemサーバをつなぐ → Codexが list_directory / read_file / write_file 等のツールを使い、プロジェクトのコード編集や構成変更を半自動化。承認フローを入れれば、危険コマンドは事前確認つきで実行に回せます。 (Aembit)
  1. Git/GitHubワークを一連で
  • GitHubサーバを噛ませて、Issue作成 → ブランチ作成 → 変更コミット → PR作成までをCodexが段取り良く実行(もちろん各ステップで人間の承認を挟める)。MCPはCopilot/Claude/ChatGPTなど複数クライアントで共通化されており、同じサーバを他のツールからも使い回せるのが利点。 (ザ・ヴァージ)
  1. HTTP/外部APIの“配線”
  • HTTPツール系サーバを繋いで、社内API・SaaS(Jira/Notion/監視API 等)をCodexから直接呼ぶ。モデル→MCPツール→APIという標準形で、システム横断の“ボット化”がしやすくなります。 (Model Context Protocol)
  1. DB・検索・ベクターストアへのアクセス
  • DBサーバ(SQL/検索)で、リポジトリ内の設計情報やログのクエリ、RAGの取得を自動化。モデルから見れば“ツール呼び出し”なので、プロンプト内で自然言語→クエリ→整形結果のループが定石化。 (Model Context Protocol)
  1. “Codex自体”をMCPサーバ化して他ツールから使う
  • 逆方向に、Codexを包むCodex-MCPサーバを立てると、Claude Codeやその他MCPクライアントからCodexの能力を呼び出す橋渡しにもできます(コミュニティ実装が複数あり)。 (GitHub)
  1. マルチ環境での可搬性
  • Windows/WSLやmacOS、IDEやターミナルなど異なる環境でも“同じMCPサーバ”を共有できるため、セットアップの再現性と保守が楽になります(MCPは業界横断で採用が広がり中)。 (ザ・ヴァージ)

混乱しがちだが、Codex CLIでMCPサーバを登録し、そのMCPサーバに関連する機能を使う場合(Codex CLIがMCPクライアント側になる場合)と、他のアプリ(Claude Codeやvscodeなど)で、Codex CLIのMCPサーバを登録し、それらのアプリからCodex CLIを使う場合(Codex CLIがMCPサーバ側になる場合)の両方があるようだ。

下記の設定例「Codex CLI 側の設定例(最小イメージ)」は、Codec CLIで、Filesystemサーバと社内HTTPツールサーバの2つのMCPサーバを登録し、Codec CLIがローカルファイルを扱えるように、また、社内HTTPサーバーにアクセスできるようにする設定とのこと。

Codex CLI 側の設定例(最小イメージ)

設定ファイル「~/.codex/config.toml に、使いたいMCPサーバを登録します
(例:ローカルのFilesystemサーバと、社内HTTPツールサーバ)。

[mcp_servers.files]
command = "/usr/local/bin/mcp-filesystem"
args = ["--root", "/Users/you/work/project"]   # 触ってよいルートを限定

[mcp_servers.http]
command = "/usr/local/bin/mcp-http"
env = { ALLOW_DOMAINS = "api.example.com, status.example.com" }  # 外部接続の制限
  • Codexは起動時にMCPサーバを検出し、必要なときだけ“ツール”として呼びます
  • 危険操作は都度承認設定で緩める/厳しくすることも可)。 (GitHub)

実運用シナリオ(すぐ効くやつ)

(補足)下記のシナリオはパーソナライズされた結果により提案されたものであり万人向けのシナリオではない。

  1. Obsidian/ブログの“下ごしらえ自動化” (Codex CLIで、Obsidianのノートを扱うシナリオ)
  • Filesystemサーバで、ローカルVault/WordPress下書きフォルダを触れるようにして、「タグのまとめノート雛形を生成→関連Markdownを走査→目次と内部リンクを整理→画像のWebP変換バッチを用意」までをCodexに提案させ、承認しながら適用。
    (画像最適化やスラッグ命名のルールもプロンプト化しておくと再現性UP)
  1. GNSS/ESP32プロジェクトの定型作業(Codex CLIで、GitHubのプロジェクトに関するファイルを扱うシナリオ)

(補足)本シナリオは、「みちびきの災害・危機管理通報サービス」に関する別記事に関連するシナリオであり、一般的には、FilesystemサーバとGitHubサーバで、開発した装置に関するGitHubのメンテナンスを行うシナリオの例である。

  • “ファームのビルド・フラッシュ・ログ採取・READMEの更新・リリースタグ作成”をワンフロー化GitHubサーバ+Filesystemサーバで、Issue→PR→リリースの一連をCodexにやらせ、途中で配線(I2Cアドレス表など)も自動整形
  1. 家計/投資スプレッドシート連携(Codex CLIで、HTTPサーバにアクセスするシナリオ)
  • HTTPサーバで、為替/投信の日次APIに触り、CodexがCSVを生成→ローカルに保存→ブログ用グラフを更新。将来は“週次の自動記事叩き台”まで拡張。

安全運用・設計メモ

  • 最小権限:Filesystemは“作業ディレクトリだけ”を許可。HTTPは許可ドメインのホワイトリスト運用。 (Aembit)
  • 人間の承認ゲートrm -rf 相当やgit pushなどは毎回確認。Codex側の安全設定で粒度調整。 (OpenAI)
  • 可搬な拡張:MCPはベンダ横断の標準なので、将来Claude/Copilot/ChatGPTなど別クライアントにも同じサーバを流用できます。 (Model Context Protocol)

参考リンク(公式・一次情報)

  • MCPの概要と“ツール”の概念(公式) (Model Context Protocol)
  • Codex CLIのMCP対応・設定(GitHub/公式ドキュメント) (GitHub)
  • Codexの最近のアップデート(MCP接続・安全設定の言及あり) (OpenAI)
  • MCPの発表背景・採用状況(Anthropic発表・ニュース) (Anthropic)
  • MCPを用いたFilesystem連携の実例記事 (Aembit)
  • Codexを包むMCPサーバ(コミュニティ実装の例) (GitHub)

必要なら、ご利用環境(macOS/Windows、ObsidianのVaultパス、触って良いディレクトリ、使いたい外部API)を前提に、config.tomlの雛形と、推奨MCPサーバの組み合わせをこちらで作ってお渡しします。

MCPとは、あるアプリケーションからAPIを使って他のシステムにアクセスする場合、あるアプリケーションとAPIとの間に介在してAPIを使いやすくするものという認識がありましたが、この認識は間違っていますか。また、必ずAPIを持っているシステムに対して行えるものですか。

GPT 5 Thinking の回答

結論:ほぼ合っていますが、少し狭く捉えすぎです。MCPは「アプリ ↔ 外部システム」をつなぐ“標準の会話手順(プロトコル)”で、間に入る“便利ラッパー”的役割も果たします。ただし目的は、“LLM/AIクライアントからツールやデータを安全・一貫方式で使えるようにすることで、単なるAPI呼び出し補助より範囲が広い設計です。(Model Context Protocol)

MCPの正しいイメージ(要点)

  • 誰と誰が話す?
    MCPクライアント(例:ChatGPT/Claude/IDE拡張など)」⇄「MCPサーバ(外部ツールやデータを“提供”する側)」の通信方式を標準化。
    サーバはTools / Resources / Promptsといった“能力の一覧”を公開し、クライアントがそれを発見・実行します。(Model Context Protocol)
  • “APIラッパー”以上
    API呼び出しの統一化は一部ですが、ローカルファイル操作(Filesystem)のように“そもそも外部公開APIを持たない対象”も扱えます。つまり「APIがなくてもOK(ただし何らかのプログラマブル手段が必要)」。(GitHub)
  • 狙いは“USB-C的”接続性
    一度MCPサーバを作ると、複数のAIクライアントから再利用できます(“AI用USB-C”の比喩がよく使われます)。(Model Context Protocol)

「必ずAPIを持っているシステム」に限られる?

  • いいえ、必須ではありません。
    例:Filesystem MCPサーバはローカルディスクへの読み書き・列挙などを“ツール”として提供します。
      ここには外部のREST APIは関与していません。(GitHub)
  • ただし実装側に“触る手段”は要る
    MCPサーバは裏でAPI・SDK・CLI・データベース接続・ファイルI/O・(場合により)スクレイピングやヘッドレス操作など、何らかのプログラマブルなI/Fで対象に触れます。
    外部システムが完全に人手UIしかなく、技術的に自動化できないならサーバ化は困難です。標準的にはAPI/SDKのあるシステムが望ましい、という位置づけです。(Stytch)

具体例(どんな“介在”をする?)

  • GitHub等のSaaSを統一手順で操作(Issue/PR作成、分析など)…MCPサーバがSaaSのAPIを包み、AIクライアントから同じ流儀で呼べる。(The Verge)
  • セキュアなローカル作業(プロジェクト内ファイルの読書き・生成)…“許可ディレクトリだけ”等の制限を設けてAIに権限付与。(GitHub)
  • セキュリティ製品のツール連携(例:Snyk MCPサーバをCodex CLIに接続)… ~/.codex/config.toml でサーバを登録するだけで利用可能。(Snyk User Docs)

まとめ

  • あなたの認識(「API利用を介在して使いやすくする」)は大筋OKですが、MCPは“AIクライアントと各種ツール群の総合的な接続規格”で、APIの有無に限定されないのがポイントです。
  • 最適なのはAPI/SDKがあるケース。ただしローカルFSのようにAPI不在でも、サーバがプログラム的に触れればMCP化は可能です。(Model Context Protocol)

必要なら、あなたのワークフロー(Obsidian/WordPress/ESP32開発/GitHub)に合った「どれをMCP化すると効果が高いか」マップを作ります。どのシステムを触りたいか教えてください。

以降は、Codex MCP Serverを使って、Claude CodeからCodex CLIを利用する場合についての質疑応答

添付画像(下記画像)は、GitHub「codex-mcp-server」に記載されている内容を抜粋したものです。Claude CodeからCodex CLIを使う場合、「codex toolを使って、・・・してください」というプロンプトを使えばいいのですか。

(GitHub「codex-mcp-server」より)

全体構成
Codex MCP Serverの設定ファイル「Claude Desktop configuration file」の例
プロンプト例

GPT 5 Thinking の回答

短く結論:

  • はい、その理解でほぼOKです。Claude Codeに「codex-mcp-server」をつないだ状態では、ツール名 codex が使えるようになります。
  • プロンプトで codex を使って … と書くと、Claude が明示的に codex ツール呼び出しを選びやすくなります。
    (自動で選ぶこともありますが、指示すると確実)。
  • 併せて 入力(対象コード/URL)と期待アウトプット を具体化して渡すのがコツです。

使い方の型(最短)

codex を使って、次の関数を要約し、境界ケースを含む単体テストを生成してください。
制約: Jest / TypeScript / 副作用なし
<ここにコードを貼る>

“codex tool” と書いても通じますが、ツール名は codex なので「codex を使って…」で十分です。

よく使うレシピ(そのまま貼ってOK)

  1. 関数の説明+テスト生成
codex を使って、この関数の目的/前提/計算手順/計算量を説明し、
Jest の単体テスト(正常/境界/例外)を生成してください。
<code>
  1. バグ調査(ログ付き)
codex を使って、次のエラーログの原因仮説と再現手順、最小修正案を出してください。
優先: 回帰回避・既存API互換・差分最小
<build log or stacktrace>
  1. リファクタ提案+差分パッチ
codex を使って、このファイル群をリファクタしてください。
目標: 重複削減・命名改善・例外処理統一。ESLint で警告0件。
出力: 変更方針→diff(git パッチ形式)
<files or key snippets>
  1. PRレビュー下書き
codex を使って、この PR の変更点を要約し、レビュー観点(安全性/性能/可読性/互換性)で
懸念点と具体提案コメントを箇条書きにしてください。
<PR URL or diff>
  1. README整備
codex を使って、このリポジトリの README を更新案として作成してください。
含める項目: セットアップ/ビルド/テスト/リリース/よくある質問
<repo URL or structure>

ベストプラクティス

  • 入力をセットで渡す:コード、PR/ファイルのURL、ログなど。
    貼れない場合は、Claude側にFilesystem系MCPやGitHub系ツールも併設して、取得→codexに渡す流れに。
  • 期待物(フォーマット)を明記「git パッチ形式で」「Jest のテストコードで」「表で要約」 など。
  • 安全ガード「差分最小」「互換性維持」「public API変更禁止」 のような制約を毎回添える
  • 長い作業は段階化:①計画→②小さな差分→③テスト→④最終パッチ の順で依頼。

よくある疑問

  • Q. 「codex」と書かずに自然文でも動く?
    A. うまくいくこともありますが、明示した方が確実codex ツールが選ばれます。
  • Q. ローカルの大量コードを読ませたい
    A. そのままでは見えません。Filesystem系MCPでフォルダを許可するか、要点を貼る/GitHub URLを渡す運用に。
  • Q. 認証は?
    A. codex-mcp-server は裏で Codex CLI / OpenAI API に依存します。CLIのセットアップとトークンは事前に有効化しておきましょう。

必要なら、あなたの環境(macOS/Windows、Vault/リポジトリの場所、併用したいMCPツール)に合わせて、Claude Desktop の claude_desktop_config.json と、プロンプト雛形(上のレシピを用途別に登録)を作ってお渡しします。

添付画像では、Codex CLIからOpenAI APIに繋がるようになっていますが、Codexを使う場合、plusプランで使える範囲内であれば、API使用料は発生しないのですか。

GPT 5 Thinking の回答

結論(短く)

  • ChatGPT Plus の範囲内で Codex を使う設定なら、API課金はかかりません。
  • APIキーで Codex を使う設定にすると、その分は“APIとして”従量課金されます(Plusとは別会計)。

根拠・整理

  • Codex CLI は2つの認証モードがあります:
    ①ChatGPTアカウントでサインイン(Plus/Pro/Team/Edu/Enterprise などのプランに含まれる利用枠内で使用)、②OPENAI_API_KEY を使うAPIモード(API料金で課金)。(OpenAI Developers)
  • OpenAIは明示的に「APIはChatGPT Plus等のサブスクとは別課金」と案内しています。(OpenAI)

使い分けの目安

  • 外出先や軽作業中心 → ChatGPTサインインでOK(プランのCodex利用上限の範囲で)。(OpenAI Developers)
  • 自動化やバッチ大量実行 → APIキー運用(使用量に応じてAPI課金)。料金はAPIの価格表を参照。(OpenAI Developers)

補足

  • 現在、Codex CLI/IDE は既定で GPT-5-codex 系を使う設計(必要に応じて変更可)。
    一部モデルは“APIでは未提供”という但し書きがあり、CLI/IDE(ChatGPT認証)で使うのが前提のケースがあります。(OpenAI Help Center)

要は、ChatGPT認証=サブスク内の利用枠APIキー認証=API従量、という二本立てです。

下記のように回答されましたが、Codex CLIであれば、特定のフォルダのファイルを参照できるのではないですか。

Q. ローカルの大量コードを読ませたい
A. そのままでは見えません。Filesystem系MCPでフォルダを許可するか、要点を貼る/GitHub URLを渡す運用に。

GPT 5 Thinking の回答

ご指摘どおりです。“どの経路でCodexを使っているか”で見える範囲が変わります。

結論

  • Codex CLIを“単体”で使う場合
    そのターミナルの作業ディレクトリ配下のファイルを読んだり、差分を書いたりできます(安全確認のプロンプトや書き込み許可の設定が入る設計)。つまり「特定フォルダを参照」は可能です。
  • Claude Code → codex-mcp-server経由でCodexを呼ぶ場合
    Claude側から見えるのはMCPサーバが公開しているツールだけです。添付の図の実装だと codex / ping / help などで、Filesystemツールは含まれていません。この経路だけだと、Claudeはローカルの大量ファイルを直接は読めません。
    → 対応策は (A) Claude側にFilesystem系MCPを追加(許可したフォルダを読めるようにする)か、(B) GitHub等のURLを渡す/要点を貼る です。

使い分けイメージ

  • ローカル作業をガッツリ:ターミナルで Codex CLI 単体(プロジェクト直下で実行)
  • Claudeからもローカルを触りたい:Claudeのデスクトップアプリ「Claude Desktop」で、
    設定ファイル「claude_desktop_config.json」に Filesystem系MCP + codex-mcp-server を両方登録
  • モバイルや外出先でタスク化だけiPhoneショートカットでCodex(New task)に要件とURLを投げ戻ってからCLIで仕上げ

参考:Claudeにローカル閲覧を許可したいとき(例)

設定ファイル「claude_desktop_config.json」の例

{
  "mcpServers": {
    "filesystem": {
      "command": "/usr/local/bin/mcp-filesystem",
      "args": ["--root", "/Users/you/work/project"]   // 触って良いフォルダだけ許可
    },
    "codex-cli": {
      "command": "npx",
      "args": ["-y", "codex-mcp-server"]
    }
  }
}

こうしておくと、ClaudeがFilesystemツールでファイル内容を取得→codexツールに“材料”として渡すという流れが取れます。

要するに、CLI直利用=ローカル可Claude経由=公開ツール次第という整理です。

「制約: Jest / TypeScript / 副作用なし」について説明してください

GPT 5 Thinking の回答

了解です。「制約: Jest / TypeScript / 副作用なし」は、Codex(や他のコードアシスタント)に対して“この条件で答えを作ってね”とアウトプットの仕様を縛る指示です。3点をそれぞれ平易に解説します。

1) Jest

  • 意味テストフレームワークは Jest を使うこと。
  • 狙い:生成されるテストコードの記法・関数名・マッチャdescribe/it/expect/toEqual など)をJest準拠に固定する。
  • 効果:あとで npx jest(または pnpm vitest 等に変えない限り)でそのまま実行できる形を保証。

Jest形式の最小例

// sum.ts
export function sum(a: number, b: number) { return a + b; }
// sum.test.ts
import { sum } from "./sum";

describe("sum", () => {
  it("adds two numbers", () => {
    expect(sum(2, 3)).toBe(5);
  });
});

2) TypeScript

  • 意味TypeScriptで出力してほしい.ts/.tsx、型注釈・型安全)。
  • 狙い:型に守られた設計(引数・戻り値・例外)を明確化し、保守性と信頼性を上げる。
  • 効果:エディタの補完や静的解析、ビルド時の型チェックが効く。

TSの最小例(型を明示)

export function clamp(value: number, min: number, max: number): number {
  if (min > max) throw new Error("min must be <= max");
  return Math.min(Math.max(value, min), max);
}

3) 副作用なし(pure / no side effects)

  • 意味関数外の状態に依存・変更しない純粋関数で実装すること。
    • 依存NG例:グローバル変数、現在時刻、乱数、環境変数、ファイルIO、ネット通信、DOM操作、ログ出力(厳密にはこれも副作用)。
    • 変更NG例:引数のオブジェクトを破壊的に変更する、モジュールスコープのキャッシュを書き換える、など。
  • 狙いテスト容易性・再現性・予測可能性の向上(同じ入力→必ず同じ出力)。
  • 効果:Jestのテストがシンプルになり、並列実行でも不安定になりにくい

副作用あり/なしの対比

// ❌ 副作用あり:外部変数を上書き
let counter = 0;
export function nextId() {
  counter++;           // 外部状態を変更
  return `id-${counter}`;
}

// ✅ 副作用なし:入力だけで決まる
export function makeId(n: number) {
  if (!Number.isInteger(n) || n < 0) throw new Error("n must be a non-negative integer");
  return `id-${n}`;
}

「引数を破壊しない」例

// ❌ 破壊的(副作用あり)
export function appendInPlace(arr: number[], x: number) {
  arr.push(x);
  return arr;
}

// ✅ 非破壊(副作用なし)
export function append(arr: number[], x: number): number[] {
  return [...arr, x];
}

3つを“制約”に入れるメリット

  • 生成AIがぶれずに、あなたの環境で即動く成果物を返しやすくなる。
  • チーム規約(テストはJest、言語はTS、関数は原則pure)をプロンプトで明文化できる。
  • 後工程(CI・レビュー・型チェック)で手戻りが減る

依頼テンプレ(コピペ用)

codex を使って、次の関数を実装・テストしてください。
制約: Jest / TypeScript / 副作用なし
要件: 入力の検証、エラーメッセージの明確化、境界ケースを含む単体テスト
出力: src/*.ts と __tests__/*.test.ts の構成で提示

<仕様や疑似コード、対象関数の説明>

この3点を“制約”として毎回添えるだけで、アウトプットの品質が大きく安定します。

まだまだ、MCPの詳細については知らない点も多いが、おおよそのイメージが掴めた。MCPサーバを利用することによって、セキュアなローカル作業を行うための設定や、“LLM/AIクライアントからツールやデータを安全・一貫方式で使える設定ができるとのこと。具体例を調査し、MCPクライアントとMCPサーバーの有効な組み合わせを探っていきたい。

目次