A Model Context Protocol (MCP) server for OpenRouter. Register it in MCP-compatible clients that can launch a local stdio server to use OpenRouter models for chat, vision, benchmarking, and collective-intelligence workflows.
- MCP tools: chat, model listing, usage stats, vision chat, vision model listing, free chat, free model listing, free model metrics
- Benchmarking suite and performance comparison tools
- Collective intelligence tools (consensus, ensemble reasoning, adaptive routing, cross-model validation, collaborative solving)
- Secure API key storage (OS keychain, encrypted file, or .env) with audit logging
- Streaming responses, caching, and rich model metadata
npx @physics91/openrouter-mcp init
npx @physics91/openrouter-mcp startGlobal install:
npm install -g @physics91/openrouter-mcp
openrouter-mcp init
openrouter-mcp startClient config formats differ, but the launch information is usually the same:
command:npxargs:["@physics91/openrouter-mcp", "start"]env: Use only when the client cannot rely onopenrouter-mcp initor inherited environment variables.
Recommended credential flow:
- Run
npx @physics91/openrouter-mcp init - Let
openrouter-mcp startresolve the API key from secure storage or runtime environment
Client-specific examples:
- Claude Desktop:
mcpServersinclaude_desktop_config.json - Claude Code:
claude mcp add ...or project.mcp.json - VS Code:
serversin.vscode/mcp.json
See docs/MCP_CLIENT_GUIDE.md for the common flow and client-specific examples.
- Node.js 16+
- Python 3.10+ (
pythonorpython3must be available inPATH) - First run attempts dependency install via
<python> -m pip install -r requirements.txt - OpenRouter API key: https://openrouter.ai
If you clone this repository and want to trust local DevOps gates immediately, run this baseline once:
git clone <repo-url>
cd openrouter-mcp
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements-dev.txt
npm install --no-audit --no-fundThen run the quality/release gates:
- Build gate (
buildskill):
ruff check src/ tests/
black --check src/ tests/
isort --check-only src/ tests/- Test gate (
testskill):
python3 run_tests.py assurance -v- Deploy pre-flight (
deployskill):
npm whoamiNotes:
assuranceincludes Python test gates and thennpm run test:securityonly after pytest passes.- If your OS blocks global pip installs (PEP 668), use
.venvas shown above. npm run buildis intentionally a no-op in this project; static quality gates above are the real build criteria.- Publishing is always manual and intentional:
npm publish --access publiconly after all gates pass and explicit confirmation.
Use openrouter-mcp <command> or npx @physics91/openrouter-mcp <command>.
Commands:
startStart the MCP server (stdio)initInitialize API key storagestatusShow configuration statusinstall-claudeConfigure Claude Desktopinstall-claude-codeConfigure Claude Code CLIrotate-keyRotate API key across storagedelete-credentialsRemove stored credentialssecurity-auditAudit credential storage and permissionsmigrate-encryptionMigrate encrypted credentials to v2.0
Global options: --verbose, --debug
start options: --host, --port
- Common MCP client setup:
docs/MCP_CLIENT_GUIDE.md - Claude Desktop shortcut:
openrouter-mcp install-claude - Claude Code CLI shortcut:
openrouter-mcp install-claude-code - Generated server entries use:
npx @physics91/openrouter-mcp start
See:
docs/MCP_CLIENT_GUIDE.mddocs/CLAUDE_DESKTOP_GUIDE.mddocs/CLAUDE_CODE_GUIDE.md
- Vision tools accept images as base64 or URL only (file paths are not supported).
- API keys should not be committed. Use
initfor secure storage. SeeSECURITY.md.
docs/INSTALLATION.mddocs/MCP_CLIENT_GUIDE.mddocs/CLAUDE_DESKTOP_GUIDE.mddocs/CLAUDE_CODE_GUIDE.mddocs/API.mddocs/SECURITY.mddocs/MULTIMODAL_GUIDE.mddocs/BENCHMARK_GUIDE.mddocs/SECURE_STORAGE_INTEGRATION.mddocs/QUICK_REFERENCE.mddocs/USAGE_GUIDE_KR.mddocs/CLAUDE_CODE_SETUP_KR.md
See CONTRIBUTING.md.
Quick setup for local hook enforcement:
pip install -r requirements-dev.txt
pre-commit installThe installed hooks enforce:
pre-commitfast checks before commitcommit-msgConventional Commit format in Englishpre-pushsmoke tests
Deeper static analysis remains available as advisory/manual checks rather than push blockers.
Use pre-commit run --hook-stage manual mypy-advisory --all-files (and the other *-advisory hooks) when you want the broader reports locally.
MIT