codex-gemini-mcp-sample
간결한 TypeScript MCP 서버 예제입니다.
- MCP tool
ask_codex: 로컬codexCLI에 프롬프트 전달 - MCP tool
ask_gemini: 로컬geminiCLI에 프롬프트 전달 - MCP background tools:
wait_for_job,check_job_status,kill_job,list_jobs - stdio transport 기반으로 동작
- 현재 Phase C 1차 구현 완료 (background 실행 + job 상태 파일 추적)
MCP_REVERSE_ENGINEERING.md는 참고용이며, 이 샘플은 의도적으로 기능을 최소화했습니다.
Requirements
- Node.js 20+
codexCLI 설치 (npm i -g @openai/codex)geminiCLI 설치 (npm i -g @google/gemini-cli)
Quick Start
npm install
npm run build
npm run start:codex
npm run start:gemini
개발 모드:
npm run dev:codex
npm run dev:gemini
Example .mcp.json
{
"mcpServers": {
"codex-mcp": {
"command": "node",
"args": ["/absolute/path/to/codex-gemini-mcp/dist/mcp/codex-stdio-entry.js"]
},
"gemini-mcp": {
"command": "node",
"args": ["/absolute/path/to/codex-gemini-mcp/dist/mcp/gemini-stdio-entry.js"]
}
}
}
Tool Schemas
ask_codex
prompt(string, required)model(string, optional)timeout_ms(number, optional, default 600000)- long-running task는
300000이상(5분 이상) 권장
- long-running task는
working_directory(string, optional)background(boolean, optional, defaultfalse)reasoning_effort(string, optional:minimal|low|medium|high|xhigh)
ask_gemini
prompt(string, required)model(string, optional)timeout_ms(number, optional, default 600000)- long-running task는
300000이상(5분 이상) 권장
- long-running task는
working_directory(string, optional)background(boolean, optional, defaultfalse)
wait_for_job
job_id(string, required)timeout_ms(number, optional, default 3600000, max 3600000)
check_job_status
job_id(string, required)
kill_job
job_id(string, required)signal(string, optional:SIGTERM|SIGINT, defaultSIGTERM)
list_jobs
status_filter(string, optional:active|completed|failed|all, defaultactive)limit(number, optional, default50)
Runtime Notes
ask_codex:codex exec --ephemeral호출ask_gemini:gemini --prompt <text>호출background: true호출 시.codex-gemini-mcp/jobs,.codex-gemini-mcp/prompts에 상태/입출력 파일 저장- 모델 선택 우선순위:
request.model > env default > hardcoded default- codex env:
MCP_CODEX_DEFAULT_MODEL(기본값:gpt-5.3-codex) - gemini env:
MCP_GEMINI_DEFAULT_MODEL(기본값:gemini-3-pro-preview)
- codex env:
timeout_ms미지정 시 기본값은MCP_CLI_TIMEOUT_MS또는 600000ms(10분)
Environment Variables
MCP_CODEX_DEFAULT_MODEL: codex 기본 모델MCP_GEMINI_DEFAULT_MODEL: gemini 기본 모델MCP_CLI_TIMEOUT_MS: 기본 CLI timeout(ms)MCP_MAX_OUTPUT_BYTES: 최대 출력 바이트(cap, 향후 runtime 확장용)MCP_RUNTIME_DIR: 런타임 파일 기본 루트(.codex-gemini-mcp)MCP_LOG_DIR: 로그 경로 overrideMCP_LOG_PREVIEW: 로그 preview 저장 여부 (1이면 활성화)MCP_LOG_FULL_TEXT: 전체 텍스트 로그 여부 (1이면 활성화)
Current Status
- MCP 등록 엔트리:
dist/mcp/codex-stdio-entry.js,dist/mcp/gemini-stdio-entry.js - 검증 완료:
ask_codex,ask_geminiforeground/background 실호출 성공 - 검증 완료:
wait_for_job,check_job_status,kill_job,list_jobs실호출 성공 - 미구현: 구조화 로깅(Phase D), 안정성 강화(Phase E)
Scope (deliberately minimal)
이 샘플에는 아래 기능이 없습니다:
- 구조화 JSONL 로깅
- 모델 fallback chain
- model name regex 검증/표준 에러코드 체계
- standalone bridge 번들링