AI代理多模型CLI代理服务

提供OpenAI Codex和Google Gemini的CLI代理服务,支持AI代理通过MCP工具直接调用代码生成、重构、调试、分析、总结等功能。

  • by donghae0414
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 donghae0414/codex-gemini-mcp

使用说明

🌐 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

运行时文件

  • 默认运行时目录: <cwd>/.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 <text> 呼叫
  • 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

  • 通用(background true/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服务器进行了重新实现。

许可证

麻省理工学院