fusion-mcp
<!-- mcp-name: io.github.Jolymmiles/fusion-mcp -->Local Fusion MCP server — replicates the OpenRouter Fusion mechanism on your local Claude CLI subscription. No OpenRouter, no separate token bill, one wallet.
Instead of dispatching to many vendors, it fans out several headless claude -p calls, each given a distinct analytical lens, then runs a judge pass and a synthesis pass.
Pipeline
| Stage | Name | What |
|---|---|---|
| 1 | Panel | N parallel claude -p calls, diverse lenses (pragmatist / skeptic / researcher / architect), web search on |
| 2 | Judge | One call: consensus / contradictions / gaps / blind spots |
| 3 | Synthesis | One call: final answer grounded in the judge analysis |
Tool
fusion_research(question, panel="default")
Panels:
default/frontier— Opus 4.8budget— haiku + sonnet (use for frequent calls)
Install
Recommended — from PyPI via uvx (no manual venv, works in every folder):
claude mcp add -s user fusion -- uvx --from fusion-mcp fusion-mcp
-s user registers the server for all folders; uvx fetches fusion-mcp from PyPI on first run.
Plain pip works too:
pip install fusion-mcp
claude mcp add -s user fusion -- fusion-mcp
From source (clone, for hacking on it):
git clone https://github.com/Jolymmiles/fusion-mcp.git
cd fusion-mcp && python3 -m venv .venv && .venv/bin/pip install -e .
claude mcp add -s user fusion -- $(pwd)/.venv/bin/python $(pwd)/fusion_mcp.py
Requirements
Needs the Claude CLI (claude) on PATH and an active Claude Pro/Max subscription — the server fans out local claude -p calls. Without it the tool will not run.
Cost
Each call ≈ panel_size + 2 full Claude turns, 2-3x slower than a single call. Binding limit is the subscription request rate / usage quota, not dollars. Call sparingly — reserve for expensive questions: architecture decisions, comparing approaches, best-practice research.
Statusline (optional)
Server writes an atomic JSON heartbeat to $XDG_RUNTIME_DIR/fusion-mcp/state.json. Reader fusion-status.sh (bash + jq) prints e.g. 🔮 fusion[panel] 2/3 panel. Wire into statusLine.command in settings.json.