loading…
Search for a command to run...
loading…
An MCP server that bridges multiple AI clients (Claude, Gemini, Codex, OpenCode) so they can call each other as tools.
An MCP server that bridges multiple AI clients (Claude, Gemini, Codex, OpenCode) so they can call each other as tools.
npm version Tests Scan GitHub release Node TypeScript
An MCP server that lets Claude, Gemini, Codex, and OpenCode call each other as tools.
Claude: "Hey Gemini, what do you think about this code?"
Gemini: "It's mass. Let me ask Codex for a second opinion."
Codex: "You're both wrong. Here's the fix."
OpenCode: "I checked with three providers. They all agree with Codex."
curl -fsSL https://raw.githubusercontent.com/osanoai/multicli/main/install.sh | bash
Detects which AI CLIs you have installed and configures Multi-CLI for them automatically.
127.0.0.1Multi-CLI sits between your AI clients and bridges them via the Model Context Protocol. Install it once, and whichever AI you're talking to gains the ability to call the others.
This tool was built by the very AIs it connects.
Claude, Gemini, Codex, and OpenCode wrote the code. Claude, Gemini, Codex, and OpenCode maintain it. Every night, a CI job queries the latest stable release of each CLI for its current model list, diffs the results against what's in the repo, and automatically publishes a new version if anything changed. New model releases get picked up within 24 hours. Deprecated models get cleaned out. The repo stays current without anyone touching it.
The stdio install paths use @latest, so those clients pick up new releases automatically. Claude Code's managed HTTP service intentionally runs from a stable installed runtime instead of a transient npx cache; rerun the installer or multicli service refresh --configure-claude after upgrading.
Most MCP tools go stale within weeks. This one is self-maintaining by design.
You need Node.js >= 20 and at least one of these CLIs installed:
| CLI | Install |
|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
| Gemini CLI | npm install -g @google/gemini-cli |
| Codex CLI | npm install -g @openai/codex |
| OpenCode | `curl -fsSL https://opencode.ai/install |
Multi-CLI is most useful with two or more CLIs installed. With only one, the install still works, but there may be nothing to bridge yet.
Prefer to install per-client yourself? Each command is one line.
Recommended for Claude Code stability:
npm install -g @osanoai/multicli
multicli service install --configure-claude
This installs a per-user background service that listens only on 127.0.0.1, configures Claude Code to use Multi-CLI over HTTP, and keeps the underlying server alive even if Claude drops a stdio subprocess.
The managed service installs as a per-user login/background service:
launchd LaunchAgentsystemd --userSecurity model:
127.0.0.1Authorization: Bearer <token> for every HTTP MCP requestOperational notes:
multicli service install refuses transient npx runtimes; use a global install or a stable local checkoutsystemd --user service follows your login session; enable linger yourself only if you intentionally want it to stay up after logoutLegacy stdio installation is still available:
claude mcp add --scope user Multi-CLI -- npx -y @osanoai/multicli@latest
Add to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS:
{
"mcpServers": {
"Multi-CLI": {
"command": "npx",
"args": ["-y", "@osanoai/multicli@latest"]
}
}
}
Restart Claude Desktop completely after saving.
gemini mcp add --scope user Multi-CLI npx -y @osanoai/multicli@latest
{
"mcpServers": {
"Multi-CLI": {
"command": "npx",
"args": ["-y", "@osanoai/multicli@latest"]
}
}
}
codex mcp add Multi-CLI -- npx -y @osanoai/multicli@latest
codex --mcp-config mcp.json
Where mcp.json contains:
{
"mcpServers": {
"Multi-CLI": {
"command": "npx",
"args": ["-y", "@osanoai/multicli@latest"]
}
}
}
OpenCode's mcp add command is interactive, so add Multi-CLI to ~/.config/opencode/opencode.json directly:
{
"mcp": {
"Multi-CLI": {
"type": "local",
"command": ["npx", "-y", "@osanoai/multicli@latest"]
}
}
}
If the file already exists, merge the "Multi-CLI" entry into the existing "mcp" object.
Multi-CLI supports both stdio and Streamable HTTP.
For stdio-capable clients, point them at:
npx -y @osanoai/multicli@latest
For a managed local HTTP service, install Multi-CLI globally and run:
multicli service install
The service listens on 127.0.0.1 only and exposes /mcp plus /health.
Once connected, your AI client gains access to tools for the other CLIs (never its own):
| Tool | Description |
|---|---|
List-Gemini-Models |
List available Gemini models and their strengths |
Ask-Gemini |
Ask-Gemini a question or give it a task |
Fetch-Chunk |
Retrieve chunked responses from Gemini |
Gemini-Help |
Get Gemini CLI help info |
List-Codex-Models |
List available Codex models |
Ask-Codex |
Ask-Codex a question or give it a task |
Codex-Help |
Get Codex CLI help info |
List-Claude-Models |
List available Claude models |
Ask-Claude |
Ask-Claude a question or give it a task |
Claude-Help |
Get Claude Code CLI help info |
List-OpenCode-Models |
List available OpenCode models from all configured providers |
Ask-OpenCode |
Ask-OpenCode a question or give it a task |
OpenCode-Help |
Get OpenCode CLI help info |
The Ask-* tools still work as normal synchronous MCP tools, but they now also advertise optional task-based execution for MCP clients that support tasks.
Ask-* calls using MCP tasks to avoid long blocking tool requestsAsk-* tools synchronously with no config changesList-*, *-Help, and Fetch-Chunk remain normal synchronous toolsOnce installed, just talk naturally to your AI:
"Ask-Gemini what it thinks about this architecture"
"Have Codex review this function for performance issues"
"Get Claude's opinion on this error message"
"Use OpenCode to get a second opinion from Llama"
Or get a second opinion on anything:
"I want three perspectives on how to refactor this module —
ask Gemini and Codex what they'd do differently"
┌─────────────┐ MCP (stdio) ┌──────────────┐ CLI calls ┌─────────────┐
│ Your AI │ ◄──────────────────► │ Multi-CLI │ ───────────────► │ Other AIs │
│ Client │ │ server │ │ (CLI tools) │
└─────────────┘ └──────────────┘ └─────────────┘
1. Your AI client connects to Multi-CLI via MCP
2. Multi-CLI detects which CLIs are installed on your system
3. It registers tools for the OTHER clients (hides tools for the calling client)
4. When a tool is called, Multi-CLI executes the corresponding CLI command
5. Results flow back through MCP to your AI client
For Claude Code, Multi-CLI can also run as a local background HTTP service:
┌─────────────┐ MCP (HTTP) ┌──────────────┐ CLI calls ┌─────────────┐
│ Claude Code │ ◄──────────────────► │ Multi-CLI │ ───────────────► │ Other AIs │
│ Client │ 127.0.0.1 only │ service │ │ (CLI tools) │
└─────────────┘ └──────────────┘ └─────────────┘
"No usable AI CLIs detected" Make sure at least one other CLI is installed and on your PATH:
which gemini && which codex && which claude && which opencode
No tools showing up? If only your own CLI is installed, Multi-CLI hides it (no self-calls). Install a different CLI to enable cross-model collaboration.
MCP server not responding?
npx -y @osanoai/multicli@latest directly to see if the stdio server startsClaude Code disconnecting after successful calls? Use the managed background service instead of the legacy stdio integration:
npm install -g @osanoai/multicli
multicli service install --configure-claude
multicli service doctor
Helpful service commands:
multicli service statusmulticli service doctormulticli service logsmulticli service refreshmulticli service uninstallNeed to tune timeouts or cleanup behavior? Multi-CLI supports these optional environment variables:
MULTICLI_TRANSPORT (stdio or http)MULTICLI_ASK_TIMEOUT_MSMULTICLI_HELP_TIMEOUT_MSMULTICLI_CLI_DETECT_TIMEOUT_MSMULTICLI_KILL_GRACE_MSMULTICLI_HTTP_HOST (defaults to 127.0.0.1)MULTICLI_HTTP_PORT (defaults to 37420)MULTICLI_HTTP_PATH (defaults to /mcp)MULTICLI_HTTP_AUTH_TOKEN (required for direct HTTP mode)MULTICLI_HTTP_SESSION_IDLE_MSMULTICLI_LOG_PATH (defaults to ~/.multicli/logs/multicli.log)MULTICLI_LOG_LEVEL (error, info, or debug; defaults to debug for the file log)MULTICLI_STDERR_LOG_LEVEL (silent, error, info, or debug; defaults to error)MULTICLI_SERVICE_ROOT_DIRMULTICLI_SERVICE_LOG_PATHMULTICLI_SERVICE_ENV_PATHMULTICLI_SERVICE_MANIFEST_PATHThe server writes structured JSON-line logs to a single file destination, rotates them automatically for long-running service mode, and includes full prompt bodies for Ask-* requests so disconnects and crashes can be reconstructed after the fact.
git clone https://github.com/osanoai/multicli.git
cd multicli
npm install
npm run build
npm run dev
Run in your terminal:
claude mcp add multi-cli-mcp -- npx Security
Low riskAutomated heuristic from public metadata — not a security guarantee.