🌐 Language:韩语| 英语
codex gemini mcp
AI代理(Claude、Cursor等) OpenAI Codex命令行界面哇 谷歌Gemini CLI可以通过MCP工具直接调用的代理服务器。
主要功能
ask_codex-代理要求Codex生成、重构和调试代码ask_gemini-代理要求Gemini进行分析、摘要和代码评论- 后台运行 -将需要很长时间才能完成的任务转移到后台,检查状态(
check_job_status·等待(wait_for_job·中断(kill_job·查询列表(list_jobs)管理 - 多型号编排 -一个代理可以同时利用Codex和Gemini来分担工作
在一个包中 codex-mcp哇 gemini-mcp 提供两个MCP服务器二进制文件,基于stdio transport。
需求
- Node.js 20+
codex安装CLI(npm i -g @openai/codex)gemini安装CLI(npm i -g @google/gemini-cli)
MCP服务器将按原样运行每个CLI,因此首先在本地终端上完成登录/身份验证。 codex / gemini 请确保CLI可以立即运行。
安装
从npm安装(如果已部署):
npm i -g @donghae0414/codex-gemini-mcp无需全局安装即可使用npx:
npx -y -p @donghae0414/codex-gemini-mcp codex-mcp
npx -y -p @donghae0414/codex-gemini-mcp gemini-mcp在源位置安装(开发/测试):
npm install
npm run build
npm link客户机特定MCP设置示例
全局安装条件:
{
"mcpServers": {
"codex-mcp": {
"command": "codex-mcp",
"args": []
},
"gemini-mcp": {
"command": "gemini-mcp",
"args": []
}
}
}基于npx,无需全局安装:
{
"mcpServers": {
"codex-mcp": {
"command": "npx",
"args": ["-y", "-p", "@donghae0414/codex-gemini-mcp", "codex-mcp"]
},
"gemini-mcp": {
"command": "npx",
"args": ["-y", "-p", "@donghae0414/codex-gemini-mcp", "gemini-mcp"]
}
}
}开放代码(opencode.json):
{
"mcp": {
"codex-mcp": {
"type": "local",
"command": ["npx", "-y", "-p", "@donghae0414/codex-gemini-mcp", "codex-mcp"]
},
"gemini-mcp": {
"type": "local",
"command": ["npx", "-y", "-p", "@donghae0414/codex-gemini-mcp", "gemini-mcp"]
}
}
}特定于客户端的配置文件位置(注意:
- Claude Code:项目根
.mcp.json(按项目)或~/.claude.json(全局) - 克劳德桌面(macOS):
~/Library/Application Support/Claude/claude_desktop_config.json - 克劳德桌面(Windows):
%APPDATA%\Claude\claude_desktop_config.json - 克劳德桌面(Linux):
~/.config/Claude/claude_desktop_config.json - 开放代码:
~/.config/opencode/opencode.json
环境变量为shell配置文件(.zshrc 等)可能不会自动注入,如果可能的话, env 请用积木传递。
违约模型
默认型号为 src/config.ts硬编码为,可以覆盖为环境变量。
| Provider | 基本模型 | 环境变量override |
|---|---|---|
| 法典 | gpt-5.3-codex | MCP_CODEX_DEFAULT_MODEL |
| 双子座 | gemini-3-pro-preview | MCP_GEMINI_DEFAULT_MODEL |
型号选择优先级: 请求参数 model > 环境变量 > 硬编码默认值
本地开发
npm install
npm run build
npm run start:codex
npm run start:gemini开发模式:
npm run dev:codex
npm run dev:gemini运行时文件
- 默认运行时目录:
/.codex-gemini-mcp/
- background job状态: jobs/ - background job I/O(content): prompts/ - 结构化记录(JSONL): logs/
- 运行时路径override:
- MCP_RUNTIME_DIR:运行时根目录 - MCP_LOG_DIR:日志目录
清除(使用默认路径时):
rm -rf .codex-gemini-mcp安全/隐私说明
background: true(默认)请求为.codex-gemini-mcp/prompts/*content*.json将prompt/response保存在中。- 如果在提示符下放入秘密(令牌、密码、个人信息等),则可能会保留在本地文件中。
- 默认情况下,日志记录未保存正文,但打开下面的标志时,日志可能包含文本:
- MCP_LOG_PREVIEW=1 - MCP_LOG_FULL_TEXT=1
工具模式
ask_codex
prompt(字符串,必填)model(字符串,可选)model银[A-Za-z0-9][A-Za-z0-9._:-]*只允许模式(最多128个字符)working_directory(string,optional):CLI进程的执行目录(cwd)background(布尔值,可选,默认值true)reasoning_effort(字符串,可选:minimal|low|medium|high|xhigh)
ask_gemini
prompt(字符串,必填)model(字符串,可选)model银[A-Za-z0-9][A-Za-z0-9._:-]*只允许模式(最多128个字符)working_directory(string,optional):CLI进程的执行目录(cwd)background(布尔值,可选,默认值true)
wait_for_job
job_id(string,required,8位hex)timeout_ms(number,optional,default3600000,max3600000;超过3600000的值为3600000,cap)
check_job_status
job_id(string,required,8位hex)
kill_job
job_id(string,required,8位hex)signal(字符串,可选:SIGTERM|SIGINT,默认值SIGTERM)
list_jobs
status_filter(字符串,可选:active(已生成/正在运行)|completed|failed(失败/超时)|all,默认值active)limit(数字,可选,默认50)
运行时注意事项
ask_codex:codex exec --ephemeral寻呼(reasoning_effort指定时-c model_reasoning_effort=...添加)ask_gemini:gemini --prompt呼叫ask_*是background未指定时默认true以运行background: true呼叫时.codex-gemini-mcp/jobs,.codex-gemini-mcp/prompts将状态/IIO(content)文件保存到- 结构化记录(JSONL):
.codex-gemini-mcp/logs/mcp-YYYY-MM-DD.jsonl
- 默认:仅保存元数据(不保存正文) - MCP_LOG_PREVIEW=1:保存preview - MCP_LOG_FULL_TEXT=1:保存全文 - 日志事件与保存JSONL文件一起 stderr也镜像到
- 型号选择优先级:
request.model > env default > hardcoded default
- codex环境: MCP_CODEX_DEFAULT_MODEL (默认值: gpt-5.3-codex) - 双子座环境: MCP_GEMINI_DEFAULT_MODEL (默认值: gemini-3-pro-preview)
- CLI timeout默认值为
MCP_CLI_TIMEOUT_MS或3600000 ms(60分钟) stdout + stderr合计功率MCP_MAX_OUTPUT_BYTES超过的话CLI_OUTPUT_LIMIT_EXCEEDED以结束- 输出通过禁用颜色/TTY来运行稳定的文本管道(
NO_COLOR=1,FORCE_COLOR=0,TERM=dumb)
登录方式 background
- 通用(
backgroundtrue/false全部:在JSONL中request事件和terminal(response或者error)记录事件,request_id可通过进行第一次跟踪 background: false(foreground):在日志事件中job_id没有。jobs/,prompts/不创建文件background: true背景
- MCP响应 jobId, contentFile, statusFile 返还 - Jsonl response/error 在活动中 job_id 记录 - jobs/*status*.json, prompts/*content*.json呃 requestId 存储 - 因此 request_id \ job_id可以双向映射日志/状态文件
环境变量
MCP_CODEX_DEFAULT_MODEL:codex基本型号MCP_GEMINI_DEFAULT_MODEL:gemini基本型号MCP_CLI_TIMEOUT_MS:默认CLI timeout(ms)MCP_MAX_OUTPUT_BYTES:最大输出字节数(cap,默认1048576=1MiB)MCP_RUNTIME_DIR:运行时文件默认根目录(.codex-gemini-mcp)MCP_LOG_DIR:日志路径覆盖MCP_LOG_PREVIEW:是否保存日志preview(1双面激活)MCP_LOG_FULL_TEXT:是否记录全文(1双面激活)
当前状态
- 二进制条目:
codex-mcp,gemini-mcp - 验证完成:
ask_codex,ask_gemini前台/后台呼叫成功 - 验证完成:
wait_for_job,check_job_status,kill_job,list_jobs实际呼叫成功 - 实施完成:结构化记录(第D阶段)
- 实施完成:强制output cap+model regex validation
范围(故意最小化)
此示例中没有以下功能:
- 型号fallback chain
- standalone bridge捆绑包
故障排除
CLI_NOT_FOUND:
- codex 或者 gemini CLI不在PATH中时发生。 - npm i -g @openai/codex / npm i -g @google/gemini-cli 安装后重试。
- 输出被截断(
CLI_OUTPUT_LIMIT_EXCEEDED):
- MCP_MAX_OUTPUT_BYTES增加或减少提示/输出。
- background文件堆积过多:
- 必要时 .codex-gemini-mcp/请亲自整理。
致谢
这个项目 哦,我的claudecode参考在中实现的Codex/Gemini MCP服务器进行了重新实现。
