openrouter-deep-research-mcp

wheattoast11/openrouter-deep-research-mcp

3.5

If you are the rightful owner of openrouter-deep-research-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

OpenRouter Agents MCP Server is a sophisticated orchestration system for AI-powered research, utilizing multiple specialized agents and models.

Tools
3
Resources
0
Prompts
0

OpenRouter Agents MCP Server

Production MCP server for multi-agent AI research. Plan, parallelize, synthesize.

Install

npx @terminals-tech/openrouter-agents --stdio

Claude Code one-liner:

claude mcp add openrouter-agents -- npx @terminals-tech/openrouter-agents --stdio

What's New (v2.0.0)

  • MCP SDK 1.27.1 — registerTool/registerPrompt/registerResource APIs, security fixes
  • Zod 4 — Upgraded from Zod 3; z.record() syntax, config schema fixes
  • Express 5 — Upgraded from Express 4; modern path patterns, req.query handling
  • Streamable HTTP — Primary transport (SSE deprecated as legacy fallback)
  • Circuit breaker — Model API fault tolerance with configurable thresholds
  • Embedding-based model routing — Local vector similarity for model selection (no LLM call)
  • Persistent storage — Reports, jobs, knowledge graph persist across sessions by default

macOS/Node 25 Note: A cosmetic libc++abi: mutex lock failed message may appear on shutdown. This is harmless — data is checkpointed before shutdown. Set DB_AUTO_HEAL=true for in-memory mode (no persistence, no message).

| |

Configuration

Set OPENROUTER_API_KEY in your environment, then configure via .env or .mcp.json:

VariableDefaultDescription
OPENROUTER_API_KEYrequiredOpenRouter API key
OPENROUTER_API_KEYS(optional)Comma-separated OpenRouter keys for rotation
OPENROUTER_KEY_COOLDOWN_MS5000Base cooldown per key after failures
SERVER_PORT3002HTTP server port
MODEALLAGENT, MANUAL, or ALL
EMBEDDING_ROUTING_ENABLEDtrueEnable embedding-based model routing
INDEXER_ENABLEDtrueEnable knowledge indexing

.mcp.json example (team-shareable)
{
  "mcpServers": {
    "openrouter-agents": {
      "command": "npx",
      "args": ["@terminals-tech/openrouter-agents", "--stdio"],
      "env": {
        "OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}",
        "INDEXER_ENABLED": "true"
      }
    }
  }
}

Multi-Client Setup

Transport Modes

TransportFlagUse Case
STDIO(default)MCP clients (Claude, Jan AI, Continue)
HTTP--httpWeb apps, shared server

STDIO is the default transport per MCP spec. Use --http explicitly for HTTP mode.

Client-Specific Setup

Jan AI
  1. Enable MCP Servers in Settings → Advanced → Experimental
  2. Click + to add server
  3. Configure:
    • Name: openrouter-agents
    • Command: npx
    • Arguments: @terminals-tech/openrouter-agents
    • Environment: OPENROUTER_API_KEY=sk-or-...

Note: STDIO is now default - no --stdio flag needed.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "openrouter-agents": {
      "command": "npx",
      "args": ["@terminals-tech/openrouter-agents"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-..."
      }
    }
  }
}
Continue / Zed / Other MCP Clients

Standard MCP config - STDIO is default, no flags needed:

{
  "command": "npx",
  "args": ["@terminals-tech/openrouter-agents"],
  "env": { "OPENROUTER_API_KEY": "..." }
}

Feature Matrix

FeatureAll MCP ClientsClaude Code Only
Core Research Tools
Knowledge Base
Session/Graph Tools
Rail Protocol Tools
Slash Commands-

Models (v2.0.0)

High-Cost Tier

ModelDomains
anthropic/claude-sonnet-4.5reasoning, technical, general, creative
anthropic/claude-opus-4.6reasoning, technical, general, creative
openai/gpt-5.2-chatreasoning, technical, general
openai/gpt-5.3-codexcoding, technical, reasoning
google/gemini-3-pro-previewreasoning, technical, general
qwen/qwen3-codercoding, editing, technical

Low-Cost Tier

