An MCP (Model Context Protocol) server that provides LLM council workflow tools for multi-model queries, debates, and reviews.
Panel MCP Server enables AI clients (like Claude) to orchestrate multi-model workflows. The calling LLM uses these tools to query multiple models in parallel, run structured debates, get critiques, and then synthesize the results itself.
Key insight: The MCP server exposes tools that return structured multi-model responses. The calling LLM decides when/how to use these tools and can further process, compare, or synthesize the collected responses using its own reasoning.
- council_query: Query multiple LLMs in parallel, returning all responses for synthesis
- debate: Run structured adversarial debates between two models
- critique: Get one model to critique another's response
- challenge: Adversarial stress-testing of ideas with multiple models
- query_model: Query a single model directly
- list_models: Discover available models by provider
- health_check: Check provider status and connectivity
The calling LLM can optionally include its own position when using panel tools via the proposedThought parameter:
| Use Case | Tool | proposedThought Usage |
|---|---|---|
| Gather perspectives | council_query |
Optional: share your thought for comparison |
| Understand tradeoffs | debate |
Optional: share thought and which side it leans |
| Get feedback | critique |
Required: provide your response |
| Stress-test thinking | challenge |
Required: provide thought to stress-test |
-
OpenRouter mode (recommended): Use
openrouter/prefix for any of 300+ modelsopenrouter/anthropic/claude-sonnet-5openrouter/openai/gpt-5.6-solopenrouter/meta-llama/llama-3.3-70b-instruct
-
Direct mode: Use provider prefix for direct API calls (lower latency, no fee)
openai/gpt-5.6-sol- calls OpenAI API directlyanthropic/claude-sonnet-5- calls Anthropic API directlygoogle/gemini-3.1-pro-preview- calls Google API directlyazure/gpt-6-astra- calls your Azure OpenAI / Microsoft Foundry resource
Default Panel: GPT-5.6 Sol + Claude Sonnet 5 + Gemini 3.1 Pro (preview)
npm install panel-mcp-server
# or
pnpm add panel-mcp-serverSet at least one API key:
# Required (at least one)
export OPENROUTER_API_KEY=sk-or-...
# Optional direct providers (lower latency)
export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...
export GOOGLE_GENERATIVE_AI_API_KEY=...
export MISTRAL_API_KEY=...
# Optional configuration
export PANEL_DEFAULT_MODELS=openai/gpt-5.6-sol,anthropic/claude-sonnet-5,google/gemini-3.1-pro-preview
export PANEL_MAX_CONCURRENT=5
export PANEL_REQUEST_TIMEOUT_MS=300000panel-mcp-server --stdiopanel-mcp-server --http 8080Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"panel": {
"command": "npx",
"args": ["panel-mcp-server", "--stdio"],
"env": {
"OPENROUTER_API_KEY": "your-key-here"
}
}
}
}Query multiple LLM models in parallel. Returns all responses for synthesis.
{
prompt: string,
models?: string[], // defaults to GPT-4o, Claude Sonnet 4, Gemini 2.5 Pro
systemPrompt?: string,
proposedThought?: string, // share your thought with the council
compareMode?: boolean // ask models to explicitly compare to your thought
}Run a structured adversarial debate between two models.
{
topic: string,
affirmativeModel: string,
negativeModel: string,
rounds?: number, // 1-5, default: 2
proposedThought?: string, // share your thought on the topic
leaningSide?: "affirmative" | "negative" | "neutral" // which side your thought leans
}Have one model critique a response.
{
originalPrompt: string,
response: string,
criticModel: string,
aspects?: string[] // e.g., ["accuracy", "completeness"]
}Have multiple models find weaknesses in a proposed thought. Use for adversarial stress-testing.
{
proposedThought: string, // the thought/claim to challenge
context?: string, // additional context
challengers?: string[], // defaults to GPT-4o, Claude Sonnet 4, Gemini 2.5 Pro
challengeTypes?: ("logical" | "factual" | "completeness" | "edge_cases" | "alternatives")[]
}Returns structured challenges with severity ratings and reasoning.
Query a single model directly.
{
prompt: string,
model: string,
systemPrompt?: string
}List available models by provider.
{
provider?: "all" | "openrouter" | "openai" | "anthropic" | "google" | "mistral"
}Check provider status.
{
}# Install dependencies
pnpm install
# Validate (format + lint + test + build)
pnpm validate
# Development mode
pnpm dev
# Run tests
pnpm test- FastMCP - MCP server framework
- Vercel AI SDK - LLM provider integrations
- functype - Functional programming patterns
- ts-builds - TypeScript build tooling
MIT