Skip to main content
Glama

codex-bridge-mcp

A two-way MCP bridge that lets Claude Code drive the Codex CLI, and lets Codex talk back.

  • Claude writes a plan → Codex executes it, or adversarially reviews it against the real code.

  • While working, Codex can ask Claude questions (and block until answered) or send progress / findings.

  • Claude can answer, send corrections mid-run, or start follow-up turns in the same Codex session.

  • Keep several named Codex sessions per project, e.g. a reviewer on high effort and an executor on a cheaper setting.

Claude Code ──MCP "codex"──▶ server.mjs ──spawns──▶ codex exec --json
     ▲                          │                       │
     │                   ~/.codex-bridge/jobs/<id>/     │ MCP "claude_bridge"
     └──── codex_wait ◀──────── mailbox ◀───────────────┘ (injected per job)

Requirements

  • Node.js 18+

  • Codex CLI, logged in (codex login). Tested with codex-cli 0.162.

  • Claude Code

Related MCP server: codex-mcp

Install

claude mcp add codex -s user -- npx -y codex-bridge-mcp

Or from source:

git clone https://github.com/WeiqiZhou2002/codex-bridge-mcp.git
cd codex-bridge-mcp && npm install
claude mcp add codex -s user -- node "$PWD/server.mjs"

Then start a new Claude Code session. claude mcp list should show codex ✔ Connected.

Usage

Just ask Claude in plain language:

Start a Codex reviewer on xhigh and have it adversarially review plans/plan-v3.md.

Start a Codex executor on high to implement the plan; it should ask me if anything is unclear.

Tell the reviewer that finding #2 is wrong because the cache is per-request, and ask it to re-check.

Tools Claude gets (server codex)

Tool

What it does

codex_start

Start a job in the background. mode: execute (implement the plan, workspace-write), review (adversarial review, read-only), freeform. Takes plan text and/or plan_file, optional name, model, effort (minimal…xhigh), sandbox, instructions.

codex_wait

Block until Codex asks a question, sends a message, or finishes/fails its turn. Returns a digest of the commands it ran and files it changed.

codex_send

With question_id: answer a blocking question. While Codex is running: queue a message it receives on its next bridge call. After the turn ended: start a new turn in the same Codex session.

codex_cancel

Stop a running job.

codex_jobs

List jobs with status, name, session and cwd.

Anywhere a job_id is expected you can pass the job's name instead; the newest job with that name wins. A job's model, effort and sandbox are fixed at start and reused by every follow-up turn.

Tools Codex gets (server claude_bridge, injected via -c per job)

Tool

What it does

ask_claude(question)

Blocks until Claude answers (default timeout 30 min; on timeout Codex proceeds and states its assumption).

message_claude(message, kind)

Non-blocking note: progress, finding, deviation, blocker.

check_inbox()

Pick up corrections Claude queued. Queued messages are also appended to any bridge tool result.

Your normal ~/.codex/config.toml (default model, other MCP servers, etc.) still applies.

How it works

Each job gets a directory under ~/.codex-bridge/jobs/<id>/ (override with CODEX_BRIDGE_HOME):

  • events.jsonl: Codex → Claude. Questions, messages, a digest parsed from codex exec --json, turn results.

  • answers/<qid>.json: Claude → Codex answers to ask_claude.

  • inbox.jsonl: Claude → Codex unsolicited messages.

Follow-up turns use codex exec resume <session_id>. Job metadata persists on disk, so a later Claude session can keep talking to the same Codex session. Turns that were running when the previous Claude session exited are marked resumable.

Caveats

  • execute mode lets Codex write inside the working directory. danger-full-access is only used if you ask for it explicitly.

  • In Codex's workspace-write sandbox, Codex usually cannot write to .git, so let Claude (or you) do the commits.

  • Codex's --json event format is not a stable API. If a Codex upgrade changes it, the activity digest may get thinner, but final answers still come through.

  • Two jobs in the same folder do not share context. Claude relays between them.

Development

npm test

The tests drive the server through a real MCP client against a fake codex binary (test/fake-codex.mjs), so they are fast and don't spend tokens. Set CODEX_BIN to point the bridge at a different Codex executable.

License

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      Connects AI assistants like Claude to the Codex CLI for code analysis, editing, and execution. Supports file references with @ syntax, sandboxed code execution with approval workflows, and structured code changes for automated refactoring and documentation.
      8
      88 npm
      176
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Bridges Claude Code and OpenAI Codex CLI for an interactive plan-execute-review workflow, enabling Claude to interview, design, and review while Codex implements code changes.
      7
      24 npm
      3
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Lets Codex delegate coding and repository work to an installed Claude Code CLI with permission-aware inspect/write access, model and effort selection, resumable and cloud-attached sessions, and durable synchronous or asynchronous jobs.
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables Claude Code and OpenAI Codex CLI to act as bidirectional partners by letting each ask the other for code review, explanations, planning, performance analysis, and implementation help. It also provides background job tools for starting, observing, waiting on, and cancelling delegated tasks.
      6
      116 npm
      1
      MIT