# Llm Council Mcp Server

> Local MCP server running Andrej Karpathy's 3-stage LLM Council via OpenRouter — a multi-model "second opinion" for Claude Code, Codex CLI & Antigravity. By Alexander Deja · anderzlabs.de

- **Type:** MCP server
- **Install:** `agentstack add mcp-salutaris91-llm-council-mcp-server`
- **Verified:** Pending review
- **Seller:** [salutaris91](https://agentstack.voostack.com/s/salutaris91)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [salutaris91](https://github.com/salutaris91)
- **Source:** https://github.com/salutaris91/llm-council-mcp-server
- **Website:** https://www.anderzlabs.de/

## Install

```sh
agentstack add mcp-salutaris91-llm-council-mcp-server
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# LLM Council MCP

[English Version](#english-version) | [Deutsche Version](#deutsche-version)

---

# English Version

## Table of Contents
- [What it is (and how it works)](#what-it-is-and-how-it-works)
- [Installation & Setup](#installation--setup)
- [Quick Start / First Run](#-quick-start--first-run)
- [Setup UI & Settings Storage](#setup-ui--settings-storage)
- [Usage](#usage)
- [Tool Registration (Manual)](#tool-registration-manual-alternative-to-setup-ui)
- [Troubleshooting](#-troubleshooting)
- [Credits](#credits)

---

A lightweight, local MCP server for your Mac based on the original idea by Andrej Karpathy ([karpathy/llm-council](https://github.com/karpathy/llm-council)) with prompt/workflow templates ported from [DmitryBMsk/llm-council-plus](https://github.com/DmitryBMsk/llm-council-plus). It replicates the 3-stage workflow using the **exact original prompts** directly against OpenRouter, without any Docker or NAS dependencies. Works with Claude Code, Codex CLI, and Antigravity via MCP.

## What it is (and how it works)

This tool replicates the AI deliberation process of the original project in three simple steps:

1. **Stage 1 (Answering):** Several AI models answer your question independently and at the same time.
2. **Stage 2 (Reviewing):** The models read all the answers without knowing who wrote which answer (blind review). Each model ranks the answers from best to worst to prevent self-bias.
3. **Stage 3 (Synthesis):** A final "Chairman" model reads all answers and reviews, and writes a single, balanced response for you. If the Chairman fails, another model automatically takes over.

The AI prompt instructions and settings are copied exactly from the original project to ensure the same high quality.

### What is currently left out (kept simple for now, but planned as optional features later):
- **Web Search / Internet Access in Stage 1:** Currently, models answer based on training and context. (Planned as an optional feature in a future release).
- **Editable Prompts / Custom Roles (e.g. Critic mode) in the UI:** Prompt templates are currently hardcoded for reliability. (Planned as an optional settings section).
- **Chat History & Interactive Discussion:** Currently designed for deep-dive single questions. (An optional discussion mode between Claude and the Chairman to decide which files are needed is planned).
- **Direct File Access:** The server does not read your workspace directly for security/simplicity. Your client (Claude Code, Antigravity) reads the files and passes them as parameters.

---

## Installation & Setup

### Method A: Quick Onboarding via PyPI (Recommended)
You can run the Setup UI directly from PyPI without cloning the repository (requires the package installer [uv](https://github.com/astral-sh/uv) to be installed, e.g., via `curl -LsSf https://astral.sh/uv/install.sh | sh` or `brew install uv`):
```bash
uvx --from llm-council-mcp-server llm-council-setup
```
This automatically opens `http://127.0.0.1:5151` in your browser.

### Method B: Manual Clone (for Development)
If you want to modify the source code locally:
```bash
git clone https://github.com/salutaris91/llm-council-mcp-server.git
cd llm-council-mcp-server
python3 -m venv venv
source venv/bin/activate

# Install dependencies (either via requirements.txt or directly using pyproject.toml)
pip install -r requirements.txt  # Or: pip install .
```
Run the Setup UI locally:
```bash
python3 setup_ui.py
```

---

## 🚀 Quick Start / First Run

Follow these steps to get up and running:

1. **Launch the Setup UI:**
   - Run `uvx --from llm-council-mcp-server llm-council-setup` in your terminal. This will automatically open the local configuration panel in your web browser.
2. **Configure Settings:**
   - For `ask_internal_council` (Light Mode), no OpenRouter API key is required.
   - For the full `ask_council` mode, create an API key at **[openrouter.ai/keys](https://openrouter.ai/keys)**, make sure the account has a small funded balance, paste the key, select your preferred council and Chairman models, and click **Save**.
3. **Choose Exposed Tools:**
   - Keep both tools enabled, or hide one of them if you only want your MCP host to offer the free internal council or the full OpenRouter council.
4. **Register the Server:**
   - Under the **Install** section of the Setup UI, click the **Install** button next to your desired tool (Claude Code, Codex CLI, or Antigravity).
5. **Restart Your Tool:**
   - Fully restart your MCP-enabled editor/client (e.g. reload Antigravity) to apply the changes.
6. **Start Deliberating:**
   - In your chat client, run a query (see [Usage](#usage) below).

---

## Setup UI & Settings Storage

The Setup UI provides a user-friendly interface to manage your council settings. It features:
- **Language Switcher:** Toggle the UI dynamically between German and English.
- **Model Presets (Quick & Deep):** Instantly switch between fast models (for quick checks) and highly capable reasoning models (for deep architectural decisions).
- **Advanced / Expert Settings:** Adjust the AI's "creativity" (temperatures) for each of the three stages and configure custom token limits.
- **Tool Visibility Switches:** Expose or hide `ask_internal_council` and `ask_council` individually. Disabled tools are not offered to the MCP host after restart.
- **Auto-Open Browser Toggle:** Choose whether the Setup UI should automatically open your browser on startup.
- **Tool Installer:** View the status (Installed/Not Installed) and register/unregister the MCP server in Claude Code, Codex CLI, and Antigravity with a single click.

Your configuration is saved to a `settings.json` file in your user config directory (e.g., `~/Library/Application Support/llm-council` on macOS).
*Legacy Note:* If you have an existing `.env` file from manual setups, it will be automatically imported into `settings.json` on the first start, and can be safely removed afterwards.

---

## Usage

The server exposes two MCP tools:

1. **`ask_internal_council` (Light Mode):**
   - **No API Key / No Cost:** Runs entirely locally on your host agent's current subscription.
   - **How it works:** It instantly returns a structured prompt directing your host agent to simulate 5 distinct perspectives (Pragmatist, Architect, Skeptic, Clean Code Advocate, UX Thinker), debate them internally, and synthesize a final recommendation.
   - **Note on Diversity:** Since all perspectives are simulated by the same single model, the diversity is limited (shared blind spots).

2. **`ask_council` (Full Mode):**
   - **Real Multi-Model Consensus:** Requires an OpenRouter API key and query costs.
   - **How it works:** Queries multiple different real AI models in parallel, lets them anonymously review and rank each other, and uses a final Chairman model to synthesize the results. Takes about 30 to 120 seconds.

Ask your MCP host to query the respective tool, passing any code context you want it to evaluate.

**Example Prompts:**
* *"Use the internal council to analyze whether we should use Redis or Memcached here."*
* *"Ask the council to review my implementation of this sorting algorithm."*

**What happens under the hood (for the full `ask_council` mode):**
The server will run the 3-stage consensus pipeline. Because this involves multiple parallel and sequential LLM calls, the tool response typically takes **30 to 120 seconds** to complete. Some hosts (Antigravity) show live progress, others (Codex) only a spinner — the call continues normally and typically takes 30–120 s depending on the models (occasionally a bit longer). Simply wait until the result appears. It will return a formatted Markdown report consisting of the Chairman's synthesis, followed by the individual models' responses and rankings.

---

## Tool Registration (Manual, alternative to Setup UI)

### 1. If installed via PyPI (Method A)

#### Claude Code
```bash
claude mcp add llm-council --scope user -- uvx --from llm-council-mcp-server llm-council-mcp
```

#### Codex CLI
Add to `~/.codex/config.toml`:
```toml
[mcp_servers.llm-council]
command = "uvx"
args = ["--from", "llm-council-mcp-server", "llm-council-mcp"]
```

#### Antigravity
Add to the configuration file located at `~/.gemini/config/mcp_config.json` (do not use `~/.gemini/antigravity/`):
```json
{
  "mcpServers": {
    "llm-council": {
      "command": "uvx",
      "args": ["--from", "llm-council-mcp-server", "llm-council-mcp"]
    }
  }
}
```

### 2. If cloned manually (Method B)
Replace `/path/to/venv/bin/python3` and `/path/to/llm-council-mcp/server.py` with your absolute paths.

#### Claude Code
```bash
claude mcp add llm-council --scope user -- /path/to/venv/bin/python3 /path/to/llm-council-mcp/server.py
```

#### Codex CLI (`~/.codex/config.toml`)
```toml
[mcp_servers.llm-council]
command = "/path/to/venv/bin/python3"
args = ["/path/to/llm-council-mcp/server.py"]
```

#### Antigravity (`~/.gemini/config/mcp_config.json`)
```json
{
  "mcpServers": {
    "llm-council": {
      "command": "/path/to/venv/bin/python3",
      "args": ["/path/to/llm-council-mcp/server.py"]
    }
  }
}
```

---

## 🛠️ Troubleshooting

* **Server not showing up in tool?**
  - Fully restart the client application (Claude Code, Codex, or Antigravity). MCP servers are loaded on startup.
* **Antigravity isn't picking up the server?**
  - Verify that the server is written to `~/.gemini/config/mcp_config.json`. If you manually created a file in `~/.gemini/antigravity/`, delete it and use the correct path.
* **OpenRouter API Errors (e.g. 401, 402)?**
  - Open the Setup UI and double-check your API key. Make sure your OpenRouter account has positive credit.
* **Check the Logs:**
  - Standard error logs are captured by your MCP host. Check your tool's log output or terminal window for details.

---

## Releasing (Maintainer)

This repository is set up with **Trusted Publishing** to PyPI via GitHub Actions. Releases are triggered tokenless using OIDC.

To release a new version:
1. Update the version string in `_version.py` (e.g. `0.2.0`). This is the single
   source of truth — `pyproject.toml`, the installer pin, **and the version shown
   in the Setup UI header** all derive from it automatically, so there is no
   separate place to update the displayed version.
2. Commit and push the changes to `main`.
3. Create and push a version tag matching `v*.*.*`:
   ```bash
   git tag -a v0.2.0 -m "v0.2.0"
   git push origin v0.2.0
   ```
4. GitHub Actions will automatically build the package and publish it to PyPI.
5. Create a GitHub Release referencing the new tag.
6. Run the Setup UI or installer to update your local configuration file to point to the new version pin.

---

## Credits
- **Original Idea:** Andrej Karpathy — [karpathy/llm-council](https://github.com/karpathy/llm-council)
- **Prompt/Workflow Templates:** Ported from [DmitryBMsk/llm-council-plus](https://github.com/DmitryBMsk/llm-council-plus)
- **This MCP Server:** Alexander Deja — [anderzlabs.de](https://www.anderzlabs.de/)

---

# Deutsche Version

## Inhaltsverzeichnis
- [Was das ist (und wie es funktioniert)](#was-das-ist-und-wie-es-funktioniert)
- [Installation & Setup](#installation--setup-1)
- [Schnellstart / Erster Lauf](#-schnellstart--erster-lauf)
- [Setup-UI & Speicherort der Einstellungen](#setup-ui--speicherort-der-einstellungen)
- [Nutzung](#nutzung)
- [Tool-Registrierung (Manuell)](#tool-registrierung-manuell-alternativ-zur-setup-ui)
- [Fehlerbehebung](#-fehlerbehebung)
- [Credits](#credits-1)

---

Ein schlanker, lokaler MCP-Server für deinen Mac basierend auf der Originalidee von Andrej Karpathy ([karpathy/llm-council](https://github.com/karpathy/llm-council)) mit Prompt-/Workflow-Vorlagen portiert aus [DmitryBMsk/llm-council-plus](https://github.com/DmitryBMsk/llm-council-plus). Er bildet den 3-Stufen-Workflow mit den **exakten Original-Prompts** direkt gegen OpenRouter nach, ohne Docker- oder NAS-Abhängigkeit. Nutzbar aus Claude Code, Codex CLI und Antigravity über MCP.

## Was das ist (und wie es funktioniert)

Dieses Tool bildet den Entscheidungsprozess des Originalprojekts in drei einfachen Schritten ab:

1. **Stufe 1 (Antworten):** Mehrere KI-Modelle beantworten deine Frage gleichzeitig und unabhängig voneinander.
2. **Stufe 2 (Bewerten):** Die Modelle lesen alle Antworten, ohne zu wissen, welches Modell welche Antwort geschrieben hat (Blindverkostung). Jedes Modell bewertet die Antworten, um Eigenvoreingenommenheit zu verhindern.
3. **Stufe 3 (Zusammenfassen):** Ein finales "Chairman"-Modell liest alle Antworten und Bewertungen und verfasst eine ausgewogene Zusammenfassung für dich. Sollte das Chairman-Modell ausfallen, springt automatisch ein anderes Modell ein.

Die KI-Anweisungen (Prompts) und Einstellungen wurden exakt aus dem Originalprojekt übernommen, um die gleiche hohe Qualität der Antworten zu garantieren.

### Was aktuell bewusst weggelassen wurde (für maximale Einfachheit – später als optionale Funktionen geplant):
- **Web-Suche / Internetzugriff in Stufe 1:** Modelle antworten aktuell basierend auf ihrem Wissen und dem Kontext. (Als optionale Funktion für spätere Releases geplant).
- **Bearbeitbare Prompt-Vorlagen / Eigene Rollen (z. B. Kritiker-Modus) in der UI:** Prompt-Vorlagen sind für stabile Ergebnisse fest hinterlegt. (Als optionaler Einstellungsbereich geplant).
- **Chat-Verlauf & Interaktive Diskussion:** Aktuell für präzise Einzelanfragen konzipiert. (Ein optionaler Diskussionsmodus zwischen Client und Chairman zur gemeinschaftlichen Ermittlung benötigter Dateien ist geplant).
- **Direkter Dateizugriff:** Der Server liest deine Dateien aus Sicherheits- und Einfachheitsgründen nicht selbst. Dein Client (Claude Code, Antigravity) liest den Code aus und übergibt ihn automatisch.

---

## Installation & Setup

### Methode A: Schnellstart via PyPI (Empfohlen)
Du kannst die Setup-Oberfläche direkt über PyPI ausführen, ohne das Repository klonen zu müssen (erfordert ein installiertes [uv](https://github.com/astral-sh/uv), z. B. installierbar via `curl -LsSf https://astral.sh/uv/install.sh | sh` oder `brew install uv`):
```bash
uvx --from llm-council-mcp-server llm-council-setup
```
Dies öffnet automatisch `http://127.0.0.1:5151` in deinem Browser.

### Methode B: Manueller Klon (für Entwickler)
Wenn du den Quellcode lokal anpassen möchtest:
```bash
git clone https://github.com/salutaris91/llm-council-mcp-server.git
cd llm-council-mcp-server
python3 -m venv venv
source venv/bin/activate

# Abhängigkeiten installieren (entweder über requirements.txt oder pyproject.toml)
pip install -r requirements.txt  # Oder: pip install .
```
Lokale Setup-UI starten:
```bash
python3 setup_ui.py
```

---

## 🚀 Schnellstart / Erster Lauf

Befolge diese Schritte, um direkt loszulegen:

1. **Setup-UI starten:**
   - Führe `uvx --from llm-council-mcp-server llm-council-setup` im Terminal aus. Dadurch öffnet sich die lokale Konfigurationsoberfläche in deinem Browser.
2. **Einstellungen konfigurieren:**
   - Für `ask_internal_council` (Light-Modus) brauchst du keinen OpenRouter-API-Key.
   - Für den vollwertigen `ask_council`-Modus erstellst du einen API-Key auf **[openrouter.ai/keys](https://openrouter.ai/keys)**, stellst ein kleines Guthaben sicher, trägst den Key ein, wählst deine bevorzugten Council- und Chairman-Modelle und klickst auf **Speichern**.
3. **Sichtbare Tools wählen:**
   - Lass beide Tools aktiv oder blende eines aus, wenn dein MCP-Host nur das kostenlose interne Council oder nur das vollständige OpenRouter-Council anbieten soll.
4. **Server registrieren:**
   - Klicke im Bereich **Install** der Setup-UI auf den Button **Install** neben dem Tool deiner Wahl (Claude Code, Codex CLI oder Antigravity).
5. **Tool neu starten:**
   - Starte deinen MCP-Client / Editor (z. B. Antigravity) komplett neu, um die Registrierung zu laden.
6. **Council anfragen:**
   - Stelle deine Frage im Chat-Interface (siehe [Nutzung](#nutzung-1) unten).

---

## Setup-UI & Speicherort der Einste

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [salutaris91](https://github.com/salutaris91)
- **Source:** [salutaris91/llm-council-mcp-server](https://github.com/salutaris91/llm-council-mcp-server)
- **License:** MIT
- **Homepage:** https://www.anderzlabs.de/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** yes
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: flagged — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-salutaris91-llm-council-mcp-server
- Seller: https://agentstack.voostack.com/s/salutaris91
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
