orchestrator-mcp
Use Codex from Claude Code, or Claude Code from Codex, through the subscriptions you already have. Multi-turn consultations between agent CLIs with no provider API key, a validated response envelope, and a local dashboard of every consultation.
Install / Use
claude mcp add crAK1644 -- npx -y github:crAK1644/orchestrator-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Skill content
View source on GitHubOrchestrator MCP is a local Model Context Protocol server that lets one coding agent consult another. It launches the Codex, Claude Code, OpenCode, or experimental Antigravity CLI already installed and authenticated on your machine, routes the request, and returns a structured answer.
It does not ask for a provider key, proxy provider traffic, or silently switch models. Authentication remains inside each vendor's CLI.
Before / After
<table> <tr> <th width="50%">Without Orchestrator</th> <th width="50%">With Orchestrator</th> </tr> <tr> <td valign="top">- Copy the prompt, diff, and context.
- Open another coding agent.
- Recreate the task and paste everything.
- Bring the answer back.
- Repeat when you need a follow-up.
- Call
orchestrator_consult. - Get the other agent's structured answer.
- Reuse
consultation_idfor follow-ups.
The conversation stays connected from the same client.
</td> </tr> </table>Same subscriptions. Less context shuffling.
Claude Code host ──► Orchestrator MCP ──► Codex CLI
Codex host ──► Orchestrator MCP ──► Claude Code CLI
Any host ──► Orchestrator MCP ──► OpenCode CLI (DeepSeek, Qwen, Kimi…)
Any host ──► Orchestrator MCP ──► Antigravity CLI (experimental)
local routing
no provider API keys
no same-execution-identity loops
Ordinary orchestrator_consult calls exclude the host's entire runtime: Claude Code
cannot use that tool to consult Claude Code, and Codex cannot use it to consult Codex.
Reviews and workflows use the narrower (runtime, model) execution identity; when
consult.host.model names the host precisely, they may route to a provably different,
versioned model on the same runtime. The host can never route work back to its own
execution identity.
Install
Homebrew:
brew tap crAK1644/tap
brew install orchestrator-mcp-server
Apple Silicon uses a prebuilt package. Intel macOS and Linux build dependencies from source; use the uvx option if you want a faster, temporary install.
1. Sign in to the agent CLIs
Sign in to each agent you want Orchestrator to use:
codex login
claude auth login
These are the normal Codex and Claude Code login flows. Orchestrator checks readiness, but never reads or stores their credentials.
For OpenCode, sign in once with opencode auth login for whichever provider you plan to consult. Hosted providers only — this server does not run a model on your machine. See the OpenCode runtime section below.
2. Create config.yaml
consult:
database_path: ~/.orchestrator-mcp/consultations.sqlite3
timeout_s: 180
agents:
codex:
runtime: codex
command: codex
model: gpt-5.6-sol
priority: 10
web_search: true
scores: { coding: 95, research: 90, reasoning: 95, review: 90 }
claude:
runtime: claude
command: claude
model: claude-opus-4-6
priority: 10
web_search: true
scores: { coding: 90, research: 95, writing: 95, review: 95 }
The key each agent is filed under is its id -- the name callers pass as target_agent,
and the name the dashboard writes into URLs. It has to be lowercase, start with a letter
or digit, and use only letters, digits, dots, dashes and underscores, up to 64
characters. Anything else is refused at startup with a message naming the key.
See config.example.yaml for a broader annotated configuration,
an OpenCode agent, and an experimental Antigravity example.
3. Add the server to your MCP client
<details open> <summary><strong>Claude Code</strong></summary> <br>claude mcp add orchestrator \
--env ORCHESTRATOR_CONFIG=$PWD/config.yaml \
--env ORCHESTRATOR_HOST_RUNTIME=claude \
-- orchestrator-mcp-server
</details>
<details>
<summary><strong>Codex</strong></summary>
<br>
Add this to ~/.codex/config.toml:
[mcp_servers.orchestrator]
command = "orchestrator-mcp-server"
env = { ORCHESTRATOR_CONFIG = "/absolute/path/to/config.yaml", ORCHESTRATOR_HOST_RUNTIME = "codex" }
</details>
Restart the MCP client after changing its configuration.
[!TIP] Use an absolute
ORCHESTRATOR_CONFIGpath. GUI-launched clients often start in a different working directory and inherit a smallerPATHthan your terminal.
The client spawns the server and talks to it over stdin, so orchestrator-mcp-server
is not a command you start yourself. (The dashboard is the other
half of this distribution and is started by hand.) Two flags answer questions from
outside a client:
orchestrator-mcp-server --version # which build the client will spawn
orchestrator-mcp-server --help # what the environment variables have to say
Both answer and exit without reading your configuration. Anything else on the command line is refused rather than ignored. To make the server read the configuration, run it with no arguments: a file it cannot accept leaves as a message naming the key -- one line for most mistakes, several for a schema violation, never a traceback.
Run with uvx instead
<details>
<summary><strong>Show the temporary-install configuration</strong></summary>
<br>
No permanent server install is required:
claude mcp add orchestrator \
--env ORCHESTRATOR_CONFIG=$PWD/config.yaml \
--env ORCHESTRATOR_HOST_RUNTIME=claude \
-- uvx orchestrator-mcp-server
For Codex:
[mcp_servers.orchestrator]
command = "uvx"
args = ["orchestrator-mcp-server"]
env = { ORCHESTRATOR_CONFIG = "/absolute/path/to/config.yaml", ORCHESTRATOR_HOST_RUNTIME = "codex" }
The PyPI distribution is named orchestrator-mcp-server; the shorter PyPI name belongs to another project.
What you get
| Capability | What it does |
|---|---|
| Second opinion | Ask another vendor's coding agent about code, research, writing, reasoning, or review. |
| Connected follow-ups | Continue the native CLI session by returning its consultation_id. |
| Predictable routing | Rank configured agents by capability score, priority, then agent ID. |
| Explicit model choice | Verify the responding model when the CLI exposes that information; fail on a detected substitution. |
| Review panel | Ask one reviewer, or up to five in deep mode, over the same approved material. |
| Three-phase workflow | Run a whole job — research and planning, implementation and testing, review and fixing — with eligible models bound to steps their runtime and configured execution mode permit. |
| Slash commands | Drive consultations, reviews and workflows by name, with their checkpoints written down rather than hoped for. |
| Local history | Store consultations, reviews, and workflows in SQLite, with an optional loopback dashboard. |
| Answer-only isolation | Codex, Claude Code, and OpenCode are prevented from using action tools; explicit web mode enables only the target runtime's web-search facility. Experimental Antigravity detects and fails reported tool use but cannot yet prevent it. |
The consultation tools
| Tool | Purpose |
|---|---|
| orchestrator_consult | Start or continue a structured consultation. |
| orchestrator_list_consult_agents | Show configured agents, routing scores, installation, and login readiness. |
| orchestrator_get_consultation | Retrieve a stored consultation, its turns, usage, and routing decision. |
| orchestrator_delete_consultation | Delete one ordinary consultation and its local turns. |
| orchestrator_request_delete_all_consultations / orchestrator_delete_all_consultations | Preview and confirm deletion of an exact ordinary-history snapshot. |
These deletion tools remove local SQLite records only. They cannot erase a consulted runtime's own CLI or provider history.
Three independent opt-ins: the consult tools are always advertised, the review tools only with a consult.review block, the workflow tools only with a consult.workflow block. Reviewers are not a workflow, and a workflow is not reviewers.
Slash commands
The server also serves MCP prompts, which a client that speaks prompts/list renders as slash commands. In Claude Code they appear as /mcp__<server-name>__<command>, where the server name is whatever you called it in your MCP client config — /mcp__orchestrator__review for the orchestrator entry shown above.
| Command | Arguments | What it expands to |
|---|---|---|
| consult | question, agent | Ask another agent, keep the consultation_id, and report the disagreements rather than smoothing them out. |
| review | goal, deep | Plan the review, show the plan and secret_hits, stop for the user, then run and finalize. |
| workflow | goal, workdir | Start the workflow, then plan-step, stop, run-step, check status, one step at a time. |
| status | workflow_id | Report which reviews and workflows are unfinished and what each is waiting on. |
Every argument is optional; a command with none expands into an instruction to ask you for the missing part. review and workflow are advertised only when their tools are, on the same two answers — a command that could only reply "no reviewers are configured" costs a round trip and reads like a bug.
Two things worth being clear about. Nothing is installed. These arrive over the same stdio connection as the tools: no command directory, no generated markdown, nothing written to your machine, and a client that does not speak prompts/list is unaffected. A prompt is text, not an action. Expanding one consults nobody, sends nothing, and starts no workflow — it reaches the host's conversation as if you had typed it, and the host then calls the tools, checkpoints and all. They exist because the flows worth having here are handshakes, and a host driving them from tool descriptions alone tends to skip the checkpoint that makes them worth having.
How consultation works
orchestrator_consult selects the eligible agent with the highest capability score. Lower priority wins a score tie; agent ID breaks the final tie. A missing capability or a score of 0 makes an agent ineligible.
The selected CLI runs under its existing login and returns o
Truncated for display — read the full file on GitHub.
Related Skills
momen-cursurrules-prompt-file
40.7kCursor rules for building custom frontends with Momen.app as headless BaaS with GraphQL API, actionflows, AI agents, and Stripe integration.
pyspark-etl-best-practices-cursorrules-prompt-file
40.7kCursor rules for PySpark ETL development with code style, joins, window functions, map operations, and Iceberg patterns.
semiotic-react-dataviz-cursorrules-prompt-file
40.7kCursor rules for Semiotic data visualization library with 30+ chart types, MCP server, and AI-assisted chart generation.
claude-mem
91.8kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
