Codex Capability Bridge

Codex Capability Bridge

An MCP server that enables Claude to discover and delegate tasks to local Codex Skills and plugins, bridging Claude's natural language understanding with Codex's execution capabilities.

Category
Visit Server

README

Codex Capability Bridge

简体中文 | English

CI License: Apache--2.0 Node Zero Dependencies

让 Claude Code 或 Claude Desktop 自动发现并选择本机 Codex 的 Skills、已启用插件能力,并通过 Codex MCP 完成任务。

让 Claude 自己安装

在 Claude Desktop Cowork 中挂载本项目目录,然后直接发送:

请读取本项目 README.md 和 docs/AI_INSTALL_PROMPT.md,按照“AI 自主安装提示词”的流程自主完成 Claude Desktop 接入。允许 Codex 操作的目录是本仓库父目录。不要只给建议,直接执行、验证并汇报;不要运行会产生模型用量的真实 ImageGen 验收。

完整提示词、权限规则和故障处理见 AI 自主安装提示词

安装完成后,可以直接在 Claude Code 中说:

使用 codex 的 imagegen 插件生成一张猫咪的图片

或者不指定能力:

使用 codex 的插件生成一张猫咪的图片

Claude Code 会搜索 Codex 能力目录、选择 imagegen、检查运行时状态,再把完整任务委派给 Codex。

一条命令安装

前置条件:Node.js 20+、Claude Code、Codex CLI 或 Codex Desktop。

Claude Desktop:

npm run setup:desktop -- --project-dir "<允许 Codex 操作的项目目录>"

Claude Code:

npm run setup

如果安装器提示 Claude Code 尚未认证,请在真实验收前执行 claude auth login。插件安装和离线校验不要求 Claude API 登录,但 Claude 自己处理自然语言任务时必须已认证。

安装完成后重启 Claude Code。默认安装到 Claude Code 的 user 作用域;团队项目可使用:

npm run setup -- --scope project

Windows 也可以执行:

.\setup.ps1

macOS/Linux 也可以执行:

sh ./setup.sh

它解决什么问题

Codex 的 Skills、插件和宿主工具不属于同一层能力:

  • 独立 Skills 位于 $CODEX_HOME/skills~/.agents/skills
  • 已安装插件有启用状态,不能把缓存目录中的所有内容都当作可用插件。
  • imagegen 等系统 Skill 可以被发现,但其默认 image_gen 工具由 Codex 宿主管理。
  • codex mcp-server 对外提供 codexcodex-reply,可以启动和继续 Codex 任务。

本项目把这些差异封装在一个 Claude Code 插件中,不要求 Claude 自己理解 Codex 的目录结构。

架构

架构总览

本文档中的架构图与流程图均由 lhr-fireworks-tech-graph 技能生成——一个面向 Claude Code 的企业级 SVG 技术图生成器。想为自己的项目生成同风格插图,推荐使用它。

用户的自然语言任务经 Claude Code 的 Skill 路由进入桥接层;桥接层一边从四个来源合并能力目录并甄别启用状态,一边通过 codex mcp-server 把任务真实委派给 Codex Agent;产物落盘后经存在性与文件签名双重校验,绝对路径回传 Claude。

插件向 Claude Code 暴露 5 个稳定工具:

  • search_codex_capabilities:按用户任务搜索和排序能力。
  • describe_codex_capability:检查来源、启用状态和执行模式。
  • run_codex_capability:启动 Codex 任务。
  • continue_codex_task:使用 threadId 继续任务。
  • codex_bridge_doctor:诊断 CLI、MCP 与 ImageGen 委派链路。

委派全流程

一次「用 codex 的插件生成图片」从进入到返回,完整经过搜索排序、可执行性检查、安全闸、真实执行与产物校验五道关:

任务委派全流程

任何一道关失败都不会被掩盖:不可执行走 doctor 诊断并如实报告,产物未通过校验不会声称成功。

AI 自我修复(Actionable Errors)

桥接器的所有失败路径都内嵌可执行的恢复步骤——错误文本直接告诉调用方模型"先用哪个工具确认什么、然后怎么重试",并按 MCP 规范以 isError: true 结果返回(而非 JSON-RPC 协议错),保证模型能完整读到指引并自我纠正:

AI 自我修复回路

覆盖的失败模式与恢复动作(完整决策表见 SKILL.md):

失败 错误内嵌的恢复指引
能力 id 不存在 Did you mean: <相近候选>,或引导调用 search 列出真实 id
能力名歧义 列出全部同名完整 id 供选择
可发现但不可执行 区分「插件未启用」与「后端缺失」,分别给出动作
Codex CLI 未找到 / 工具缺失 引导 doctor 查探测报告,提示 CODEX_CLI_PATH 修复
工作目录越界 列出允许的根目录,提示改用项目内路径或 CODEX_BRIDGE_ALLOWED_ROOTS
委派任务超时 建议缩小任务或调高 CODEX_BRIDGE_TIMEOUT_MS

自修复最多两轮,之后如实向用户报告已尝试与仍缺失的内容——防止无限重试。

能力发现顺序

桥接器按以下来源构建目录:

  1. $CODEX_HOME/skills,包含隐藏的 .system Skills。
  2. ~/.agents/skills
  3. $CODEX_HOME/plugins/cache 中的插件 Skills。
  4. codex plugin list --json 返回的启用状态。

缓存中存在不代表已启用。桥接器会保留来源和状态,Claude 应优先选择可执行结果。

ImageGen 的准确边界

