Codex MCP HTTP桥
OpenAI兼容的HTTP+SSE“桥”,用于MCP上的Codex(stdio上的JSON-RPC)。这是为了与期望OpenAI风格流媒体(包括Xcode Coding Intelligence)的客户端配合使用而设计的。
所得
- OpenAI端点:模型、聊天完成(流媒体+非流媒体)、嵌入
- 流媒体传输方式为
chat.completion.chunkSSE活动choices[0].delta.content,并以结尾data: [DONE] - Codex是作为MCP服务器进程生成的,并通过stdio与之通信
需求
- Node.js
>= 18 codex已安装并可用于PATH(或设置CODEX_BIN)
快速入门
npm ci
npm run build
npm start健康检查:
curl http://localhost:3333/health端点
GET /healthGET /v1/modelsPOST /v1/chat/completionsPOST /v1/embeddings
流媒体(SSE)示例
这应该打印多个 data: {...} 行包含 choices[0].delta.content,并以结尾 data: [DONE].
curl -N http://localhost:3333/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"gpt-5.2","stream":true,"messages":[{"role":"user","content":"Write 2 short sentences about TypeScript."}]}'认证
如果 API_KEY 如果已设置,则所有与OpenAI兼容的端点都需要它。
- 默认标题:
Authorization - 可选承载强制:设置
REQUIRE_BEARER=1要求Authorization: Bearer ...
例子:
curl -N http://localhost:3333/v1/chat/completions \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_KEY' \
-d '{"model":"gpt-5.2","stream":true,"messages":[{"role":"user","content":"Say hello."}]}'配置
核心:
PORT(默认值3333)MODEL_ID(默认值gpt-5.2)CODEX_BIN(默认值codex)CODEX_PROFILE(默认值clean)
认证:
API_KEY(可选)API_KEY_HEADER(默认值authorization)REQUIRE_BEARER(1要求Authorization: Bearer ...)
流行为:
RPC_TIMEOUT_MS(默认值1200000)SSE_KEEPALIVE_MS(默认值15000)STREAM_CHUNK_CHARS(默认值64)HARD_REQUEST_TIMEOUT_MS(默认值300000)
日志记录/调试:
BRIDGE_LOG_REQUESTS(1记录完整的入站HTTP请求;默认0)BRIDGE_LOG_REQUESTS_REDACT(0禁用编辑;默认1)CODEX_BRIDGE_LOG_EVENTS(0抑制非常嘈杂的每个事件日志;默认1)
系统提示处理(Xcode):
一些客户端(特别是Xcode)发送非常大的 role: "system" 旨在驱动其内部工具的消息。当逐字转发时,这些指令可能会主导提示,使Codex行为过于谨慎(例如“还不写代码”,“只用##SEARCH:…”回应)。
BRIDGE_SYSTEM_MESSAGES=all|none|first|last(默认值all)
- 默认值为 none 当 User-Agent 以...开始 Xcode/ (除非明确覆盖)。 - 对于Xcode, none 往往是最好的。
BRIDGE_SYSTEM_MAX_CHARS=(默认值0意思是“无限制”)
- 在以下情况下根据系统消息应用 BRIDGE_SYSTEM_MESSAGES 包括任何系统消息。
测试和CI
运行快速测试套件(不需要安装Codex):
npm testCI定义见 .github/workflows/ci.yml (节点18/20/22矩阵)。
烟雾测试(端到端)
此仓库包含一个端到端的流式烟雾脚本,该脚本启动服务器,点击 /health,运行流媒体 curl,并断言流式增量和 [DONE]:
npm run smoke这要求Codex可用(因为它执行真正的MCP流程)。
架构说明
- HTTP层是内置的
src/app.ts因此,无需启动真正的食品法典委员会流程,即可对其进行测试。 - 流媒体来自Codex JSON-RPC通知(
codex/event);网桥将这些作为OpenAI风格的SSE块转发。 src/server.ts仅用于布线:它启动MCP桥并安装应用程序。
更多特定于回购的规则存在 CONVENTIONS.md.
支持/捐赠
如果你觉得这很有用,你可以通过以下方式添加你的捐赠链接 .github/FUNDING.yml (GitHub赞助商和/或自定义网址)。一旦你填充了该文件,GitHub将在仓库上显示一个“赞助商”按钮。
