codex-mcp

codex-mcp

A MCP server that enables Claude Code to delegate coding tasks to Codex via the MCP protocol, with task management, security checks, and result verification.

Category
访问服务器

README

codex-mcp

一个 MCP Server,让 Claude Code 通过 MCP 协议将编码任务委托给 Codex 执行。

解决什么问题

Claude Code 擅长理解需求、拆分任务、审查代码,但逐行写代码效率受限。Codex 擅长在 sandbox 中快速实现代码,但缺乏全局视野和审查能力。

手动在两个工具间切换的问题:

  • 需要人工复制粘贴上下文,容易丢失信息
  • 没有统一的状态管理,任务进度散落在聊天记录中
  • Codex 可能越界修改不该动的文件,缺乏自动化的安全检查
  • 返工缺乏流程控制,可能无限循环

codex-mcp 通过 MCP 工具自动化整个委托流程:Claude Code 调用 delegate-task 发起任务,调用 check-task 查看状态,调用 accept-task 审查验收——全程不离开 Claude Code。

核心保障:

  • 安全边界 — 双层约束(sandbox 硬约束 + Allowed Paths 软约束),越界自动拒绝验收
  • 结果验收 — 自动校验返回结果完整性(Summary / Tests / Files Changed),不完整则要求补全
  • 返工控制 — 最多 3 次返工,超限自动阻塞,防止无限循环
  • 并发安全 — 同仓库串行调度,不同仓库可并行
  • 异常恢复 — MCP 调用失败、线程丢失均有明确恢复路径

架构

Claude Code
    │  调用 MCP 工具 / CLI 命令
    ▼
codex-mcp (本项目)         ← CLI + MCP Server
    │  任务管理 / 安全校验 / 结果验收
    │  调用 codex exec --json subprocess
    ▼
Codex CLI (codex exec)     ← 直接 subprocess 调用
    │
    ▼
Codex 执行环境 (sandbox)
    │
    ▼
目标仓库

codex-mcp 提供两种使用方式:CLI 命令和 MCP Server,共享同一套服务层。底层通过 codex exec --json subprocess 调用 Codex(无需嵌套 MCP Client),从 JSON 事件流中提取 thread_id 和 agent_messages。

安装

前置依赖

  • Node.js >= 18
  • Codex CLI 已安装并可用(codex 命令在 PATH 中)

方式 1:全局安装(推荐)

npm install -g codex-mcp

方式 2:从源码安装

git clone <repo-url> && cd codex-mcp
npm install
npm run build
npm link        # 注册全局命令 codex-mcp

方式 3:npx 直接运行

npx codex-mcp --help
npx codex-mcp serve

CLI 使用

安装后可通过 codex-mcp 命令使用:

codex-mcp --help

委托任务

# 创建新任务并委托给 Codex
codex-mcp delegate --goal "实现 OAuth2 登录" --paths src/auth/,src/types/ \
  --constraints "不修改数据库 schema" \
  --criteria "单元测试通过"

# 从已有任务文件委托
codex-mcp delegate --file T-001

查看任务状态

codex-mcp check T-001
codex-mcp check T-001 --pretty    # 格式化输出

审查验收

codex-mcp accept T-001

返工

codex-mcp rework T-001 --items "修复越界问题,补充边界测试"

重试

codex-mcp retry T-001    # 从 blocked 恢复为 todo

启动 MCP Server

codex-mcp serve

全局选项

选项 说明
--pretty 人类可读 JSON 输出(默认紧凑 JSON)
--cwd <dir> 指定工作目录(默认当前目录)
--codex-cmd <cmd> 指定 Codex 命令(默认 codex,也可通过 CODEX_CMD 环境变量设置)

所有命令输出 JSON 格式(AI 友好),--pretty 时格式化缩进。

MCP Server 配置

方式 1:claude mcp add(推荐)

claude mcp add codex-mcp -s user -- npx codex-mcp serve

方式 2:编辑 ~/.claude/settings.json

{
  "mcpServers": {
    "codex-mcp": {
      "command": "npx",
      "args": ["codex-mcp", "serve"]
    }
  }
}

方式 3:项目级 .mcp.json

{
  "mcpServers": {
    "codex-mcp": {
      "command": "npx",
      "args": ["codex-mcp", "serve"]
    }
  }
}

方式 4:从源码启动

{
  "mcpServers": {
    "codex-mcp": {
      "command": "node",
      "args": ["<path-to-codex-mcp>/dist/serve.js"]
    }
  }
}

配置后 Claude Code 即可使用 codex-mcp 暴露的 MCP 工具。

MCP 工具

