Production-grade MCP server for Wind/Wall/Door multi-perspective debate orchestration
Project description
debate-hall-mcp
Production-grade MCP server for Wind/Wall/Door multi-perspective debate orchestration.
Table of Contents
For AI Agents
===AGENT_BOOTSTRAP===
SKILL::skills/debate-hall/SKILL.md
WORKFLOW::init→turn→get→close
AGENTS::agents/README.md[Wind/Wall/Door definitions]
COGNITIONS::agents/cognitions/[PATHOS|ETHOS|LOGOS overlays]
RECIPES::[SPEED(3)|STANDARD(12)|DEEP(36)|FORTRESS|LABORATORY]
===END===
What It Does
- Structured debates with Wind (explore) → Wall (constrain) → Door (synthesize)
- Deterministic state with turn limits, hash chain, and verifiable transcripts
- Multiple modes: Fixed sequence or mediated orchestration
- GitHub integration: Sync debates to Discussions, create ADRs from synthesis
- OCTAVE export: Semantic compression format for decision records
Quick Start
1. Install
pip install debate-hall-mcp
2. Configure MCP Client
Add to Claude Desktop (claude_desktop_config.json) or Claude Code (~/.claude.json):
{
"mcpServers": {
"debate-hall": {
"command": "debate-hall-mcp"
}
}
}
3. Start a Debate
User: Start a debate about whether to rewrite our backend in Rust
Claude: [calls init_debate with thread_id="rust-rewrite",
topic="Should we rewrite our backend in Rust?"]
4. Run the Dialectic
Wind → "What if we rewrote in Rust? Memory safety, performance..."
Wall → "Yes, but: team expertise, ecosystem maturity, timeline..."
Door → "Therefore: Profile hotspots first, consider Rust for specific components..."
That's it. For GitHub integration, see Configuration.
Installation
PyPI:
pip install debate-hall-mcp
# or
uv pip install debate-hall-mcp
From source:
git clone https://github.com/elevanaltd/debate-hall-mcp
cd debate-hall-mcp
uv pip install -e ".[dev]"
MCP Tools
Core Tools
| Tool | Purpose |
|---|---|
init_debate |
Create debate: thread_id, topic, mode?, max_turns? |
add_turn |
Record turn: thread_id, role, content |
get_debate |
View state: thread_id, include_transcript? |
close_debate |
Finalize: thread_id, synthesis, output_format? |
Mode Tools
| Tool | Purpose |
|---|---|
pick_next_speaker |
Set next speaker (mediated mode) |
Admin Tools
| Tool | Purpose |
|---|---|
force_close_debate |
Emergency shutdown (I5 kill switch) |
tombstone_turn |
Redact turn (preserves hash chain) |
GitHub Tools
| Tool | Purpose |
|---|---|
github_sync_debate |
Sync turns to GitHub Discussion/Issue |
ratify_rfc |
Generate ADR from synthesis, create PR |
human_interject |
Inject human GitHub comment into debate |
Configuration
Minimal (No GitHub)
The MCP config above is sufficient for local debates.
With GitHub Integration
- Copy
.env.exampleto.env - Add your GitHub token:
GITHUB_TOKEN=ghp_your_token_here
Token scopes needed:
repo,write:discussionGet one at: GitHub → Settings → Developer settings → Personal access tokens
See Usage Patterns for detailed configuration options.
Example
Thread: "microservices-vs-monolith"
Topic: "Should we migrate to microservices?"
[WIND] "What if we decomposed into services? Independent scaling,
technology diversity, team autonomy..."
[WALL] "Yes, but we have 3 developers. Microservices add operational
complexity, network latency, distributed transactions..."
[DOOR] "Therefore: Start with a modular monolith. Design service
boundaries now, but keep deployment unified. Extract services
only when team grows or specific scaling needs emerge."
Documentation
| Doc | Content |
|---|---|
| Usage Patterns | Recipes, tuning, agent tiers, cognition prompts |
| Evidence | Empirical research validating the approach |
| Architecture | Execution tiers, Wall content contract |
| Examples | Real multi-model debate patterns |
| Agents | Wind/Wall/Door agent definitions |
| Skills | AI agent skill installation |
The Pattern
Three cognitive voices in tension:
| Role | Cognition | Voice |
|---|---|---|
| Wind | PATHOS | "What if..." — expansive, visionary |
| Wall | ETHOS | "Yes, but..." — grounding, critical |
| Door | LOGOS | "Therefore..." — synthesizing, decisive |
Architecture Immutables
| ID | Principle |
|---|---|
| I1 | Cognitive State Isolation — server manages state |
| I2 | OCTAVE Binding — exportable semantic transcripts |
| I3 | Finite Closure — hard turn/round limits |
| I4 | Verifiable Ledger — SHA-256 hash chain |
| I5 | Safety Override — admin kill switch |
Contributing
See CONTRIBUTING.md for development setup, testing, and guidelines.
# Quick dev setup
git clone https://github.com/elevanaltd/debate-hall-mcp
cd debate-hall-mcp
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
# Run tests (500+ tests, 90%+ coverage)
pytest
# Quality checks
ruff check src tests && mypy src && black --check src tests
License
Apache-2.0 — Built with HestAI and MCP Python SDK.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file debate_hall_mcp-0.3.0.tar.gz.
File metadata
- Download URL: debate_hall_mcp-0.3.0.tar.gz
- Upload date:
- Size: 157.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66354f259601d23774e251ab6bf9de40ee2108c2df0a0ccdb76386d865d7bb82
|
|
| MD5 |
e59608b16e071b83b8e42e5259d45969
|
|
| BLAKE2b-256 |
1abc844f542040156b3e041a5773081d6590cdf2715ab1475bac87ebc13f6de6
|
Provenance
The following attestation bundles were made for debate_hall_mcp-0.3.0.tar.gz:
Publisher:
publish.yml on elevanaltd/debate-hall-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
debate_hall_mcp-0.3.0.tar.gz -
Subject digest:
66354f259601d23774e251ab6bf9de40ee2108c2df0a0ccdb76386d865d7bb82 - Sigstore transparency entry: 791279975
- Sigstore integration time:
-
Permalink:
elevanaltd/debate-hall-mcp@b3a70ce8378b2dcb95f19ce5304920b83009935f -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/elevanaltd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b3a70ce8378b2dcb95f19ce5304920b83009935f -
Trigger Event:
release
-
Statement type:
File details
Details for the file debate_hall_mcp-0.3.0-py3-none-any.whl.
File metadata
- Download URL: debate_hall_mcp-0.3.0-py3-none-any.whl
- Upload date:
- Size: 62.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fcb20e45366f6f66097ff6d90c163e358e528d3ab52efb121fc0cf8ea4d5dc2
|
|
| MD5 |
feb5c5b9239f8f04366f1848eb357c7d
|
|
| BLAKE2b-256 |
c19c3cdd022cdf3c6a3a4ff8bfb53fe2b22a031be711a912ce0830d3c8dc4a0b
|
Provenance
The following attestation bundles were made for debate_hall_mcp-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on elevanaltd/debate-hall-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
debate_hall_mcp-0.3.0-py3-none-any.whl -
Subject digest:
1fcb20e45366f6f66097ff6d90c163e358e528d3ab52efb121fc0cf8ea4d5dc2 - Sigstore transparency entry: 791279988
- Sigstore integration time:
-
Permalink:
elevanaltd/debate-hall-mcp@b3a70ce8378b2dcb95f19ce5304920b83009935f -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/elevanaltd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b3a70ce8378b2dcb95f19ce5304920b83009935f -
Trigger Event:
release
-
Statement type: