OpenRouter Fusion MCP Server
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., "@OpenRouter Fusion MCP ServerRun a quality fusion deliberation on the implications of AGI"
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.
OpenRouter Fusion — MCP server
A tiny MCP server that exposes OpenRouter Fusion (multi-model deliberation) to any MCP client (MCPHub, Claude Desktop, Claude Code, …) when you need a very good answer.
What is Fusion? It turns your prompt into a small multi-model deliberation: a panel of models answers in parallel (with web search/fetch), then a judge ("Fuse with") model synthesizes consensus, contradictions, unique insights and blind spots into one final answer. It beats any single model on hard questions — at roughly 4–5× the cost of a single completion. Docs: https://openrouter.ai/docs/guides/features/plugins/fusion · model page: https://openrouter.ai/openrouter/fusion
Tools (v2 — async only)
Tool | Role |
| List the available configs (name, label, panel, judge, reasoning_effort, temperature). |
| Start a deliberation in the background and return a |
| Long-poll a |
The old synchronous wrappers (fusion_quality / fusion_ultra / fusion_perso) were removed —
sync calls were cut by client/proxy timeouts. Everything goes through fusion_start + fusion_result.
fusion_start({ prompt, preset:"quality" }) → { job_id }
fusion_result({ job_id }) → answer (re-call while {status:"running"})fusion_start forces the deliberation pipeline (tool_choice:"required"). Per-call overrides:
preset, reasoning_effort, temperature, analysis_models, judge_model, system.
Related MCP server: Wisepanel MCP Server
Configs (Quality / Budget / Custom)
Mirrors OpenRouter's "Model Fusion" UI tabs. Two are built-in in server.mjs; the rest are
named custom configs, one per environment variable.
Config | Source | Panel | Judge | Reasoning |
| built-in | Opus 4.8 + GPT-5.5 + Gemini 3.1 Pro | Opus 4.8 | high |
| built-in | chosen by OpenRouter ( | OpenRouter | medium |
| env var | see | — | high |
Each config carries analysis_models (panel) · judge (orchestrator) · reasoning_effort
(xhigh|high|medium|low|minimal|none, default high) · temperature (null =
model default, or 0–2) · optional system.
Configuring — one env var per config
The server scans every OPENROUTER_FUSION_<NAME> env var and registers it as a config named
<name> (lowercased; override with a name field — e.g. code-eco). The value is the JSON
object {...}; the parser also tolerates a "name":{...} fragment or a {"name":{...}} wrapper.
OPENROUTER_FUSION_MATHS = {"name":"maths","analysis_models":[...],"judge":"...","reasoning_effort":"high","temperature":null,"system":"..."}
OPENROUTER_FUSION_CODE = {...}
OPENROUTER_FUSION_PERSO = {...}fusion-presets.json— canonical, documented copy of all configs.fusion-env-vars.json— the exact compact values to paste into the mcphub env (one per config).Extra vars:
OPENROUTER_API_KEY(an inference key with credit),OPENROUTER_FUSION_DEFAULT_REASONING.Legacy
OPENROUTER_FUSION_PRESETS(single map) andOPENROUTER_FUSION_PERSO_CONFIGare still read for backward-compat.
Diagnostic: FUSION_DUMP_PRESETS=1 node server.mjs prints the resolved configs and exits.
Install
npm installNo build step — plain ESM (node server.mjs). Requires Node ≥ 18 (global fetch).
Set your key via the client's env, or copy .env.example → .env:
OPENROUTER_API_KEY=sk-or-...Use with MCPHub
Add a stdio server pointing at the absolute path of server.mjs:
{
"name": "openrouter-fusion",
"config": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/openrouter-fusion/server.mjs"],
"env": {
"OPENROUTER_API_KEY": "sk-or-xxxxxxxxxxxxxxxx",
"OPENROUTER_FUSION_MATHS": "{...}",
"OPENROUTER_FUSION_CODE": "{...}"
}
}
}If
nodeisn't on the launching process's PATH, replace"node"with an absolute path.
Use with Claude Code / Claude Desktop
claude mcp add openrouter-fusion -e OPENROUTER_API_KEY=sk-or-... -- node "/absolute/path/to/server.mjs"Example global slash commands you can drop into ~/.claude/commands/ (not shipped in this repo):
/fusion & /fusion-choose (a selector that calls fusion_list then runs your pick),
/fusion-quality, /fusion-budget, /fusion-custom <name> <question> — each just calls
fusion_start with the matching preset then polls fusion_result.
Optional — package as a one-click .mcpb bundle
npx @anthropic-ai/mcpb packThe bundle prompts the user for their OpenRouter API key on install (user_config).
Examples
// start a quality deliberation
{ "prompt": "Explain the trade-offs between ridge, lasso and elastic net.", "preset": "quality" }
// a custom config with a per-call reasoning override
{ "prompt": "Review this clinical case and list differential diagnoses.", "preset": "medecine", "reasoning_effort": "xhigh" }Notes
Model slugs use OpenRouter syntax — pick valid slugs from https://openrouter.ai/models.
Fusion is billed per the panel + judge it runs —
quality($0.09 on a trivial probe) costs more thanbudget($0.04). Keep the heavy configs for the cases that justify them.A tool-set change only shows client-side after the connector reconnects (cached manifest); calls still hit the live server.
Jobs live in memory only. If the server process restarts, in-flight
job_ids becomeUnknown— just callfusion_startagain. Finished jobs are pruned after ~30 min (and on a background timer).
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/tboome33/openrouter-fusion-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server