mcpField
C
codex-mcp-bridge

codex-mcp-bridge

本地服务
github.com/hampsterxAI 与智能体31 周前更新

关于 codex-mcp-bridge

这是一个 MCP 服务,将 Codex CLI 作为子进程运行,并提供执行、代码审查、搜索、分析和结构化输出能力。它适用于无法使用 Shell 的 MCP 客户端,以及需要会话续接、模式验证或隔离子进程的工作流。

主要功能

  1. 01使用文件上下文运行 Codex 提示
  2. 02按差异选择器审查 Git 更改
  3. 03搜索网络并返回来源网址
  4. 04根据 JSON Schema 验证结构化输出
  5. 05续接并查看对话会话
  6. 06排队运行子进程并脱敏机密

适用场景

  1. 01从 MCP 客户端审查未提交的更改
  2. 02将数据提取为通过模式验证的 JSON
  3. 03无需 Shell 即可搜索网络
  4. 04继续多轮 Codex 会话

MCP 相关

它将 Codex CLI 封装为 MCP 服务,并提供 codex、review、search、query、structured、ping 和 listSessions 等工具。可连接支持该协议的 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"hampsterx-codex-mcp-bridge": {
"command": "npx",
"args": [
"-y",
"codex-mcp-bridge"
],
"env": {
"CODEX_CLI_PATH": "<CODEX_CLI_PATH>",
"CODEX_DEFAULT_MODEL": "<CODEX_DEFAULT_MODEL>",
"CODEX_FALLBACK_MODEL": "<CODEX_FALLBACK_MODEL>",
"CODEX_MAX_CONCURRENT": "<CODEX_MAX_CONCURRENT>",
"CODEX_MCP_SERVERS": "<CODEX_MCP_SERVERS>"
}
}
}
}
启动命令npx -y codex-mcp-bridge
需要配置的环境变量
CODEX_CLI_PATHPath to the codex CLI binary. Defaults to 'codex' on PATH.
CODEX_DEFAULT_MODELDefault Codex model for codex/query/search.
CODEX_FALLBACK_MODELModel to use when the primary model hits a quota error.
CODEX_MAX_CONCURRENTMaximum concurrent Codex CLI subprocesses (default 3).
CODEX_MCP_SERVERSControls which MCP servers from ~/.codex/config.toml stay enabled inside the Codex subprocess. Empty/unset disables all non-required servers; 'inherit' passes config through; comma-separated names (e.g. 'serena,github') enables those; values starting with '{' or '[' are raw TOML.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcodex-mcp-bridge0.9.1

工具

7

收录的工具列表 · 更新于 2 周前

参数类型必填说明
filesarray否相对于 workingDirectory 的文件路径。支持行范围:'path:start-end'(例如 'src/lib.rs:900-950')。支持文本和图像(图像不使用行范围)。
modelstring否要使用的模型(例如 o3、gpt-4.1)
promptstring是要发送给 Codex 的提示词
sandboxenum否沙箱级别:read-only(默认)、workspace-write 或 full-auto(Codex CLI 便捷模式,允许 workspace-write 并自动批准)read-only | workspace-write | full-auto
timeoutinteger否超时时间(毫秒;默认:无文件时 60s,有文件时 180s+每个文件 30s,最大:600000)
sessionIdstring否用于恢复之前对话的 Session ID
resetSessionboolean否清除此会话的对话历史并重新开始(需要 sessionId)
reasoningEffortenum否推理强度级别(映射到 -c model_reasoning_effort)none | minimal | low | medium | high | xhigh
workingDirectorystring否CLI 的工作目录
maxResponseLengthinteger否响应长度的软限制(词数)

详细介绍

codex-mcp-bridge

npm version npm downloads CI License: MIT Node.js TypeScript MCP

将 Codex CLI 作为子进程运行的 MCP 服务,可通过 Model Context Protocol 工具提供代码执行、网络搜索和结构化输出。

适用于任何 MCP 客户端:Claude Code、Gemini CLI、Cursor、Windsurf、VS Code,或任何支持 MCP 的工具。

你需要它吗?

如果你正在使用可访问 Shell 的终端 Agent(Claude Code、Codex CLI、Gemini CLI),可以直接调用 Codex CLI。这样速度更快、成本更低,也没有额外开销:

# Review current branch vs main
codex review --base main

# Review uncommitted changes
codex review --uncommitted

# Review with custom focus
codex review --base main "Focus on security and error handling"

