𝕏 f B! L
案件・求人数 12,345
案件を探す(準備中) エージェントを探す(準備中) お役立ち情報 ログイン
案件・求人数 12,345
Codex CLI×MCP連携で外部ツールを統合する完全ガイド

Codex CLI×MCP連携で外部ツールを統合する完全ガイド

Codex CLIMCP連携外部ツール自動化
目次
⚡ 3秒でわかる!この記事のポイント
  • MCP(Model Context Protocol)でCodex CLIと外部ツールを標準化された方法で接続
  • データベース・社内API・ドキュメント管理ツールとの連携パターンを実践解説
  • カスタムMCPサーバーの構築手順でチーム独自のワークフローを実現

「Codex CLIから直接データベースを操作できたらいいのに」「社内のAPIドキュメントをAIが参照してくれたら開発がもっと速くなるのに」——そんな思いを抱えている開発者は多いでしょう。

結論から言えば、Model Context Protocol(MCP)を使えば、Codex CLIを外部ツール・サービスの統合ハブとして活用できます。 データベースのスキーマ情報取得、社内ドキュメントの参照、外部APIの呼び出しまで、AIエージェントが直接操作できるようになります。

この記事では、MCPの基本概念からCodex CLIでの具体的な設定方法、実践的な連携パターン、カスタムMCPサーバーの構築まで解説します。

Codex CLI×MCP連携の全体像

Model Context Protocol(MCP)とは何か

MCPの設計思想 — AIと外部ツールの標準接続

MCP(Model Context Protocol)は、AIエージェントと外部ツールを接続するためのオープンスタンダードです。Anthropicが提唱し、現在はOpenAIを含む複数のAIツールベンダーが採用しています。

MCPの核心は「ツールディスカバリー」にあります。AIエージェントがMCPサーバーに接続すると、そのサーバーが提供する機能(ツール)の一覧とスキーマを自動的に取得し、必要に応じて呼び出します。開発者は個別のAPI連携コードを書く必要がありません。

MCP公式仕様では、以下の3つの主要コンポーネントが定義されています。

  • Tools: エージェントが呼び出せる関数(データ取得、操作実行など)
  • Resources: エージェントが参照できるデータソース(ファイル、ドキュメントなど)
  • Prompts: 定型的な指示テンプレート

Codex CLI内蔵MCPクライアントの仕組み

Codex CLIはMCPクライアントを内蔵しており、設定ファイルにMCPサーバーの情報を記述するだけで外部ツールとの連携が有効になります。

Codex CLIの起動時にMCPサーバーへの接続が確立され、利用可能なツールがエージェントのツールリストに自動追加されます。以降、ユーザーの指示に応じてエージェントが適切なツールを選択・呼び出しします。

Codex CLIの基本については「Codex CLI使い方入門」で解説しています。

MCPサーバーのセットアップ手順

codex mcp add によるサーバー登録

最も簡単な方法は、Codex CLIのコマンドでMCPサーバーを登録することです。

# npmパッケージとして公開されているMCPサーバーを追加
codex mcp add postgres-mcp -- npx @mcp/postgres --connection-string "postgresql://localhost/mydb"

# Dockerコンテナとして動作するMCPサーバーを追加
codex mcp add github-mcp -- docker run -i --rm ghcr.io/mcp/github --token $GITHUB_TOKEN

登録されたMCPサーバーは、次回のCodex CLI起動時に自動的に接続されます。

config.tomlでの永続設定

プロジェクト単位でMCPサーバーを設定する場合は、codex.toml に記述します。

# codex.toml
[mcp.postgres]
command = "npx"
args = ["@mcp/postgres", "--connection-string", "postgresql://localhost/mydb"]
env = { PGPASSWORD = "from-env" }

[mcp.github]
command = "npx"
args = ["@mcp/github"]
env = { GITHUB_TOKEN = "from-env" }

設定の詳細は「Codex CLI設定ガイド」を参照してください。

実践パターン① — データベース連携(PostgreSQL・MongoDB)

スキーマ情報の自動取得

PostgreSQL MCPサーバーを接続すると、Codex CLIはデータベースのテーブル構造を自動的に把握します。

> このデータベースのusersテーブルの構造を教えてください

🔧 Using tool: postgres.describe_table(table="users")

usersテーブル:
- id: SERIAL PRIMARY KEY
- email: VARCHAR(255) UNIQUE NOT NULL
- name: VARCHAR(100) NOT NULL
- created_at: TIMESTAMP DEFAULT NOW()
- updated_at: TIMESTAMP DEFAULT NOW()

マイグレーション生成の自動化

スキーマ情報を踏まえた上で、自然言語からマイグレーションファイルを生成できます。

> usersテーブルにprofile_image_urlカラムを追加するマイグレーションを作成して

🔧 Using tool: postgres.describe_table(table="users")
📝 Creating migration file: migrations/20260314_add_profile_image_url.sql

生成されるSQLは実際のスキーマに基づいているため、型の不整合やカラム名の重複といったエラーが自動的に回避されます。

