multi-model-mcp
Allows using Google Gemini models as part of multi-model reasoning, debate, and red-teaming workflows.
Allows running local models via Ollama for on-premise inference in multi-model setups.
Allows using OpenAI models (e.g., GPT-4) for sub-agent style reasoning and parallel comparisons.
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., "@multi-model-mcpExplain the CAP theorem using gpt, claude, and gemini."
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.
multi-model-mcp
An MCP server that exposes tools for sub-agent style reasoning across multiple LLM providers. From Claude Code (or any MCP client), you can delegate prompts to OpenAI, Anthropic, Gemini, Groq, Ollama, OpenRouter, and any LiteLLM-supported provider — then run critique loops, debates, red-teaming, and answer ranking without leaving your conversation.
Tools
Tool | Description |
| Send a prompt to one configured model |
| Send the same prompt to multiple models in parallel |
| Multi-step reasoning: independent → critique, debate, or red-team |
| Ask models to critique a draft answer |
| Have a judge model rank candidate answers |
| List all configured model aliases |
reason_together strategies
independent_then_critique(default): All models answer independently → critic synthesizesdebate: Models see each other's answers and refine over N rounds → critic synthesizesred_team: Proposer answers → red teamers attack → proposer revises (N rounds) → critic finalizes
Related MCP server: HydraMCP
Setup
1. Install
Requires Python ≥ 3.11 and uv.
git clone https://github.com/YOUR_USERNAME/multi-model-mcp
cd multi-model-mcp
uv sync2. Configure models
Copy and edit models.yaml — it ships with common models pre-configured. Each entry is a model alias pointing to a LiteLLM model string:
models:
gpt:
litellm_model: gpt-4.1
api_key_env: OPENAI_API_KEY
claude:
litellm_model: claude-sonnet-4-5
api_key_env: ANTHROPIC_API_KEY
local:
litellm_model: ollama/qwen3:latest
api_base: http://localhost:11434 # no key neededAdd any provider LiteLLM supports: Groq (groq/llama-3.3-70b-versatile), Mistral, Together AI, DeepSeek, OpenRouter (openrouter/...), etc.
3. Set API keys
cp .env.example .env
# edit .env with your keysOnly keys for providers you actually use are required.
4. Register with Claude Code
Add to your project's .mcp.json (or ~/.claude.json for global):
{
"mcpServers": {
"multi-model": {
"command": "uv",
"args": [
"run",
"--project", "/path/to/multi-model-mcp",
"multi-model-mcp"
],
"env": {
"OPENAI_API_KEY": "sk-...",
"ANTHROPIC_API_KEY": "sk-ant-...",
"GEMINI_API_KEY": "...",
"MODELS_CONFIG_PATH": "/path/to/multi-model-mcp/models.yaml"
}
}
}
}Or if you install it:
uv tool install .Then use "command": "multi-model-mcp" without args.
Example Claude Code usage
# Simple query
Use ask_model with alias "gpt" to explain backpressure in streaming systems.
# Parallel comparison
Use ask_many with aliases ["gpt", "claude", "gemini"] to explain the CAP theorem.
Compare their answers.
# Multi-model reasoning
Use reason_together with task "Should we use event sourcing for this service?"
model_aliases ["gpt", "gemini"], critic_model_alias "claude", strategy "independent_then_critique"
# Debate
Use reason_together with task "Is GraphQL worth the complexity over REST?"
model_aliases ["gpt", "claude"], critic_model_alias "gemini", strategy "debate", rounds 2
# Red-team a decision
Use reason_together with task "Our plan is to use a single Postgres instance for all tenants"
model_aliases ["gpt", "gemini", "groq"], strategy "red_team", rounds 2
# Critique a draft
Use critique_answer with question "What is eventual consistency?"
draft_answer "It means data will eventually be the same across nodes."
model_aliases ["claude", "gpt"]
# Pick the best
Use pick_best_answer with question "What is the best way to handle auth tokens?"
candidate_answers ["Store in localStorage", "Store in httpOnly cookies", "Store in memory only"]
judge_model_alias "claude"Configuration reference
models.yaml fields
Field | Required | Description |
| Yes | LiteLLM model string (e.g. |
| No | Human-readable label |
| No | Env var name holding the API key |
| No | Override base URL (needed for Ollama, proxies) |
| No | Per-call timeout in seconds (default: 60) |
| No | Retry attempts on rate limit / timeout (default: 2) |
LiteLLM model strings by provider
Provider | Example model string |
OpenAI |
|
Anthropic |
|
Google Gemini |
|
Groq |
|
Ollama |
|
OpenRouter |
|
Mistral |
|
DeepSeek |
|
Together AI |
|
See LiteLLM providers docs for the full list.
Design notes
No key leakage: API keys are never logged; errors are sanitized before returning.
Failure isolation: one model failing in
ask_many/reason_togetherdoes not crash the call.Synthesis ≠ truth:
reason_togetherpresents the critic's output as a synthesized answer, not ground truth.No hidden reasoning exposed: traces summarize what happened (which model, which step) without exposing chain-of-thought internals.
Easy to extend: add any LiteLLM-supported model in
models.yamlwith no code changes.
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/fernando-freitas-alves/multi-model-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server