# From a worktree (run inside the worktree; `-C` is broken for `review`)
cd /path/to/worktree && codex review --base main

# General analysis
codex exec "Analyze src/utils/parse.ts for edge cases"

以下情况请改用此 MCP 桥接工具:

  • 客户端无法访问 Shell(Cursor、Windsurf、Claude Desktop、VS Code)
  • 需要通过 JSON Schema 验证的结构化输出(Codex CLI 的 --json 存在已知问题)
  • 需要在超时时捕获部分响应,并在配额耗尽时自动切换模型
  • 需要子进程隔离:显式环境变量允许列表、不允许 Shell 转义、输出中的秘密信息脱敏、并发请求按 FIFO 排队(最多同时启动 3 个进程,可通过 CODEX_MAX_CONCURRENT 配置)
  • 需要通过会话恢复实现多轮对话(sessionId / resetSession,可通过 listSessions 查看)

Worktree 注意事项:Codex CLI 问题 #9084 会导致 codex -C /path review ... 无法正常工作。请在 worktree 内运行 codex review 以规避此问题。

快速开始

npx codex-mcp-bridge
前置条件
  • 已安装 Codex CLI(npm i -g @openai/codex)
  • 已设置 OPENAI_API_KEY 环境变量,或已完成 codex auth login
Claude Code
claude mcp add codex-bridge -- npx -y codex-mcp-bridge
Gemini CLI

添加到 ~/.gemini/settings.json:

{
  "mcpServers": {
    "codex-bridge": {
      "command": "npx",
      "args": ["-y", "codex-mcp-bridge"]
    }
  }
}
Cursor / Windsurf / VS Code

添加到 MCP 设置中:

{
  "codex-bridge": {
    "command": "npx",
    "args": ["-y", "codex-mcp-bridge"],
    "env": {
      "OPENAI_API_KEY": "sk-..."
    }
  }
}

工具

工具描述
codex在文件上下文中执行提示词,支持会话恢复和沙箱控制。通过会话 ID 进行多轮对话。适用于自由形式的代码审查提示词;参见使用此 CLI 进行代码审查。
review使用 codex exec review --json 进行原生的、感知差异的 Codex 审查。无需调用方提供提示词;支持审查未提交更改、基准分支和提交。
search通过 codex --search 进行网络搜索。返回综合整理的答案和来源 URL。
query轻量级文本分析。不提供代码仓库上下文,也不支持会话。在隔离的临时目录中运行。
structured通过 Ajv 验证 JSON Schema 输出。适用于数据提取、分类,或任何需要机器可解析输出的任务。
ping健康检查,提供 CLI 版本、功能和并发诊断信息(activeCount、queueDepth)。
mcpStatus报告 Codex 对其已知各 MCP 服务的状态:认证类型、工具清单以及是否已初始化。可选诊断模式会提供明确的失败状态和错误文本。
listSessions列出活跃对话会话及其元数据(轮数、模型、时间戳)。
codex

通用执行。支持通过 sessionId 进行多轮对话、设置沙箱级别(read-only、workspace-write、full-auto)以及控制推理力度。传入 resetSession: true 可丢弃当前会话并重新开始。恢复会话前,使用 listSessions 查看活动会话。

关键参数:prompt(必填)、files、model、sessionId、sandbox、reasoningEffort、workingDirectory、timeout(默认 60s)。

search

通过 Codex CLI 的 --search 标志,使用 OpenAI 原生搜索基础设施进行网页搜索。返回综合整理的答案及来源 URL。

关键参数:query(必填)、model、workingDirectory、timeout(默认 120s)。

query

轻量级、非 Agent 式文本分析。在隔离的临时目录中启动,不会泄露桥接程序的仓库上下文。将要分析的文本传入 context 参数。支持 reasoningEffort 和 maxResponseLength。

关键参数:prompt(必填)、context、model、reasoningEffort、timeout(默认 60s)。

review

对 Codex CLI 原生差异感知审查功能的轻量封装。桥接程序将差异选择器传递给 codex exec review --json;审查提示词由上游 Codex 提供。需要通过 workingDirectory 指定一个真实的 git 仓库。

关键参数:mode(必填:uncommitted、base 或 commit)、workingDirectory(必填)、base(base 模式必填)、commit(commit 模式必填)、title、model、timeout(默认 180s)。

structured

将 JSON Schema 嵌入提示词,并使用 Ajv 验证响应。成功时返回整洁的 JSON,失败时返回验证错误。

