dxt-openrouter-router
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., "@dxt-openrouter-routerroute research_long_context low energy"
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.
DXT OpenRouter Router
A tiny MCP (stdio) server that returns a ready-to-send OpenRouter request body from a named preset and your current energy budget:
| Model slug becomes | Meaning |
|
| cheapest provider serving that model |
|
| the model's default provider |
|
| highest-throughput provider |
Two things make this different from a normal cost router:
It routes on energy, not just cost. The input is a fact about you, not about the task. "Cheap" and "fast" are the same axis viewed from different energy levels.
Zero Data Retention is the default. Every body ships
provider.data_collection: "deny", so a preset has to explicitly opt out of privacy rather than opt in to it.
It builds the request. It does not send it — so it never needs your API key in-process, and never sees a response.
Install
npm install -g dxt-openrouter-routerOr run it without installing:
npx dxt-openrouter-routerRelated MCP server: mcp-openrouter
Register it with an MCP host
Claude Desktop (claude_desktop_config.json) or any MCP client:
{
"mcpServers": {
"openrouter-router": {
"command": "npx",
"args": ["-y", "dxt-openrouter-router"],
"env": {
"ROUTING_PRESETS_PATH": "C:\\path\\to\\routing.presets.json"
}
}
}
}ROUTING_PRESETS_PATH is optional — omit it and the bundled routing.presets.json is used. The file is re-read on every call, so you can edit presets without restarting the host.
The routeLLM tool
Argument | Required | Description |
| ✅ | A key from |
|
| |
| The user message to place in the body | |
| Overrides the preset's own system prompt | |
| Extra body fields merged in last, e.g. |
Example
// call
{ "preset": "research_long_context", "energy": "low", "user_prompt": "Synthesize these sources..." }// result
{
"url": "https://openrouter.ai/api/v1/chat/completions",
"method": "POST",
"headers": {
"Authorization": "Bearer $OPENROUTER_API_KEY", // literal placeholder — never your real key
"Content-Type": "application/json"
},
"api_key_configured": true,
"body": {
"temperature": 0.2,
"model": "meta-llama/llama-3.1-70b-instruct:floor",
"messages": [
{ "role": "system", "content": "You are a careful research synthesist. ..." },
{ "role": "user", "content": "Synthesize these sources..." }
],
"provider": { "data_collection": "deny" }
}
}Presets
routing.presets.json is a plain map of name → preset:
{
"presets": {
"daily_driver": {
"model": "google/gemini-3.6-flash", // no :floor/:nitro here — energy adds that
"description": "Default workhorse — unit tests, refactors, docs, CLI loops.",
"system": "Optional default system prompt.",
"provider": { "data_collection": "deny" }, // merged over the ZDR default
"response_format": { "type": "json_object" }, // passed straight through
"params": { "temperature": 0.4 } // any other OpenRouter body field
}
}
}Bundled presets mirror a simple decision tree:
Preset | Model | Reach for it when |
|
| formats, clarifications, vibe checks |
|
| ~80% of volume — tests, refactors, docs |
|
| math, symbolic logic, formal reasoning |
|
| architecture, nuanced review, agentic work |
|
| long-context synthesis across sources |
|
| extraction that must return parseable JSON |
Slugs were verified against https://openrouter.ai/api/v1/models on 2026-07-22. OpenRouter slugs change as models ship — re-check before relying on them.
Secrets
🔒 This package contains no API key, and the tool output never includes one.
OPENROUTER_API_KEYis read from the environment, and only ever reported as the booleanapi_key_configured.The
Authorizationheader is emitted as the literal stringBearer $OPENROUTER_API_KEY, so tool output is safe to paste into a chat log, an issue, or a commit.Copy
.env.example→.envfor local use..envis gitignored.
Use as a library
The pure core is exported, so you can build bodies without MCP:
import { buildRequestBody, loadPresets } from "dxt-openrouter-router";
const presets = loadPresets("./routing.presets.json");
const body = buildRequestBody(presets, { preset: "daily_driver", energy: "low" });Develop
npm install
npm run build # tsc -> dist/
npm test # node --test test/License
MIT © Sasha Philius
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA simple server that acts as a Master Control Program (MCP) for unified interaction with OpenAI and Anthropic (Claude) AI models through a single API endpoint.26MIT
- AlicenseAqualityCmaintenanceA Python MCP server that lets MCP hosts call OpenRouter models for chat, image generation, embeddings, and model search via FastMCP with .env support and retry handling.51MIT
- AlicenseAqualityDmaintenanceA lightweight MCP server that enables AI coding assistants to interact with OpenRouter API for direct queries, file analysis, and batch processing.3MIT
- FlicenseNot gradedqualityDmaintenanceLocal MCP server that exposes fixed tools for GPT, Claude, and Gemini while routing to any OpenAI-compatible chat completions backend with independent configuration per target.1
Related MCP Connectors
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
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/sphilius/dxt-openrouter-router'
If you have feedback or need assistance with the MCP directory API, please join our Discord server