imagegen 是 Codex 系统 Skill,不是普通的可移植插件。它默认要求 Codex 宿主提供内置 image_gen 工具。桥接器会:

  1. 自动发现 imagegen Skill。
  2. 通过 Codex MCP 启动一个真实 Codex 任务。
  3. 明确要求 Codex 使用内置 image_gen
  4. 要求产物写入当前工作目录并返回绝对路径。
  5. 如果宿主没有提供图像工具,返回真实边界,不会偷偷切换到其他图片供应商。

因此 npm run doctor 能确认“目录与委派链路已就绪”,最终图像工具可用性在真实任务调用时由 Codex 宿主确认。

验收

1. 离线协议验收

npm test
npm run smoke

覆盖能力发现、中文意图排序、MCP 协议、Codex 线程续聊、图像内容落盘和安装幂等性。

2. 环境诊断

npm run doctor

健康输出应包含:

Codex CLI: OK
Codex MCP: OK (codex, codex-reply)
ImageGen: DISCOVERED; delegation backend=true; host verification=unknown

unknown 是有意设计:doctor 不会把“Codex MCP 能启动”冒充“宿主一定注入了 image_gen”。真实任务返回后,桥接器会对工作区内图片做文件存在性和 PNG/JPEG/WebP/GIF 文件签名校验。

3. 一键真实 ImageGen 验收

npm run acceptance:imagegen

该命令会让 Codex 真实调用内置 ImageGen,并要求生成 output/codex-bridge-cat.png。只有目标文件存在、位于工作区内且图片签名有效时才成功。此步骤可能产生模型用量。

4. Claude Code 真实验收

重启 Claude Code,在任意可写测试项目中发送:

使用 codex 的 imagegen 插件生成一张猫咪的图片,并保存到当前项目的 output/cat.png

然后发送不指定能力的版本:

使用 codex 的插件生成一张猫咪的图片,并保存到当前项目的 output/cat-auto.png

预期行为:Claude 调用搜索工具,选择 imagegen,调用运行工具,最后报告 Codex 返回的文件路径。不得只回复一段图片描述。

开发时无需正式安装,可以运行:

claude --plugin-dir ./plugins/codex-capability-bridge

配置

通常不需要配置。可选环境变量:

变量 用途
CODEX_HOME 覆盖 Codex 主目录,默认 ~/.codex
CODEX_CLI_PATH 指定可执行的 Codex CLI
CODEX_BRIDGE_CODEX_COMMAND 最高优先级指定 Codex 命令
CODEX_BRIDGE_CODEX_ARGS_JSON 自定义 Codex 命令的 JSON 字符串数组前置参数
CODEX_BRIDGE_PROJECT_DIR 覆盖默认工作目录
CODEX_BRIDGE_ALLOWED_ROOTS 额外允许的工作目录根路径,多个路径使用系统 PATH 分隔符
CODEX_BRIDGE_TIMEOUT_MS Codex 任务超时,默认 300000 毫秒
CODEX_BRIDGE_ALLOW_UNSAFE 仅显式设为 1 时允许 neverdanger-full-access
CODEX_BRIDGE_DISABLE_NPX 设为 1 时禁用官方 npm Codex CLI 后备解析

Windows 下桥接器会验证候选 CLI 是否真的可以执行,并避开可能返回 Access denied 的 WindowsApps 路径。

安全策略

  • 默认使用 on-request 审批和 workspace-write 沙箱。
  • 默认只允许当前 Claude 项目目录及其子目录。
  • 不自动安装 Codex 插件,不自动登录,不修改 Codex 配置。
  • 不自动使用 danger-full-access 或跳过权限检查。
  • 不把 API Key 写入配置、命令参数或日志。
  • 只把嵌套返回的图像内容写入工作目录下的 .codex-bridge-output
  • ImageGen 内置工具不可用时,不静默降级到需要 OPENAI_API_KEY 的 CLI 模式。

卸载

Claude Desktop:

npm run uninstall:desktop

Claude Code:

npm run uninstall

指定安装作用域:

npm run uninstall -- --scope project

卸载脚本只卸载本插件及其 marketplace 声明,不删除用户凭据、Codex 配置或其他插件。

开发与发布

npm test
npm run check

项目运行时仅使用 Node.js 内置模块,没有生产依赖。Claude marketplace 会把插件目录复制到本地缓存,因此服务器、Skill 和配置全部位于 plugins/codex-capability-bridge 内,不依赖仓库外部文件。

发布新版本时同时更新:

  • package.json
  • .claude-plugin/marketplace.json
  • plugins/codex-capability-bridge/.claude-plugin/plugin.json
  • plugins/codex-capability-bridge/server/index.mjs 中的服务器版本
  • CHANGELOG.md

故障排查

先运行:

npm run doctor

如果提示找不到 Codex CLI,设置 CODEX_CLI_PATH 指向可执行文件。桥接器也可以使用官方 npm 包 @openai/codex 作为最后后备;可通过 CODEX_BRIDGE_DISABLE_NPX=1 禁止该网络后备。Windows Codex Desktop 常见可执行候选包括用户目录下的 Codex app-server CLI;不要硬编码包含版本哈希的路径。

如果 Claude 看不到工具:

  1. 运行 claude plugin list --json 确认插件已启用。
  2. 重启 Claude Code,或在开发会话执行 /reload-plugins
  3. 运行 claude plugin validate --strict .
  4. 查看 Claude Code 的 /mcp 状态。

如果 ImageGen 被发现但真实任务失败,说明当前 Codex 委派会话没有获得内置图像工具。桥接器会保留错误原文;不要把目录发现成功误判为图像生成成功。

许可证

Apache-2.0。你可以使用、修改、商用及再发布本项目;分发原项目或衍生作品时,必须保留 LICENSENOTICE 中的原始版权和署名声明,并在修改过的文件中说明修改。参见 LICENSE

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured