openrouter-mcp
openrouter-mcp
An mcp-use MCP App that lets Claude / ChatGPT reason about OpenRouter's 300+ models — price, context, capabilities, cost and rankings — each tool paired with a React widget in one file, deployable on Manufact.
Everything is powered by one public, key-less endpoint:
GET https://openrouter.ai/api/v1/modelsIt returns id, context length, per-token pricing, modalities, supported params and arena/benchmark scores for every model. We fetch it once, cache it 6h, and every tool is a pure transform over that array — no auth, no pagination.
Tools
Tool | Prompt | What it does |
| "what's claude-opus-4.8?" | Price, context, capabilities & arena ELO for one model |
| "gpt-5 vs sonnet vs deepseek?" | 2–4 models side by side, best value marked per metric |
| "cheapest vision model, 200K+ ctx?" | Filter by needs, sort by input price |
| "cost for 2M in / 0.5M out?" | Interactive calculator — tweak tokens, watch the total recompute live |
| "top coding models right now?" | Models ranked by design-arena ELO leaderboard |
Run locally
npm install
npm run dev # server on :3000 + InspectorIn the Inspector, call each tool:
{ "model": "claude-opus-4.8" }
{ "models": ["gpt-5", "claude-sonnet-4.6", "deepseek-v4"] }
{ "needs": ["vision"], "minContext": 200000 }
{ "model": "deepseek-v4", "inputTokens": 2000000, "outputTokens": 500000 }
{ "arena": "coding", "limit": 10 }Structure
openrouter-mcp/
├── index.ts # MCPServer + 5 server.tool(...) defs
├── src/openrouter.ts # getModels() 6h cache + normalize() + findModel()
└── resources/
├── card.tsx # model-card
├── compare.tsx # compare-models
├── cheapest.tsx # cheapest-for
├── cost.tsx # cost-estimator (interactive React state)
└── rankings.tsx # usage-rankingsDeploy on Manufact
Push this repo to GitHub.
Connect it on manufact.com via the Manufact GitHub App.
No env vars needed — the catalog API is public. (Add
OPENROUTER_API_KEYonly if you later add live inference / routing.)Every push auto-deploys with a preview URL, SSL, logs and metrics.
Notes
Pricing is a per-token decimal string — multiply by
1e6for $/1M (src/openrouter.ts).Not every model has arena ELO — widgets guard for
null.input_modalities(notmodality) is the reliable vision/audio signal.OpenRouter exposes no clean public JSON for token-share usage, so
usage-rankingsranks by the real design-arena ELO carried in the same cached/modelscall.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/aaryanptl/openrouter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server