https://github.com/mkxultra/ai-cli-mcp
MCP server to run Claude, Codex, and Gemini CLI agents in the background from any MCP client.
https://github.com/mkxultra/ai-cli-mcp
claude-code codex gemini-cli mcp-server
Last synced: 2 months ago
JSON representation
MCP server to run Claude, Codex, and Gemini CLI agents in the background from any MCP client.
- Host: GitHub
- URL: https://github.com/mkxultra/ai-cli-mcp
- Owner: mkXultra
- License: mit
- Created: 2025-06-16T13:38:57.000Z (about 1 year ago)
- Default Branch: develop
- Last Pushed: 2026-03-02T02:55:58.000Z (4 months ago)
- Last Synced: 2026-03-02T05:42:45.286Z (4 months ago)
- Topics: claude-code, codex, gemini-cli, mcp-server
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/ai-cli-mcp
- Size: 14.4 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.ja.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# AI CLI MCP Server
[](https://www.npmjs.com/package/ai-cli-mcp)
[](/CHANGELOG.md)
> **ðŠ ããã±ãŒãžç§»è¡ã®ãç¥ãã**: æ¬ããã±ãŒãžã¯æ§å `@mkxultra/claude-code-mcp` ãã `ai-cli-mcp` ã«åç§°å€æŽãããŸãããããã¯ãè€æ°ã®AI CLIããŒã«ã®ãµããŒãæ¡å€§ãåæ ãããã®ã§ãã
AI CLIããŒã«ïŒClaude, Codex, Gemini, Forge, OpenCodeïŒãããã¯ã°ã©ãŠã³ãããã»ã¹ãšããŠå®è¡ããæš©éåŠçãèªååããMCPïŒModel Context ProtocolïŒãµãŒããŒã§ãã
Cursorãªã©ã®ãšãã£ã¿ããè€éãªæé ã䌎ãç·šéãæäœã«èŠæŠããŠããããšã«æ°ã¥ããããšã¯ãããŸãããïŒãã®ãµãŒããŒã¯ã匷åãªçµ±å `run` ããŒã«ãæäŸããè€æ°ã®AIãšãŒãžã§ã³ããæŽ»çšããŠã³ãŒãã£ã³ã°ã¿ã¹ã¯ããã广çã«åŠçã§ããããã«ããŸãã
## ãã¢
[](https://github.com/mkXultra/ai-cli-mcp/releases/download/v2.11.0/demo-jp.mp4)
## æŠèŠ
ãã®MCPãµãŒããŒã¯ãLLMãAI CLIããŒã«ãšå¯Ÿè©±ããããã®ããŒã«ãæäŸããŸããMCPã¯ã©ã€ã¢ã³ããšçµ±åããããšã§ãLLMã¯ä»¥äžã®ããšãå¯èœã«ãªããŸãïŒ
- ãã¹ãŠã®æš©é確èªãã¹ãããããŠClaude CLIãå®è¡ïŒ`--dangerously-skip-permissions` ã䜿çšïŒ
- æ¿èªãšãµã³ãããã¯ã¹ããã€ãã¹ããŠCodex CLIãå®è¡ïŒ`--dangerously-bypass-approvals-and-sandbox` ã䜿çšïŒ
- èªåæ¿èªã¢ãŒãã§Gemini CLIãå®è¡ïŒ`-y` ã䜿çšïŒ
- Forge CLI ãé察話ã¢ãŒãã§å®è¡ïŒ`forge -C -p ` ã䜿çšïŒ
- OpenCode ãé察話 JSON ã¢ãŒãã§å®è¡ïŒ`opencode run --format json --dir ` ã䜿çšïŒ
- è€æ°ã®AIã¢ãã«ã®ãµããŒãïŒ
- Claude (sonnet, sonnet[1m], opus, opusplan, haiku)
- Codex (gpt-5.4, gpt-5.3-codex, gpt-5.2-codex, gpt-5.1-codex-mini, gpt-5.1-codex-max, ãªã©)
- Gemini (gemini-2.5-pro, gemini-2.5-flash, gemini-3.1-pro-preview, gemini-3-pro-preview, gemini-3-flash-preview)
- Forge (`forge`)
- OpenCode (`opencode` ãš `oc-` ã©ãããŒãäŸ: `oc-openai/gpt-5.4`)
- PID远跡ã«ããããã¯ã°ã©ãŠã³ãããã»ã¹ã®ç®¡ç
- ããŒã«ããã®æ§é åãããåºåã®è§£æãšè¿åŽ
### 䜿çšäŸïŒé«åºŠãªäžŠè¡åŠçïŒ
ã¡ã€ã³ã®ãšãŒãžã§ã³ãã«ä»¥äžã®ããã«æç€ºããããšã§ãè€æ°ã®ã¿ã¹ã¯ã䞊è¡ããŠå®è¡ãããããšãã§ããŸãã
> 以äžã®3ã€ã®ã¿ã¹ã¯ãacm mcp runã§ãšãŒãžã§ã³ããèµ·åããŠïŒ
> 1. `sonnet` ã§ `src/backend` ã®ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°
> 2. `gpt-5.2-codex` ã§ `src/frontend` ã®ãŠããããã¹ããäœæ
> 3. `gemini-2.5-pro` ã§ `docs/` ã®ããã¥ã¡ã³ããæŽæ°
>
> å®è¡äžã¯ããªãã¯TODOãªã¹ããæŽæ°ããäœæ¥ãè¡ã£ãŠãã ããããããçµãã£ãã `wait` ããŒã«ã䜿ã£ãŠãã¹ãŠã®å®äºãåŸ
æ©ããçµæããŸãšããŠå ±åããŠãã ããã
### 䜿çšäŸïŒã³ã³ããã¹ããã£ãã·ã¥ã®å
±æïŒ
äžåºŠèªã¿èŸŒãã éãã³ã³ããã¹ãïŒå€§èŠæš¡ãªã³ãŒãããŒã¹ãããã¥ã¡ã³ãïŒãã»ãã·ã§ã³IDã䜿ã£ãŠåå©çšããããšã§ãã³ã¹ããæããªããè€æ°ã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã
> 1. ãŸã `acm mcp run` ã䜿ãã`opus` ã§ `src/` 以äžã®å
šãã¡ã€ã«ãèªã¿èŸŒã¿ããããžã§ã¯ãã®æ§é ãçè§£ãããŠãã ããã
> 2. `wait` ããŒã«ã§ãã®åŠçã®å®äºãåŸ
ã¡ãçµæãã `session_id` ãååŸããŠãã ããã
> 3. ãã® `session_id` ã䜿ãã以äžã®2ã€ã®ã¿ã¹ã¯ã `acm mcp run` ã§äžŠè¡ããŠå®è¡ããŠãã ããïŒ
> - `sonnet` ã§ `src/utils` ã®ãªãã¡ã¯ã¿ãªã³ã°æ¡ãäœæ
> - `gpt-5.2-codex` ã§ `README.md` ã«ã¢ãŒããã¯ãã£ã®è§£èª¬ã远èš
> 4. æåŸã«åã³ `wait` ããŠãäž¡æ¹ã®çµæããŸãšããŠãã ããã
[](https://github.com/mkXultra/ai-cli-mcp/releases/download/v2.11.0/demo-resume-jp.mp4)
## ã¡ãªãã
- **çã®éåæãã«ãã¿ã¹ã¯**: ãšãŒãžã§ã³ãã®å®è¡ã¯ããã¯ã°ã©ãŠã³ãã§è¡ãããå³åº§ã«å¶åŸ¡ãæ»ããŸããåŒã³åºãå
ã®AIã¯å®è¡å®äºãåŸ
ã€ããšãªãã䞊è¡ããŠæ¬¡ã®ã¿ã¹ã¯ã®å®è¡ãå¥ã®ãšãŒãžã§ã³ãã®åŒã³åºããè¡ãããšãã§ããŸãã
- **CLI in CLI (Agent in Agent) ã®å®çŸ**: MCPããµããŒãããããããIDEãCLIãããClaude CodeãCodexãšãã£ã匷åãªCLIããŒã«ãçŽæ¥åŒã³åºããŸãããã¹ãç°å¢ã®å¶éãè¶
ãããããåºç¯ã§è€éãªã·ã¹ãã æäœãèªååãå¯èœã«ãªããŸãã
- **ã¢ãã«ã»ãããã€ãã®å¶çŽããã®è§£æŸ**: ç¹å®ã®ãšã³ã·ã¹ãã ã«çžãããããšãªããClaudeãCodex (GPT)ãGeminiãForgeã®äžãããã¿ã¹ã¯ã«æé©ãªãæåŒ·ã®ã¢ãã«ãããã³ã¹ãå¹çã®è¯ãã¢ãã«ããèªç±ã«éžæã»çµã¿åãããŠå©çšã§ããŸãã
## åææ¡ä»¶
å©çšãããAI CLIããŒã«ãããŒã«ã«ç°å¢ã«ã€ã³ã¹ããŒã«ãããæ£ããèšå®ãããŠããããšãå¯äžã®åææ¡ä»¶ã§ãã
- **Claude Code**: `claude doctor` ãéãã`--dangerously-skip-permissions` ã§ã®å®è¡ãæ¿èªæžã¿ïŒäžåºŠæåã§å®è¡ããŠãã°ã€ã³ã»æ¿èªæžã¿ïŒã§ããããšã
- **Codex CLI**ïŒãªãã·ã§ã³ïŒ: ã€ã³ã¹ããŒã«æžã¿ã§ããã°ã€ã³ãªã©ã®åæèšå®ãå®äºããŠããããšã
- **Gemini CLI**ïŒãªãã·ã§ã³ïŒ: ã€ã³ã¹ããŒã«æžã¿ã§ããã°ã€ã³ãªã©ã®åæèšå®ãå®äºããŠããããšã
- **Forge CLI**ïŒãªãã·ã§ã³ïŒ: ã€ã³ã¹ããŒã«æžã¿ã§ãåæèšå®ãå®äºããŠããããšã
- **OpenCode**ïŒãªãã·ã§ã³ïŒ: ã€ã³ã¹ããŒã«æžã¿ã§ãèšå®ãå®äºããŠããããšããã®çµ±åã§ã¯ `opencode run --format json` ã䜿çšããæç€ºçãªã¢ãã«æå®ã¯ `ai-cli models` ãå
¬éãã `oc-` æ§æã«åŸããŸãã
## ã€ã³ã¹ããŒã«ãšäœ¿ãæ¹
çŸåšã®äž»ãªäœ¿ãæ¹ã¯ 2 ã€ãããŸãã
- `ai-cli-mcp`: MCP ãµãŒããŒã®èµ·å
- `ai-cli`: 人éåã CLI
### MCP å©çš (`npx`)
MCP ãµãŒããŒãšããŠäœ¿ãå Žåã¯ã`npx` çµç±ãæšå¥šã§ãã
#### MCPèšå®ãã¡ã€ã«ã§npxã䜿çšããå Žå:
```json
"ai-cli-mcp": {
"command": "npx",
"args": [
"-y",
"ai-cli-mcp@latest"
]
},
```
#### Claude CLI mcp add ã³ãã³ãã䜿çšããå Žå:
```bash
claude mcp add ai-cli '{"name":"ai-cli","command":"npx","args":["-y","ai-cli-mcp@latest"]}'
```
### 人éåã CLI å©çš (ã°ããŒãã«ã€ã³ã¹ããŒã«)
ã·ã§ã«ãã `ai-cli` ãçŽæ¥äœ¿ãããå Žåã¯ãã°ããŒãã«ã€ã³ã¹ããŒã«ããŠãã ããã
```bash
npm install -g ai-cli-mcp
```
ããã§ä»¥äžã® 2 ã€ã®ã³ãã³ãã䜿ããããã«ãªããŸãã
- `ai-cli`
- `ai-cli-mcp`
äŸ:
```bash
ai-cli doctor
ai-cli models
ai-cli run --cwd "$PWD" --model sonnet --prompt "summarize this repository"
ai-cli run --cwd "$PWD" --model opencode --prompt "OpenCode ã®ããã©ã«ãèšå®ã§ãã®ãªããžããªãèŠçŽããŠ"
ai-cli run --cwd "$PWD" --model oc-openai/gpt-5.4 --session-id ses_123 --prompt "æç€ºã¢ãã«ä»ãã§ãã® OpenCode ã»ãã·ã§ã³ãç¶ããŠ"
ai-cli ps
ai-cli result 12345
ai-cli result 12345 --verbose
ai-cli peek 12345 --time 10
ai-cli wait 12345 --timeout 300
ai-cli wait 12345 --verbose
ai-cli kill 12345
ai-cli cleanup
ai-cli-mcp
```
### 人éåã CLI å©çš (`npx`)
å
¬éããã±ãŒãžåã¯ãŸã `ai-cli-mcp` ã®ãŸãŸãªã®ã§ã`npx` ã§ `ai-cli` ã䜿ãå Žåã¯æ¬¡ã®åœ¢ã«ãªããŸãã
```bash
npx -y --package ai-cli-mcp@latest ai-cli run --cwd "$PWD" --model sonnet --prompt "hello"
npx -y --package ai-cli-mcp@latest ai-cli run --cwd "$PWD" --model oc-openai/gpt-5.4 --prompt "OpenCode ã§ hello"
```
## éèŠãªååã»ããã¢ãã
### Claude CLIã®å Žå:
**MCPãµãŒããŒãClaudeã䜿çšããåã«ãäžåºŠæåã§ `--dangerously-skip-permissions` ãã©ã°ãä»ããŠClaude CLIãå®è¡ãããã°ã€ã³ããŠå©çšèŠçŽã«åæããå¿
èŠããããŸãã**
```bash
npm install -g @anthropic-ai/claude-code
claude --dangerously-skip-permissions
```
ããã³ããã«åŸã£ãŠåæããŠãã ããããããå®äºãããšãMCPãµãŒããŒã¯ãã®ãã©ã°ã䜿ã£ãŠé察話çã«å®è¡ã§ããããã«ãªããŸãã
### Codex CLIã®å Žå:
**Codexã®å Žåããã°ã€ã³ããŠå¿
èŠãªèŠçŽã«åæããŠããããšã確èªããŠãã ããïŒ**
```bash
codex login
```
### Gemini CLIã®å Žå:
**Geminiã®å Žåããã°ã€ã³ããŠèªèšŒæ
å ±ãèšå®ããŠããããšã確èªããŠãã ããïŒ**
```bash
gemini auth login
```
macOSã§ã¯ããããã®ããŒã«ãåããŠå®è¡ããéã«ãã©ã«ããžã®ã¢ã¯ã»ã¹èš±å¯ãæ±ããããå ŽåããããŸããæåã®å®è¡ã倱æããŠãã2åç®ä»¥éã¯åäœããã¯ãã§ãã
## CLI ã³ãã³ã
`ai-cli` ã¯çŸåšä»¥äžããµããŒãããŠããŸãã
- `run`
- `ps`
- `result`
- `peek`
- `wait`
- `kill`
- `cleanup`
- `doctor`
- `models`
- `mcp`
åºæ¬çãªæµã:
```bash
ai-cli doctor
ai-cli models
ai-cli run --cwd "$PWD" --model codex-ultra --prompt "fix failing tests"
ai-cli run --cwd "$PWD" --model opencode --session-id ses_existing --prompt "ãã® OpenCode ã»ãã·ã§ã³ãç¶ç¶ããŠ"
ai-cli run --cwd "$PWD" --model oc-openai/gpt-5.4 --prompt "æç€ºç㪠OpenCode ã¢ãã«ã§å®è¡"
ai-cli ps
ai-cli peek 12345 --time 10
ai-cli peek 12345 12346 --time 10
ai-cli wait 12345
ai-cli wait 12345 --verbose
ai-cli result 12345
ai-cli result 12345 --verbose
ai-cli cleanup
```
`run` ã®äœæ¥ãã£ã¬ã¯ããªæå®ã¯ `--cwd` ãåºæ¬ã§ããäºææ§ã®ããã« `--workFolder` / `--work-folder` ãåãä»ããŸãã
OpenCode ã®ã¢ãã«æå®ã¯æ¬¡ã® 2 ã€ãåãä»ããŸãã
- `opencode`: OpenCode åŽã§èšå®ãããããã©ã«ãã¢ãã«ã䜿çš
- `oc-`: æç€ºç㪠OpenCode ã® provider/model ãæå®ãäŸ: `oc-openai/gpt-5.4`
`ai-cli models` 㯠OpenCode ãæ©æ¢°å¯èªã« `opencode: ["opencode"]` ãš `dynamicModelBackends.opencode` ã§å
¬éããŸããå®éã«å©çšå¯èœãªããã¯ãšã³ããã€ãã£ããªã¢ãã«äžèŠ§ã¯ `opencode models` ã§ç¢ºèªããŠãã ããã
`doctor` 㯠CLI ãã€ããªã®ååšç¢ºèªãš path 解決ã ããè¡ããŸãããã°ã€ã³ç¶æ
ãå©çšèŠçŽåæãŸã§ã¯ç¢ºèªããŸããã
## CLI ã®ç¶æ
ä¿åå
ããã¯ã°ã©ãŠã³ãå®è¡ãã `ai-cli` ã®ç¶æ
ã¯ã次ã®ãã£ã¬ã¯ããªã«ä¿åãããŸãã
```text
~/.local/state/ai-cli/cwds///
```
å PID ãã£ã¬ã¯ããªã«ã¯ä»¥äžãå
¥ããŸãã
- `meta.json`
- `stdout.log`
- `stderr.log`
- `exit-status.json`ïŒdetached 㪠OpenCode å®è¡çšïŒ
å®äºæžã¿ã»å€±ææžã¿ã®å®è¡ã¯ `ai-cli cleanup` ã§åé€ã§ããŸãã`running` ã®ãã®ã¯ä¿æãããŸãã
## æ¢ç¥ã®å¶çŽ
detached å®è¡ããã `ai-cli` ã§ã¯ãOpenCode ããã¯ãšã³ãã«éãèªç¶çµäºæã® exit status ãæ°žç¶åããŸãããã®ãã OpenCode ã®å€±æçµäºã¯éãŒã exit code ãå«ã㊠`failed` ãšããŠæ±ãããçµæã§ã¯çã® `stdout` / `stderr` ãä¿æããŸããäžæ¹ãä»ã® detached ããã¯ãšã³ãã§ã¯åŸæ¥ã©ãããããåºã exit-status 远跡ã远å ããããŸã§ã¯èªç¶çµäºããå®è¡ãä¿¡é Œã§ãã exit code ãªãã§ `completed` ãšèŠãªãããå¶çŽãæ®ããŸãã
## MCPã¯ã©ã€ã¢ã³ããžã®æ¥ç¶
ãµãŒããŒã®ã»ããã¢ããåŸãMCPã¯ã©ã€ã¢ã³ãïŒCursorãWindsurfãªã©ïŒã®èšå®ãã¡ã€ã«ïŒ`mcp.json` ã `mcp_config.json`ïŒã«èšå®ã远å ããŠãã ããã
ãã¡ã€ã«ãååšããªãå Žåã¯äœæãã`ai-cli-mcp` ã®èšå®ã远å ããŠãã ããã
## æäŸãããããŒã«
ãã®ãµãŒããŒã¯ä»¥äžã®ããŒã«ãå
¬éããŠããŸãïŒ
### `run`
Claude CLIãCodex CLIãGemini CLIãForge CLIããŸã㯠OpenCode ã䜿çšããŠããã³ãããå®è¡ããŸããã¢ãã«åã«åºã¥ããŠé©åãªCLIãèªåçã«éžæãããŸãã
**åŒæ°:**
- `prompt` (string, ä»»æ): AIãšãŒãžã§ã³ãã«éä¿¡ããããã³ããã`prompt` ãŸã㯠`prompt_file` ã®ãããããå¿
é ã§ãã
- `prompt_file` (string, ä»»æ): ããã³ãããå«ããã¡ã€ã«ãžã®ãã¹ã`prompt` ãŸã㯠`prompt_file` ã®ãããããå¿
é ã§ãã絶察ãã¹ããŸã㯠`workFolder` ããã®çžå¯Ÿãã¹ãæå®å¯èœã§ãã
- `workFolder` (string, å¿
é ): CLIãå®è¡ããäœæ¥ãã£ã¬ã¯ããªã絶察ãã¹ã§ããå¿
èŠããããŸãã
- **ã¢ãã« (Models):**
- **Ultra ãšã€ãªã¢ã¹:** `claude-ultra` (èªåçã« high effort ã«èšå®), `codex-ultra` (èªåçã« xhigh reasoning ã«èšå®), `gemini-ultra`
- Claude: `sonnet`, `sonnet[1m]`, `opus`, `opusplan`, `haiku`
- Codex: `gpt-5.4`, `gpt-5.3-codex`, `gpt-5.2-codex`, `gpt-5.1-codex-mini`, `gpt-5.1-codex-max`, `gpt-5.2`, `gpt-5.1`, `gpt-5`
- Gemini: `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-3.1-pro-preview`, `gemini-3-pro-preview`, `gemini-3-flash-preview`
- Forge: `forge`
- OpenCode: `opencode`ïŒèšå®æžã¿ã®ããã©ã«ãã¢ãã«ïŒããã³ `oc-openai/gpt-5.4` ã®ãããªæç€ºã©ãããŒ
- `reasoning_effort` (string, ä»»æ): Claude ãš Codex ã®æšè«å¶åŸ¡ãClaude ã§ã¯ `--effort` ã䜿ããŸãïŒèš±å®¹å€: "low", "medium", "high"ïŒãCodex ã§ã¯ `model_reasoning_effort` ã䜿ããŸãïŒèš±å®¹å€: "low", "medium", "high", "xhigh"ïŒãGeminiãForgeãOpenCode ã§ã¯ `reasoning_effort` ã¯ãµããŒãããŸããã
- `session_id` (string, ä»»æ): 以åã®ã»ãã·ã§ã³ãåéããããã®ã»ãã·ã§ã³IDãClaudeãCodexãGeminiãForgeãOpenCode ã§ãµããŒããããŸããOpenCode 㯠`--session` ã«ãã in-place resume ã§åéãã`oc-` ã®æç€ºæå®ãšäœµçšã§ããŸãã
### `wait`
è€æ°ã®AIãšãŒãžã§ã³ãããã»ã¹ã®å®äºãåŸ
æ©ããçµæããŸãšããŠè¿ããŸããæå®ããããã¹ãŠã®PIDãçµäºããããã¿ã€ã ã¢ãŠãã«ãªããŸã§ãããã¯ããŸãã
ããã©ã«ãã§ã¯ãè¿ãããåçµæé
ç®ã¯ `get_result(verbose: false)` ãšåã compact 圢ã䜿ããŸãã`pid`ã`agent`ã`status`ã`exitCode`ã`model` ãªã©ã®éçšäžå¿
èŠãªé
ç®ã«å ããå©çšå¯èœã§ããã° `agentOutput` ããããã¬ãã«ã® `session_id` ãå«ã¿ãŸãã`verbose: true` ãæå®ãããšã`startTime`ã`workFolder`ã`prompt` ãªã©ã®å®å
šãªã¡ã¿ããŒã¿ãã`agentOutput.tools` ã®ãããªè©³çްãªè§£æçµæãå«ã full 圢ãè¿ããŸãã
**åŒæ°:**
- `pids` (array of numbers, å¿
é ): åŸ
æ©ããããã»ã¹IDã®ãªã¹ãïŒ`run` ããŒã«ããè¿ããããã®ïŒã
- `timeout` (number, ä»»æ): æå€§åŸ
æ©æéïŒç§ïŒãããã©ã«ãã¯180ç§ïŒ3åïŒã§ãã
- `verbose` (boolean, ä»»æ): `true` ã®å Žåãåçµæé
ç®ã full 圢ã§è¿ããŸããããã©ã«ã㯠`false` ã§ãã
### `peek`
å®è¡äžã®åãšãŒãžã§ã³ããçæéã ã芳枬ãããã® `peek` åŒã³åºãã®èŠ³æž¬ãŠã£ã³ããŠå
ã§ ai-cli-mcp ãåçããæ§é åã€ãã³ããè¿ããŸããããã©ã«ãã§ã¯èªç¶èšèªã¡ãã»ãŒãžã€ãã³ãã ããè¿ãã`include_tool_calls` ãŸã㯠`--include-tool-calls` ãæå®ãããšæ£èŠåããã tool-call ã€ãã³ããå«ããŸããå±¥æŽAPIã§ã¯ãªããæ¬ èœã®ãªãã¹ããªãŒãã³ã°ã§ããªããã·ã§ã«ã® `stdout` / `stderr` tail ã§ããããŸãããå¥ã
ã® `peek` åŒã³åºãã®éã«åºãã€ãã³ãã¯ååŸã§ããªãå ŽåããããŸããv1 ã§ã¯ `--follow` ã¯ãããŸããã
CLI v1:
```bash
ai-cli peek 123 --time 10
ai-cli peek 123 456 --time 10
ai-cli peek 123 --time 10 --include-tool-calls
```
**åŒæ°:**
- `pids` (array of numbers, å¿
é ): `run` ãè¿ããããã»ã¹IDã 1..32 ä»¶æå®ããŸããéè€ããPIDã¯ãµãŒããŒåŽã§éè€æé€ãããæåã«åºãé åºãç¶æãããŸããæªç¥ãŸãã¯ç®¡çå€ã®PIDã¯ãåŒã³åºãå
šäœã®å€±æã§ã¯ãªããããã»ã¹ããšã« `not_found` ãšããŠè¿ãããŸãã
- `peek_time_sec` (number, ä»»æ): 芳枬æéïŒç§ïŒã®æ£ã®æŽæ°ã§ããããã©ã«ãã¯10ç§ãæå€§60ç§ã§ãã`0`ãè² æ°ãå°æ°ã¯ç¡å¹ã§ãã
- `include_tool_calls` (boolean, ä»»æ): `true` ã®å Žåãåããã»ã¹ã® `events` é
åã«ã¡ãã»ãŒãžã€ãã³ãã«å ããŠæ£èŠåããã `tool_call` ã€ãã³ããå«ããŸããããã©ã«ã㯠`false` ã§ãã
**芳枬ãšãã£ã«ã¿ãªã³ã°:**
- `peek_started_at` ãš `events[].ts` ã¯ãai-cli-mcp ãµãŒããŒåŽã® UTC RFC3339 ã¿ã€ã ã¹ã¿ã³ãã§ãã`peek_started_at` ã¯æ€èšŒãšãªã¹ããŒç»é²åŸã«èŠ³æž¬ãŠã£ã³ããŠãå§ãŸã£ãæå»ã`events[].ts` 㯠ai-cli-mcp ãã€ãã³ãã芳枬ããŠåçããæå»ã§ãã
- 芳枬ãŠã£ã³ããŠã¯ `peek_time_sec` ãçµéãããã察象ããã»ã¹ããã¹ãŠçµç«¯ç¶æ
ã«ãªã£ãæç¹ã§çµäºããŸãã
- 芳枬éå§åã®ã€ãã³ãã¯è¿ããŸãããåãPIDãžã®åæ `peek` ã¯å¯èœã§ãããããç¬ç«ãã芳枬ãŠã£ã³ããŠãæã€ãããã€ãã³ããéè€ããŠè¿ãããšããããŸãã
- ã¡ãã»ãŒãžã€ãã³ãã¯ãCodex ã® `agent_message` textãClaude assistant ã® text contentãOpenCode ã® `type: "text"` ã〠`part.type` ã `"text"` ã®ã€ãã³ããGemini stream-json ã® `role` ã `"assistant"` ã® `message` ã€ãã³ãããèªèããŸãã
- tool call ãå«ããå ŽåãCodex ã® command/MCP callãClaude ã® tool use/resultãGemini ã® tool use/resultãOpenCode ã®å®äºæžã¿ tool use event ãæ£èŠåãã `tool_call` ã€ãã³ããšããŠè¿ããŸããtool summary 㯠tool åãšå
¥åã¡ã¿ããŒã¿ã ãããäœãçã1è¡æååã§ããraw `stdout` / `stderr`ãraw JSONLãtool result outputãã³ãã³ãåºåã`result.response`ãstatsãtoken usageãverbose ã¡ã¿ããŒã¿ã¯é€å€ããŸãã
- æªç¥ã®ã€ãã³ã圢ç¶ã¯ããã©ã«ãã§æåŠããŸããForge ãªã©ããŸã æç€ºå¯Ÿå¿ãããŠããªã管ç察象ãšãŒãžã§ã³ãã¯ãå®éã®ããã»ã¹ç¶æ
ãè¿ãã€ã€ã`events: []`ã`truncated: false`ã`error: null` ã«ããŸãã
- åPIDããšã«ã芳枬ãŠã£ã³ããŠå
ã§æåã«èŠ³æž¬ããã50ä»¶ãŸã§ãä¿æããŸãããã以éã®ã€ãã³ããæšãŠãå Žå㯠`truncated` ã `true` ã«ãªããŸãã
- `status` 㯠`running`ã`completed`ã`failed`ã`not_found` ã®ããããã§ã芳枬ãŠã£ã³ããŠçµäºæç¹ã®ç¶æ
ã衚ããŸãã
- `agent` 㯠`claude`ã`codex`ã`gemini`ã`forge`ã`opencode`ãå°æ¥è¿œå ããã远跡æžã¿ãšãŒãžã§ã³ãæååããŸã㯠`null` ã§ãã`null` ã¯ããã»ã¹ãèŠã€ãããªãããŸãã¯ãšãŒãžã§ã³ãçš®å¥ã倿ã§ããªãå Žåã衚ããŸãã
ã¬ã¹ãã³ã¹äŸ:
```json
{
"peek_started_at": "2026-04-11T12:34:56.789Z",
"observed_duration_sec": 10.01,
"processes": [
{
"pid": 123,
"agent": "codex",
"status": "running",
"events": [
{ "kind": "message", "ts": "2026-04-11T12:34:59.120Z", "text": "I'm checking the implementation." },
{ "kind": "tool_call", "ts": "2026-04-11T12:35:00.000Z", "phase": "started", "id": "item_0", "tool": "command_execution", "summary": "/bin/sh -c 'echo hi'" }
],
"truncated": false,
"error": null
},
{
"pid": 999,
"agent": null,
"status": "not_found",
"events": [],
"truncated": false,
"error": "process not found"
}
]
}
```
### `list_processes`
å®è¡äžããã³å®äºãããã¹ãŠã®AIãšãŒãžã§ã³ãããã»ã¹ããã¹ããŒã¿ã¹ãPIDãåºæ¬æ
å ±ãšãšãã«ãªã¹ãã¢ããããŸãã
### `get_result`
PIDãæå®ããŠãAIãšãŒãžã§ã³ãããã»ã¹ã®çŸåšã®åºåãšã¹ããŒã¿ã¹ãååŸããŸãã
ããã©ã«ãã§ã¯ compact 圢ãè¿ããŸããããã«ã¯ `pid`ã`agent`ã`status`ã`exitCode`ã`model` ãªã©ã®éçšäžå¿
èŠãªé
ç®ã«å ããå©çšå¯èœã§ããã° `agentOutput` ããããã¬ãã«ã® `session_id` ãå«ã¿ãŸãã`startTime`ã`workFolder`ã`prompt` ã¯å«ã¿ãŸããã`verbose: true` ãæå®ãããšããããã®ã¡ã¿ããŒã¿ã `agentOutput.tools` ã®ãããªè©³çްãªè§£æçµæãå«ã full 圢ãè¿ããŸããè§£æçµæãåŸãããªãå Žåãäžå®å
šãªå Žåã¯ãåŸæ¥ã©ãã `stdout` / `stderr` ã®ãã©ãŒã«ããã¯ãç¶æããŸãã
**åŒæ°:**
- `pid` (number, å¿
é ): `run` ããŒã«ã«ãã£ãŠè¿ãããããã»ã¹IDã
- `verbose` (boolean, ä»»æ): `true` ã®å Žåãfull 圢ã§è¿ããŸããããã©ã«ã㯠`false` ã§ãã
### `kill_process`
PIDãæå®ããŠãå®è¡äžã®AIãšãŒãžã§ã³ãããã»ã¹ãçµäºããŸãã
**åŒæ°:**
- `pid` (number, å¿
é ): çµäºãããããã»ã¹IDã
## ãã©ãã«ã·ã¥ãŒãã£ã³ã°
- **"Command not found" (claude-code-mcp):** ã°ããŒãã«ã«ã€ã³ã¹ããŒã«ããå Žåãnpmã®ã°ããŒãã«binãã£ã¬ã¯ããªãã·ã¹ãã ã®PATHã«å«ãŸããŠããã確èªããŠãã ããã`npx` ã䜿çšããŠããå Žåã`npx` èªäœãæ©èœããŠããã確èªããŠãã ããã
- **"Command not found" (`ai-cli`):** ã°ããŒãã«ã€ã³ã¹ããŒã«æã¯ npm ã®ã°ããŒãã« bin ãã£ã¬ã¯ããªã `PATH` ã«å
¥ã£ãŠããã確èªããŠãã ããã`npx` ã®å Žå㯠`npx -y --package ai-cli-mcp@latest ai-cli ...` ã䜿ã£ãŠãã ããã
- **"Command not found" (claude ãŸã㯠~/.claude/local/claude):** Claude CLIãæ£ããã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠãã ããã`claude/doctor` ãå®è¡ããããå
¬åŒããã¥ã¡ã³ãã確èªããŠãã ããã
- **æš©éã®åé¡:** ãéèŠãªååã»ããã¢ãããã®æé ãå®è¡ããã確èªããŠãã ããã
- **ãµãŒããŒããã®JSONãšã©ãŒ:** `MCP_CLAUDE_DEBUG` ã `true` ã®å Žåããšã©ãŒã¡ãã»ãŒãžããã°ãMCPã®JSONè§£æã劚ããå¯èœæ§ããããŸããéåžžåäœæã¯ `false` ã«èšå®ããŠãã ããã
## éçºè
åã: ããŒã«ã«ã»ããã¢ãããšè²¢ç®
ãã®ãµãŒããŒãéçºã»è²¢ç®ãããå ŽåããŸãã¯ã¯ããŒã³ãããªããžããªããå®è¡ããŠãã¹ããããå Žåã¯ã[Local Installation & Development Setup Guide](./docs/local_install.md) ãåç
§ããŠãã ããã
## ãã¹ã
ãããžã§ã¯ãã«ã¯å
æ¬çãªãã¹ãã¹ã€ãŒããå«ãŸããŠããŸãïŒ
```bash
# å
šãã¹ãã®å®è¡
npm test
# ãŠããããã¹ãã®ã¿å®è¡
npm run test:unit
# E2Eãã¹ãã®å®è¡ïŒã¢ãã¯äœ¿çšïŒ
npm run test:e2e
```
## é«åºŠãªèšå®ïŒãªãã·ã§ã³ïŒ
éåžžã®å©çšã§ã¯èšå®äžèŠã§ãããCLIããŒã«ã®ãã¹ãã«ã¹ã¿ãã€ãºãããå Žåããããã°ãå¿
èŠãªå Žåã«äœ¿çšã§ããç°å¢å€æ°ã§ãã
- `CLAUDE_CLI_NAME`: Claude CLIã®ãã€ããªåãŸãã¯çµ¶å¯Ÿãã¹ãäžæžãïŒããã©ã«ã: `claude`ïŒ
- `CODEX_CLI_NAME`: Codex CLIã®ãã€ããªåãŸãã¯çµ¶å¯Ÿãã¹ãäžæžãïŒããã©ã«ã: `codex`ïŒ
- `GEMINI_CLI_NAME`: Gemini CLIã®ãã€ããªåãŸãã¯çµ¶å¯Ÿãã¹ãäžæžãïŒããã©ã«ã: `gemini`ïŒ
- `FORGE_CLI_NAME`: Forge CLIã®ãã€ããªåãŸãã¯çµ¶å¯Ÿãã¹ãäžæžãïŒããã©ã«ã: `forge`ïŒ
- `OPENCODE_CLI_NAME`: OpenCode CLIã®ãã€ããªåãŸãã¯çµ¶å¯Ÿãã¹ãäžæžãïŒããã©ã«ã: `opencode`ïŒ
- `MCP_CLAUDE_DEBUG`: ãããã°ãã°ãæå¹åïŒ`true` ã«èšå®ãããšè©³çްãªåºåã衚瀺ãããŸãïŒ
**CLIåã®æå®æ¹æ³:**
- ã³ãã³ãåã®ã¿: `CLAUDE_CLI_NAME=claude-custom`
- 絶察ãã¹: `CLAUDE_CLI_NAME=/path/to/custom/claude`
â» çžå¯Ÿãã¹ã¯äœ¿çšã§ããŸããã
### ã«ã¹ã¿ã CLIãã€ããªã䜿çšããå Žåã®èšå®äŸ:
```json
"ai-cli-mcp": {
"command": "npx",
"args": [
"-y",
"ai-cli-mcp@latest"
],
"env": {
"CLAUDE_CLI_NAME": "claude-custom",
"CODEX_CLI_NAME": "codex-custom",
"OPENCODE_CLI_NAME": "opencode-custom"
}
},
```
## ã©ã€ã»ã³ã¹
MIT