conclave
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@conclavecompare Python and Rust for a CLI tool"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
conclave
A small MCP server that lets one AI orchestrate a council of others. Claude convenes Codex and Gemini via their CLIs, asks them, paraphrases responses back into the discussion, and pushes toward consensus — like cardinals in a papal conclave deliberating until white smoke.
you
↓
Claude (orchestrator)
├── ask_codex → spawns `codex` CLI
└── ask_gemini → spawns `gemini` CLIWhy
You probably have ChatGPT Plus and Gemini Pro subscriptions sitting around. Their CLIs already authenticate against your account. Why pay for separate API keys to hear what they think?
conclave is a thin MCP (Model Context Protocol) server that exposes each CLI as a tool. Plug it into Claude Code (or any MCP client) and the orchestrator can poll the council, paraphrase responses, run multiple rounds of deliberation, and synthesize a final answer.
Prerequisites
Before you start, make sure you have:
Node.js ≥ 18 — nodejs.org (LTS is fine).
An OpenAI account with access to the Codex CLI (any ChatGPT plan that supports Codex login).
A Google account with access to the Gemini CLI (a free Google account works; paid Gemini plans get higher limits).
Claude Code installed and working (
claude --versionshould print a version).Git, for cloning the repo.
Platform support: Developed and tested on Windows. The server is written to be cross-platform and should work on macOS and Linux, but those haven't been runtime-tested yet. If you hit a snag, please open an issue.
Installation
1. Install the Codex CLI and log in
npm install -g @openai/codex
codexThe first run opens a browser to log in with your OpenAI account. Sign in, close the tab when done, and exit codex (Ctrl+C or type /exit). Verify:
codex --version2. Install the Gemini CLI and log in
npm install -g @google/gemini-cli
geminiSame idea: first run prompts a browser login with your Google account. Sign in, exit, verify:
gemini --version3. Install the conclave plugin
Since v0.5.0 conclave is a Claude Code plugin — the MCP server, slash command, and helpers all install in one shot:
claude plugin add github:cogspro1234/conclaveThen restart Claude Code so the MCP server and slash command load.
4. Verify
Inside Claude Code:
claude mcp listYou should see conclave: ✓ Connected. Then try the slash command:
/conclave:convene say hello in one short sentenceClaude commits to its own initial position, calls Codex and Gemini in parallel, runs a rebuttal round, and synthesizes a verdict. If you see three distinct voices in the synthesis, you're done.
Manual install (advanced / pre-v0.5.0)
If you don't want to use Claude Code's plugin system — or you're on a version of Claude Code without it — clone the repo and wire the components manually:
git clone https://github.com/cogspro1234/conclave.git
cd conclave
npm installRegister the MCP server (use --scope user so it works from every project):
# macOS / Linux
claude mcp add --scope user conclave -- node "$(pwd)/src/server.js"
# Windows (Git Bash)
claude mcp add --scope user conclave -- node "$(pwd -W)/src/server.js"
# Windows (PowerShell)
claude mcp add --scope user conclave -- node "$((Get-Location).Path -replace '\\','/')/src/server.js"Copy the slash command into user scope:
# macOS / Linux
mkdir -p ~/.claude/commands && cp commands/convene.md ~/.claude/commands/
# Windows (Git Bash)
mkdir -p "$USERPROFILE/.claude/commands" && cp commands/convene.md "$USERPROFILE/.claude/commands/"
# Windows (PowerShell)
New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude\commands" | Out-Null; Copy-Item commands\convene.md "$env:USERPROFILE\.claude\commands\"Restart Claude Code, then run claude mcp list to verify.
Usage
The recommended way is the /conclave:convene slash command (plugin install):
/conclave:convene should we use Postgres or SQLite for this side project?(If you used the manual install path, the command is just /convene — no namespace prefix since it lives directly at user scope.)
Claude commits to its own initial position, then calls ask_codex and ask_gemini in parallel, paraphrases each response back to the other for a rebuttal round, then synthesizes a final answer that surfaces real disagreements rather than papering over them.
Claude may also invoke the conclave when "conclave" comes up naturally in conversation (e.g. "let's take this to the conclave") — the slash command is just the explicit, documented entry point.
Three voices, not two
Since v0.4.0, the conclave is genuinely three-way — Claude (the orchestrator) commits to its own initial position, then deliberates alongside Codex and Gemini, revising as it hears them out. The synthesis names who held which view rather than presenting a moderator's verdict from above.
Flags
You can prefix the topic with optional flags (any order, can combine):
/conclave:convene --strong is this caching strategy correct?
/conclave:convene --fast quick sanity check on this regex
/conclave:convene --silent should we drop SQLite for Postgres
/conclave:convene --strong --silent fundamental architecture call: monolith or services
/conclave:convene just deliberate normally on whether to add a CI stepFlag | Effect |
| Sends |
| Sends |
| Suppress all interim narration. Tool calls still happen; you only see the final verdict. |
| Number of deliberation rounds. |
| Skip Codex entirely. Run as a 2-way deliberation (Claude + Gemini). |
| Skip Gemini entirely. Run as a 2-way deliberation (Claude + Codex). |
(no flags) | 2 rounds, both council members, server's configured default models, full transcript shown. |
If a council member fails mid-deliberation (auth expired, quota hit, network), the conclave drops that voice and continues with the rest, noting the dropout in the synthesis — the deliberation no longer crashes when one CLI is unavailable.
Natural-language phrasing works too — /conclave en güçlü modellerle: ..., /conclave hızlı bir check: ..., /conclave kararı doğrudan ver: ..., /conclave Codex'siz: ..., /conclave 3 tur: ....
To change which model each tier resolves to (e.g. you have ChatGPT Plus but no Gemini Pro and want --strong to stay on a free Gemini model), run the interactive picker: npx conclave-config. It writes ~/.conclave.json and the MCP server reads it on startup — restart Claude Code to apply.
Configuration
Picking models per tier (~/.conclave.json)
Two ways to set which model --strong, --fast, and the no-flag default resolve to for each provider:
Inside Claude Code (recommended for plugin install):
/conclave:configWalks you through 6 picks (Codex × {default, strong, fast}, Gemini × {default, strong, fast}) using clickable choice prompts — pick from the preset list, or pick "Other" and type a custom model name.
From the terminal:
npx conclave-configSame picker, but as an interactive Node script. Useful for the manual install path or if you'd rather configure outside the chat.
Either way, the result lands in ~/.conclave.json:
{
"codex": { "default": "gpt-5.4", "strong": "gpt-5.5", "fast": "gpt-5.4-mini" },
"gemini": { "default": null, "strong": "gemini-2.5-flash", "fast": "gemini-2.5-flash-lite" }
}The MCP server reads this on startup — restart Claude Code after changes. Resolution order per call: explicit model arg → config tier → built-in fallback tier → config default → CONCLAVE_*_MODEL env var → CLI's own default.
Environment variables
Variable | Default | Purpose |
|
| Path/name of the Codex CLI binary. |
|
| Path/name of the Gemini CLI binary. |
|
| Per-call timeout. Long deliberations may need more. |
| (unset → CLI default) | Last-resort default Codex model. Config file takes precedence; per-call |
| (unset → CLI default) | Last-resort default Gemini model. Config file takes precedence; per-call |
| user's home directory ( | Working directory for spawned CLIs. Codex refuses to start in untrusted dirs; this should point at a directory you've already trusted via |
Set them in the MCP server entry. Example (claude mcp add supports -e):
claude mcp add --scope user conclave \
-e CONCLAVE_TIMEOUT_MS=600000 \
-- node "/abs/path/to/conclave/src/server.js"Tools
ask_codex(prompt, model?, tier?)
Forwards a prompt to codex exec - (stdin mode). Returns the CLI's stdout.
model (explicit string) wins if set. Otherwise, if tier is "strong" or "fast", the server resolves it via ~/.conclave.json → built-in fallback. Otherwise falls back to the config default → CONCLAVE_CODEX_MODEL → Codex's own default.
ask_gemini(prompt, model?, tier?)
Forwards a prompt to gemini -p . -o text with the prompt piped on stdin. Returns the CLI's stdout.
Same resolution chain: model → tier (via config or fallback) → config default → CONCLAVE_GEMINI_MODEL → Gemini's own default.
Both tools are stateless — each call is a fresh session. The orchestrator must pass any conversation history in the prompt itself.
Troubleshooting
command not found: codex (or gemini)
The npm global bin directory isn't on your PATH. Run npm config get prefix to find it; on Windows that's usually %APPDATA%\npm. Add it to PATH and restart your shell.
claude mcp list shows conclave: ✗ Failed to connect
Run the server manually to see the error:
node /abs/path/to/conclave/src/server.js < /dev/nullIt should exit cleanly with no output. If it crashes, the stack trace will tell you what's wrong (usually a missing node_modules from skipping npm install, or a Node version below 18).
/conclave doesn't show up in the slash-command picker
You forgot to restart Claude Code after copying the command file, or you copied it to the wrong directory. The exact path must be ~/.claude/commands/conclave.md (user scope) — not inside a project's .claude/commands/.
Tool call fails with "Codex/Gemini timed out"
Long deliberations can exceed the 5-minute default. Bump CONCLAVE_TIMEOUT_MS (see Configuration).
Codex or Gemini asks to re-authenticate
Their session tokens expired. Run codex or gemini once interactively to refresh, then retry the conclave.
Codex errors with "directory is not trusted" / "Not inside a trusted directory"
Conclave passes --skip-git-repo-check to Codex by default (since v0.3.1), so this should not normally happen. If you're still seeing it, your Codex version may have stricter trust enforcement. Use the bundled helper to mark a directory as trusted:
npx conclave-trust ~ # trust your home directory
npx conclave-trust C:\ # trust the entire C: drive (Windows)
npx conclave-trust /your/preferred/dirIt writes a [projects.'<dir>'] entry into ~/.codex/config.toml and prints the exact claude mcp add line that sets CONCLAVE_TRUST_DIR for you. Re-register conclave with that command and restart Claude Code.
Gemini errors with Please set an Auth method in your ~/.gemini/settings.json
You launched gemini once but quit before picking an auth method, so headless mode has nothing to use. Run gemini interactively again, choose "Login with Google" (or whichever auth applies to your account) on the first prompt, complete the browser flow, and let it land on the chat screen — that step writes ~/.gemini/settings.json. Exit (Ctrl+C or /exit) and retry the conclave.
"Rate limit exceeded" from Codex or Gemini You've hit your subscription's per-window quota. Wait it out or upgrade the plan. Conclave deliberations are 2× more expensive than a normal chat (one call per model per round), so they burn quota faster than you'd expect.
Windows: EINVAL or spawn codex ENOENT
Node's spawn on Windows needs the .cmd extension for npm-installed shims. The server already handles this, but if you've installed Codex/Gemini in a non-standard way, override with CONCLAVE_CODEX_CMD / CONCLAVE_GEMINI_CMD pointing at the full path.
Limitations
Subscription CLIs may apply rate limits. A long deliberation can burn through them quickly.
The CLIs may emit non-prompt output (status lines, ANSI codes). Most of this is filtered by
-o textfor Gemini; Codex output is passed through as-is.This is a stdio MCP server — it inherits Claude Code's lifecycle. If Claude Code dies, so does the server.
Each tool call is stateless. Multi-round deliberation works because the orchestrator (Claude) keeps state, not the council members.
License
GNU General Public License v3.0 or later — see LICENSE.
Copyright © 2026 Çağan Öncül.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cogspro1234/conclave'
If you have feedback or need assistance with the MCP directory API, please join our Discord server