codex-mcp 向 Claude Code 暴露以下 5 个工具(CLI 和 MCP Server 共享同一逻辑):

delegate-task — 委托新任务给 Codex

自动生成任务 ID、创建任务文件、委托给 Codex 执行。

参数 类型 必填 说明
goal string 是 任务目标
allowedPaths string[] 是 允许 Codex 修改的路径列表
constraints string 否 约束条件
acceptanceCriteria string 否 验收标准
cwd string 否 项目根目录,默认当前目录

返回:{ taskId, threadId, status, filePath }

check-task — 查看任务状态

参数 类型 必填 说明
taskId string 是 任务 ID(如 T-001)

返回:{ taskId, status, reworkCount, goal, codexThreadId, lastCodexResultSummary, lastCodexTestReport }

accept-task — 审查并验收 Codex 返回的结果

运行完整审查流水线:解析结果 → 权限检查 → 完整性校验 → 越界检测。

参数 类型 必填 说明
taskId string 是 任务 ID

返回:{ taskId, action, reason, status }

action 取值:

  • done — 验收通过
  • rework — 需要返工(越界/质量不达标)
  • blocked — 阻塞(返工超限/权限拒绝/补全失败)
  • boundary_confirmation — 需要 Claude Code 确认是否扩大改动范围

rework-task — 发起返工

参数 类型 必填 说明
taskId string 是 任务 ID
reviewItems string[] 是 需要修改的具体项

返回:{ taskId, threadId, status, reworkCount }

retry-task — 从 blocked 恢复重试

参数 类型 必填 说明
taskId string 是 任务 ID

返回:{ taskId, status }

典型使用场景

在 Claude Code 中对话:

用户:把 src/auth/ 下的登录逻辑改成支持 OAuth2

Claude Code:
  1. 拆分任务,定义 allowedPaths: ["src/auth/", "src/types/auth.ts"]
  2. 调用 delegate-task 委托给 Codex
  3. Codex 在 sandbox 中实现,返回结果
  4. 调用 accept-task 自动审查:
     - 检查结果完整性(Summary/Tests/Files Changed)
     - 检查是否越界修改了 allowedPaths 之外的文件
     - 全部通过 → done
     - 越界 → 自动调用 rework-task 要求回滚

任务状态机

todo ──→ doing ──→ review ──→ done
  │        │         │ ↺
  └→ blocked ←───────┘
         │
         └→ todo (retry-task)
转换 触发条件
todo → doing delegate-task 调用成功
doing → review Codex 返回结果
review → done accept-task 验收通过
review → doing rework-task 发起返工(最多 3 次)
review → blocked 返工超限 / 越界且超限
* → blocked MCP 调用失败 / 权限拒绝
blocked → todo retry-task 人工重试

安全机制

硬约束:sandbox=workspace-write 限制 Codex 只能写入 cwd 及其子目录,操作系统级别阻止仓库外写入。

软约束:developer-instructions 注入 Allowed Paths 列表,指示 Codex 只在指定路径内工作。Codex 可能不严格遵守,因此 accept-task 在验收时自动核查 Files Changed 是否越界,越界则拒绝验收。

项目结构

src/
├── cli/
│   ├── index.ts              # CLI 入口(parseArgs 分发)
│   ├── task-io.ts            # 任务文件 filesystem I/O
│   ├── codex-runner.ts       # codex exec --json subprocess 封装(实现 McpCaller)
│   └── services.ts           # 共享服务层(CLI + MCP 共用)
├── mcp-server/
│   └── index.ts              # MCP Server 工具注册
├── main.ts                   # bin 入口:CLI
├── serve.ts                  # bin 入口:MCP Server
├── types/                    # TaskDocument, MCP 接口, 结果类型
├── task-manager/             # 状态机, 任务文件读写, 返工控制, 审查验收
├── delegation-engine/        # Prompt 生成, MCP 调用封装
├── result-processor/         # 结果解析, 完整性校验, 补全请求
├── security/                 # 越界检测, developer-instructions, 确认处理
├── scheduler/                # 并发锁, 调度器
└── error-handler/            # MCP 异常处理, 线程恢复

agents/tasks/                 # 任务文件事实源(Markdown 格式)

开发

npm install             # 安装依赖
npm run build           # TypeScript 编译
npm test                # 运行全部测试(151 个)

本地调试

# 直接运行 CLI(无需 build)
npx tsx src/main.ts --help
npx tsx src/main.ts check T-001 --pretty

# 构建后运行
npm run build
node dist/main.js check T-001

# 启动 MCP Server
node dist/serve.js

许可

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选