| Crates.io | mcp-council |
| lib.rs | mcp-council |
| version | 0.1.2 |
| created_at | 2026-01-08 03:30:50.687982+00 |
| updated_at | 2026-01-08 09:04:33.312613+00 |
| description | MCP server for multi-LLM peer review and council deliberation workflow |
| homepage | https://github.com/epicsagas/mcp-council |
| repository | https://github.com/epicsagas/mcp-council |
| max_upload_size | |
| id | 2029473 |
| size | 139,072 |
Multi-Model Reasoning → Peer Review → Final Synthesis (Rust MCP Server)
A Rust-based MCP server that enables AI model collaboration through structured peer review. The system implements a 3-stage deliberation process where multiple LLMs collaboratively answer questions with anonymized peer review to prevent bias.
Inspired by the workflow concept of karpathy/llm-council. Primary interface is Cursor Chat or Claude Code through MCP tools and slash commands.
~/.council/<slug>/*-answer.md./peer_review <slug> by <model> to generate a review prompt (excludes the model's own response)/save_review <slug> <model> <content> as a fallback to manually save to peer-review-by-<model>.md/finalize <slug> by <model> to synthesize all responses and reviews into final-answer-by-<model>.md.[Chat Commands (Cursor/Claude Code)]
├─ /first_answer {slug} "prompt" -> Stage1 capture (multi-model answers)
├─ /summarize <slug> <model> <content> -> tools.council.summarize (Optional: reduce token costs)
├─ /save_summary <slug> <model> <content> -> tools.council.save_summary (Save summary)
├─ /peer_review <slug> by <model> -> tools.council.peer_review (Stage2, self-exclusion)
├─ /save_review <slug> <model> <content> -> tools.council.save_review (Save peer review)
└─ /finalize <slug> by <model> -> tools.council.finalize (Stage3 synthesis)
▼
[Rust MCP Server: mcp-council]
Exposes tools.council.{first_answer,peer_review,save_review,finalize,summarize,save_summary}
▼
[Current AI Model Context]
Direct processing without external CLI calls
mcp-council/ # Rust MCP server source
├─ src/
├─ Cargo.toml
└─ QUICKSTART.md
.cursor/commands/cc/ # Chat-triggered commands (Stage1/2/3)
~/.council/{slug}/ # Outputs (answers, peer reviews, final synthesis)
Outputs example:
.council/your-project-slug/
├─ gpt-5-answer.md
├─ sonnet-answer.md
├─ gemini-answer.md
├─ summary.md # Optional: summary for large documents
├─ peer-review-by-sonnet.md
└─ final-answer-by-sonnet.md
Stage1 (collect answers)
/first_answer your-project-slug "Your Project Prompt"
Stage2 (peer review, with self-exclusion)
/peer_review your-project-slug by gpt-5.2
Fallback: Manual save (if needed)
/save_review your-project-slug glm-4.6 "Review content..."
peer-review-by-glm-4.6.md~/.council/<slug>/ directoryStage3 (final synthesis)
/finalize your-project-slug by claude
by <model> format to specify the synthesizing modelOptional: Summarize large documents (reduce token costs)
/summarize your-project-slug sonnet "Very long document..." max_length=2000
/save_summary your-project-slug sonnet "Summary content..."
summary.md for use in Stage2/Stage3 to reduce token costsFile Structure:
.council/<slug>/
├── <model>-answer.md
├── summary.md # Optional: for large documents
├── peer-review-by-<model>.md
└── final-answer-by-<model>.md
# Install binary
cargo install mcp-council
# Install slash commands (interactive - prompts for subfolder name)
mcp-council --init # Both Cursor and Claude Code
mcp-council --init-cursor # Cursor only
mcp-council --init-claude # Claude Code only
# Example interaction:
# $ mcp-council --init
# Enter subfolder name (leave empty for default 'cc'): council
# -> Installs to ~/.cursor/commands/council/ and ~/.claude/commands/council/
Add to your MCP config (~/.cursor/mcp.json for Cursor, ~/.claude.json for Claude Code):
{
"mcpServers": {
"mcp-council": {
"command": "mcp-council",
"args": []
}
}
}
Done! Now you can use /first_answer, /peer_review, /finalize commands.
git clone https://github.com/epicsagas/mcp-council.git
cd mcp-council
cargo build --release
cp target/release/mcp-council ~/.local/bin/
~/.cursor/mcp.json){
"servers": {
"mcp-council": {
"command": "mcp-council",
"args": []
}
}
}
# Ensure council root exists (home-scoped)
mkdir -p ~/.council
# For Cursor
mkdir -p ~/.cursor/commands/cc
cp mcp-council/commands/cc/* ~/.cursor/commands/cc/
# For Claude Code (per-project)
mkdir -p .cursor/commands/cc
cp mcp-council/commands/cc/* .cursor/commands/cc/
# Or globally for Claude Code
mkdir -p ~/.claude/commands/cc
cp mcp-council/commands/cc/* ~/.claude/commands/cc/
For a full walkthrough, see QUICKSTART.md.
~/.council/{slug} for storage by defaultsummarize tool to reduce token costs for large documents in Stage2/Stage3.council/ directory search up to 10 parent levels