ModelDomains
google/gemini-3-flash-previewcoding, editing, technical
anthropic/claude-haiku-4.5general, technical, reasoning
deepseek/deepseek-chat-v3.1general, reasoning, technical, coding
deepseek/deepseek-v3.2general, reasoning, technical, coding
openai/gpt-oss-120bgeneral, reasoning, search

Models are selected via embedding-based routing — query embeddings are matched to model domain profiles without an LLM call.

Tools

Research
ToolDescription
researchAsync research (returns job_id)
conduct_researchSync research with streaming
batch_researchParallel batch queries
research_follow_upContext-aware follow-up
agentUnified entrypoint (auto-routes)
Knowledge Base
ToolDescription
searchHybrid BM25+vector search
retrieveIndex or SQL query
querySQL SELECT with params
get_reportGet report by ID
historyList recent reports
Session & Graph
ToolDescription
undo / redoSession time-travel
checkpointNamed save points
fork_sessionCreate alternate timeline
graph_traverseExplore knowledge graph
graph_clustersFind node clusters
graph_pagerankImportance rankings
Rail Protocol
ToolDescription
list_railsList rails, tunnels, routes, consensus
explain_railDetailed rail/tunnel config
list_routesAll defined routes
list_tunnelsActive agent-to-agent tunnels
list_consensusStreaming consensus sessions
Utility
ToolDescription
pingHealth check
get_server_statusFull diagnostics
job_statusCheck async job
date_timeCurrent timestamp
calcMath evaluation
list_toolsAvailable tools

MCP Compliance

Compliant with MCP Specification 2025-11-25 (stable, AAIF/Linux Foundation governance).

FeatureSEPStatus
JSON-RPC 2.0CoreCompliant
Tools/Resources/PromptsCoreCompliant
Task ProtocolSEP-1686Compliant
Sampling with ToolsSEP-1577Compliant
ElicitationSEP-1036Compliant
MCP AppsSEP-1865Compliant
Enterprise AuthSEP-990Compliant
Client MetadataSEP-991Compliant

Architecture

User Query
    │
    ▼
┌─────────────────┐
│  Planning Agent  │ ─── Decomposes into sub-queries
└────────┬────────┘
         │
    ┌────┴────┐
    ▼         ▼
┌───────┐ ┌───────┐
│Agent 1│ │Agent N│ ─── Parallel research (embedding-routed models)
└───┬───┘ └───┬───┘
    │         │
    ▼         ▼
┌─────────────────┐
│   Synthesizer   │ ─── Consensus + citations (Signal protocol)
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Knowledge Base  │ ─── PGlite + pgvector (persistent)
└─────────────────┘

Core Abstractions

ModulePurpose
Signal ProtocolInter-agent communication with confidence scoring and consensus
Rail ProtocolBidirectional channels with backpressure, provenance, tunnels
Error TaxonomyDeterministic classification with auto-learning and circuit breakers
Circuit BreakerModel API fault tolerance with configurable thresholds and auto-recovery
Parameter NormalizationDeclarative alias system (qquery, costcostPreference)
RoleShift ProtocolBidirectional server↔client via MCP sampling/elicitation
Embedding RouterLocal vector-based model selection via @terminals-tech/embeddings

Circuit Breaker

Protects against cascading model API failures. Configurable via environment:

VariableDefaultDescription
RAIL_CIRCUIT_BREAKERtrueEnable circuit breaker
RAIL_CIRCUIT_THRESHOLD5Failures before tripping
RAIL_CIRCUIT_RESET_MS120000Recovery timeout (ms)

States: closed (normal) -> open (failing, requests rejected) -> half-open (testing recovery).

Transport (v2.0.0)

TransportStatusUse Case
Streamable HTTPPrimaryAll new integrations
SSEDeprecatedLegacy compatibility only
STDIODefaultMCP clients (Claude, Jan AI, Continue)

Links

Releasing

Releases are automated via release-please:

  1. Push conventional commits to main (e.g. feat:, fix:, chore:)
  2. release-please opens a version-bump PR
  3. Merge the PR → GitHub Release created automatically
  4. npm publish triggers on release via CI

Manual publish:

npm test && npm publish --access public

Version: 2.0.0 | MCP SDK: 1.27.1 | MCP Spec: 2025-11-25 | Author: Tej Desai | License: MIT