loading…
Search for a command to run...
loading…
A TypeScript-based MCP server that provides tools to interact with local Codex and Gemini CLIs via stdio transport. It enables users to execute prompts through
A TypeScript-based MCP server that provides tools to interact with local Codex and Gemini CLIs via stdio transport. It enables users to execute prompts through the ask_codex and ask_gemini tools, supporting custom models and timeout configurations.
🌐 Language: 한국어 | English
AI 에이전트(Claude, Cursor 등)가 OpenAI Codex CLI와 Google Gemini CLI를 MCP 도구로 직접 호출할 수 있게 해주는 프록시 서버입니다.
ask_codex — 에이전트가 Codex에게 코드 생성·리팩터링·디버깅을 요청ask_gemini — 에이전트가 Gemini에게 분석·요약·코드 리뷰를 요청check_job_status)·대기(wait_for_job)·중단(kill_job)·목록 조회(list_jobs)로 관리하나의 패키지에서 codex-mcp와 gemini-mcp 두 개의 MCP 서버 바이너리를 제공하며, stdio transport 기반으로 동작합니다.
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
전역 설치 기준:
{
"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 (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"]
}
}
}
클라이언트별 설정 파일 위치(참고):
.mcp.json (프로젝트별) 또는 ~/.claude.json (전역)~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json~/.config/opencode/opencode.json환경 변수는 셸 프로필(.zshrc 등)에서 자동으로 주입되지 않을 수 있으므로, 가능하면 설정 파일의 env 블록으로 전달하세요.
기본 모델은 src/config.ts에 하드코딩되어 있으며, 환경 변수로 override할 수 있습니다.
| Provider | 기본 모델 | 환경 변수 override |
|---|---|---|
| codex | gpt-5.3-codex |
MCP_CODEX_DEFAULT_MODEL |
| gemini | 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/jobs/prompts/logs/MCP_RUNTIME_DIR: 런타임 루트 디렉토리MCP_LOG_DIR: 로그 디렉토리정리(기본 경로 사용 시):
rm -rf .codex-gemini-mcp
background: true(기본값) 요청은 .codex-gemini-mcp/prompts/*content*.json에 prompt/response를 저장합니다.MCP_LOG_PREVIEW=1MCP_LOG_FULL_TEXT=1prompt (string, required)model (string, optional)model은 [A-Za-z0-9][A-Za-z0-9._:-]* 패턴(최대 128자)만 허용working_directory (string, optional): CLI 프로세스의 실행 디렉토리(cwd)background (boolean, optional, default true)reasoning_effort (string, optional: minimal | low | medium | high | xhigh)prompt (string, required)model (string, optional)model은 [A-Za-z0-9][A-Za-z0-9._:-]* 패턴(최대 128자)만 허용working_directory (string, optional): CLI 프로세스의 실행 디렉토리(cwd)background (boolean, optional, default true)job_id (string, required, 8자리 hex)timeout_ms (number, optional, default 3600000, max 3600000; 3600000 초과 값은 3600000으로 cap)job_id (string, required, 8자리 hex)job_id (string, required, 8자리 hex)signal (string, optional: SIGTERM | SIGINT, default SIGTERM)status_filter (string, optional: active(spawned/running) | completed | failed(failed/timeout) | all, default active)limit (number, optional, default 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에 상태/입출력(content) 파일 저장.codex-gemini-mcp/logs/mcp-YYYY-MM-DD.jsonlMCP_LOG_PREVIEW=1: preview 저장MCP_LOG_FULL_TEXT=1: full text 저장stderr에도 미러링됨request.model > env default > hardcoded defaultMCP_CODEX_DEFAULT_MODEL (기본값: gpt-5.3-codex)MCP_GEMINI_DEFAULT_MODEL (기본값: gemini-3-pro-preview)MCP_CLI_TIMEOUT_MS 또는 3600000ms(60분)stdout + stderr 합산 출력이 MCP_MAX_OUTPUT_BYTES를 넘으면 CLI_OUTPUT_LIMIT_EXCEEDED로 종료NO_COLOR=1, FORCE_COLOR=0, TERM=dumb)backgroundbackground true/false 모두): JSONL에 request 이벤트와 terminal(response 또는 error) 이벤트가 기록되고, request_id로 1차 추적 가능background: false (foreground): 로그 이벤트에 job_id가 없음. jobs/, prompts/ 파일은 생성되지 않음background: true (background):jobId, contentFile, statusFile 반환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: 로그 경로 overrideMCP_LOG_PREVIEW: 로그 preview 저장 여부 (1이면 활성화)MCP_LOG_FULL_TEXT: 전체 텍스트 로그 여부 (1이면 활성화)codex-mcp, gemini-mcpask_codex, ask_gemini foreground/background 실호출 성공wait_for_job, check_job_status, kill_job, list_jobs 실호출 성공이 샘플에는 아래 기능이 없습니다:
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를 늘리거나, 프롬프트/출력을 줄이세요..codex-gemini-mcp/를 직접 정리하세요.이 프로젝트는 oh-my-claudecode에 구현된 Codex/Gemini MCP 서버를 참고하여 재구현한 것입니다.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"codex-gemini-mcp": {
"command": "npx",
"args": []
}
}
}PRs, issues, code search, CI status
Database, auth and storage
Reference / test server with prompts, resources, and tools.
Secure file operations with configurable access controls.