关键参数:prompt(必填)、schema(必填,JSON 字符串)、files、model、workingDirectory、timeout(默认 60s)。

ping

无需参数。返回 CLI 版本、身份验证状态、模型配置和并发诊断信息(activeCount、queueDepth)。

mcpStatus

报告 Codex 自身的 app-server 协议所看到的各服务 MCP 状态。与其他所有工具不同,它会刻意保留 Codex 的 MCP 服务,也不会强化子进程环境,因为两者都会禁用正在测量的对象。因此,它会启动 ~/.codex/config.toml 中的服务,速度比普通调用慢。若设置 diagnostics: true,且 workingDirectory 位于受信任的项目中,它启动的线程还会启动该项目 .codex/config.toml 中配置的服务。

关键参数:diagnostics(默认 false)、workingDirectory、timeout(每次请求,默认 90s)。

模式耗时返回内容
default~6-9s清单:身份验证类型、工具名称和数量,以及每个服务的 initialized / unknown 状态。不创建线程,也不写入会话记录。
diagnostics: true~10-20s增加明确的 failed 状态和说明原因的错误文本(OAuth 授权已过期、缺少二进制文件、远程拒绝)。启动一个临时线程,不会将其写入磁盘。

解读输出:

  • unknown 不代表失败。 这表示清单中没有服务信息,也没有明确的结论。只有 diagnostics: true 才能报告 failed。
  • degraded 警告表示不要相信 unknown。 有观察到耗时较长的调用将正常服务报告为未初始化的情况,因此该工具会报告底层调用耗时,并在耗时长到足以引起怀疑时标记结果。
  • builtIn 表示 Codex 注入的、未列在配置中的服务;configuredButUnreported 表示配置中列出但 Codex 从未提及的服务。

示例:

atlassian            failed       auth=oAuth  tools=0
    error: MCP client for `atlassian` failed to start: MCP startup failed: failed to
    refresh OAuth tokens for server atlassian: ... invalid_grant: Grant not found
codex_apps           initialized  auth=bearerToken  tools=117  (builtIn)
linear               initialized  auth=oAuth  tools=57
serena               initialized  auth=unsupported  tools=22

所有工具都会附加执行元数据(_meta),其中包含 durationMs、model、fallbackUsed,以及适用时的会话信息。详情请参阅 DESIGN.md。

使用此 CLI 进行代码审查

此桥接程序不捆绑审查提示词。代码审查有三种方式:

原生上游 codex review
codex review --base main
codex review --uncommitted
codex review --base main "Focus on security and error handling"

Codex CLI 内置的、支持差异感知的审查功能。不涉及桥接。如果客户端可以访问 shell,请使用此功能。

用于原生差异感知审查的桥接 review 工具
{
  "tool": "review",
  "arguments": {
    "mode": "base",
    "base": "main",
    "workingDirectory": "/path/to/worktree"
  }
}

桥接会在 workingDirectory 中运行 codex exec review --json,捕获最终审查文本,并返回 threadId、事件计数和经过脱敏的命令输出等审查元数据。它不接受提示词。

使用调用方提供的提示词的桥接 codex 工具
{
  "tool": "codex",
  "arguments": {
    "prompt": "<your review prompt + diff or file references>",
    "sandbox": "read-only"
  }
}

桥接会使用提供的提示词运行 codex exec --sandbox read-only,并返回 stdout。对于自由形式的审查提示词,或无法用 uncommitted、base 或 commit 差异选择器表示的审查输入,请使用此工具。

代表性审查提示词

可作为起点;请随意调整:

Review the following diff:

<diff content>

Look for:
- Bugs that would surface in production
- Missing error handling on user-supplied input
- Tests modified to silence failures rather than verify behaviour
- Security issues (injection, missing auth checks, secret leaks)

For each finding cite file:line, severity (high/medium/low), and a suggested fix.
Skip style/formatting; assume an autoformatter handles those.

桥接不对提示词内容作任何限制。有关原因,请参阅 ADR-001。

配置

变量默认值说明
CODEX_DEFAULT_MODEL(CLI 默认值)所有工具的默认模型
CODEX_FALLBACK_MODELo3配额用尽时使用的备用模型(设为 none 可禁用)
CODEX_CLI_PATHcodexCLI 二进制文件的路径
CODEX_MAX_CONCURRENT3并发子进程启动数上限
CODEX_MCP_SERVERS(未设置)控制哪些 Codex 内部 MCP 服务保持启用。请参阅 DESIGN.md。
CODEX_HOME~/.codex子进程用于进行身份验证的根目录
使用第二个 Codex 账户运行桥接