データベース関連の自動化は「Codex CLI データベースマイグレーション」でも詳しく解説しています。

実践パターン② — 社内API・ドキュメント連携

Confluence/Notionからコンテキスト注入

社内のドキュメント管理ツールをMCPサーバー経由で接続すれば、開発中にAPIドキュメントや設計書を参照できます。

codex mcp add notion-mcp -- npx @mcp/notion --api-key $NOTION_API_KEY

接続後のやり取り例:

> APIの認証仕様をNotionのドキュメントから確認して、ログイン機能を実装して

🔧 Using tool: notion.search(query="API認証仕様")
🔧 Using tool: notion.get_page(page_id="abc123")
📝 認証仕様を確認しました。JWT Bearer Token方式ですね。
📝 ログイン機能を実装します...

Swagger/OpenAPI定義の活用

REST APIのOpenAPI定義ファイルをMCPリソースとして公開すれば、エンドポイントの仕様に基づいたクライアントコード生成やテスト作成が可能です。

[mcp.openapi]
command = "npx"
args = ["@mcp/openapi", "--spec", "./api/openapi.yaml"]

API開発全般については「Codex CLI API開発ガイド」を参照してください。

カスタムMCPサーバーの構築(Node.js / Python)

ツールディスカバリーとスキーマ定義

独自のMCPサーバーを構築する場合、ツールのスキーマを定義する必要があります。

// Node.js版カスタムMCPサーバー
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';

const server = new McpServer({
  name: 'my-company-tools',
  version: '1.0.0',
});

// ツールの定義
server.tool(
  'get_employee',
  '社員情報を取得する',
  { employeeId: z.string().describe('社員ID') },
  async ({ employeeId }) => {
    const employee = await fetchEmployee(employeeId);
    return { content: [{ type: 'text', text: JSON.stringify(employee) }] };
  }
);

// サーバーの起動
const transport = new StdioServerTransport();
await server.connect(transport);

双方向データフローの実装

MCPサーバーはデータの取得だけでなく、外部システムへの書き込みも可能です。

server.tool(
  'create_jira_ticket',
  'JIRAチケットを作成する',
  {
    title: z.string().describe('チケットタイトル'),
    description: z.string().describe('説明'),
    priority: z.enum(['high', 'medium', 'low']).describe('優先度'),
  },
  async ({ title, description, priority }) => {
    const ticket = await jiraClient.createIssue({ title, description, priority });
    return { content: [{ type: 'text', text: `チケット作成完了: ${ticket.key}` }] };
  }
);

セキュリティとアクセス制御

MCP連携ではセキュリティに特に注意が必要です。

必須の対策:

  • MCPサーバーの認証情報は環境変数で管理(ハードコード厳禁)
  • データベース接続は読み取り専用ユーザーを使用(書き込み権限は必要時のみ)
  • MCPサーバーのログを有効化し、どのツールが呼び出されたか記録する
  • 本番環境のデータベースには直接接続しない(ステージング環境を使用)
# セキュリティ設定の例
[mcp.postgres]
command = "npx"
args = ["@mcp/postgres", "--connection-string", "from-env:DATABASE_URL", "--read-only"]

セキュリティ全般は「Codex CLI セキュリティ管理」で解説しています。

ローカルモデル(Ollama)との併用テクニック

コスト削減やプライバシー保護の観点から、MCPサーバーの一部機能をローカルモデルで処理する手法も有効です。

# Ollamaでローカルモデルを起動
ollama serve

# Codex CLIの設定でローカルモデルをフォールバックに指定
codex config set fallback-model ollama/codellama

機密性の高い社内データを含むクエリはローカルモデルで処理し、一般的なコーディングタスクはクラウドのGPT-4oで処理するというハイブリッド構成が現実的です。

カスタムモデル設定は「Codex CLI カスタムモデルガイド」を参照してください。

まとめ — MCPで広がるCodex CLIの可能性

MCP連携により、Codex CLIは単なる「コード生成ツール」から**「開発環境全体を統合するAIハブ」**へと進化します。データベース・社内ドキュメント・外部API・タスク管理ツール——あらゆるシステムとAIが直接やり取りすることで、開発者は本質的な設計・判断に集中できるようになります。

今すぐ試せるアクション:

  1. codex mcp add でPostgreSQLまたはGitHubのMCPサーバーを追加
  2. データベースのスキーマ情報を使ったマイグレーション生成を体験
  3. チーム独自のカスタムMCPサーバーの構築を検討
  4. セキュリティポリシーを整備した上で本番ワークフローに組み込む

Codex CLI完全攻略シリーズの他のエピソードも読む →

シリーズ一覧を見る

SES案件をお探しですか?

SES記事をもっと読む →
🏗️

SES BASE 編集長

SES業界歴10年以上のメンバーが在籍する編集チーム。SES企業での営業・エンジニア経験、フリーランス独立経験を持つメンバーが、業界のリアルな情報をお届けします。

📊 業界データに基づく記事制作 🔍 IPA・経済産業省データ参照 💼 SES実務経験者が執筆・監修