CODEX_HOME 会完整切换身份:身份验证信息、config.toml、技能和线程历史记录都存放在该根目录下,因此第二个根目录就相当于第二套安装。 此桥接发出的每次工具调用都是机器流量,而非有人正在使用的会话,因此它很适合用于工作或团队账户,而交互式 codex 则继续使用个人账户。

请在服务注册中设置它,而不要依赖当前 shell 环境,这样选择就不会受启动客户端的终端影响:

{
  "mcpServers": {
    "codex": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "codex-mcp-bridge"],
      "env": {
        "CODEX_HOME": "/home/you/.codex-work",
        "CODEX_DEFAULT_MODEL": "gpt-5.6-sol"
      }
    }
  }
}

设置前请注意以下三点:

  • 先使用该根目录登录,因为根目录是否可用取决于其凭据:CODEX_HOME=/home/you/.codex-work codex login(或 codex login --with-api-key)。使用 CODEX_HOME=/home/you/.codex-work codex login status 检查登录状态。
  • JSON env 块不支持条件设置。 如果该根目录失去登录状态,桥接启动的每个子进程仍会以它为目标运行,而不会像 shell 包装脚本那样回退到默认根目录。
  • 同时设置 CODEX_DEFAULT_MODEL。 桥接会从 CODEX_HOME 解析 config.toml,因此新建的根目录中没有该文件,模型就会退回 CLI 默认值。缺少该文件也会使 CODEX_MCP_SERVERS 的大部分配置不起作用:未配置任何内容时,没有可禁用或继承的内容,也没有可启用的名称;而这恰好符合默认设置的预期。唯一不会被禁用的是原始 TOML 覆盖(以 { 或 [ 开头的值),它会直接作为 -c mcp_servers=... 传递,不会读取 config.toml。

选择 Codex MCP 服务

你的需求……可考虑
结构化输出、模型回退、并发管理、会话恢复此桥接
使用 conversationId 进行会话串联、转发回调 URI@tuannvm/codex-mcp-server
带审批策略的结构化补丁输出cexll/codex-mcp-server
支持并行子 Agent 的精简 codex exec 包装器codex-as-mcp
原生 Codex MCP(实验性,无需包装器)codex mcp serve(文档)

性能

Codex CLI 的启动开销极小(<100ms),因此总耗时主要取决于模型推理。

场景典型耗时
简单提示词9-12s
网络搜索~17s

默认超时时间(60-300s)足以应对常见工作负载。

Bridge 系列

两个 MCP 服务采用相同的架构,但底层 CLI 不同。每个服务都将终端 Agent 封装为子进程,并将其作为 MCP 工具提供。选择与模型提供商匹配的服务,或同时运行两个服务以支持跨模型工作流。

codex-mcp-bridgeclaude-mcp-bridge
CLICodex CLIClaude Code
提供商OpenAIAnthropic
工具codex、review、search、query、structured、ping、listSessionsquery、review、search、structured、ping、listSessions
代码审查review 工具封装原生 codex exec review --json,或使用由调用方提供提示词的 codex 工具review 工具使用由调用方提供的提示词,并采用强化的隔离默认设置
结构化输出Ajv 验证原生 --json-schema
会话恢复使用支持多轮对话的会话 ID原生 --resume
预算上限不支持原生 --max-budget-usd
推理力度控制reasoningEffort(low/medium/high)--effort low/medium/high/max
冷启动<100ms(耗时主要取决于推理)~1-2s
身份验证OPENAI_API_KEYclaude login(订阅)或 ANTHROPIC_API_KEY
费用按 Token 付费订阅(已包含)或 API 额度
并发数3(可配置)3(可配置)
模型回退自动重试并使用备用模型自动重试并使用备用模型

两者共用:子进程环境隔离、路径沙箱、输出脱敏(剥离机密信息)、FIFO 并发队列、MCP 工具注解、_meta 响应元数据、进度心跳。

开发

npm install
npm run build        # Compile TypeScript
npm run dev          # Watch mode
npm test             # Run tests
npm run lint         # ESLint
npm run typecheck    # tsc --noEmit

延伸阅读

  • DESIGN.md - 架构、MCP 服务控制语法、会话、输出解析、响应元数据
  • SECURITY.md - 环境隔离、路径沙箱、输出脱敏、资源限制
  • CHANGELOG.md - 发布历史

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。