Skip to main content
Glama

⚡ OpenRouter Zero MCP (openrouter-zero-mcp)

Smithery Glama License: MIT Zero-Dependency Startup

The fastest, lightest OpenRouter MCP server.
Built with zero third-party dependencies in pure Node.js. Boots in under 30ms, uses ~15MB of RAM, and supports multi-model inference (DeepSeek, Claude, Gemini, Llama), catalog search, and credits monitoring on Claude Desktop, Cursor, Antigravity, and Windsurf.


⚡ Why OpenRouter Zero?

Feature

Typical OpenRouter MCPs

openrouter-zero-mcp

Dependencies

100+ npm packages or heavy Python venv

Zero (0) native Node.js only

Startup Latency

1.2s - 3.5s

< 30ms instant boot

Memory Footprint

~120MB+

~15MB

JSON-RPC Spec

Often crashes on notifications

100% Spec-Compliant (Handles notifications correctly)


Related MCP server: Zen MCP Server

🚀 1-Click Install via Smithery

Install automatically into Claude Desktop with Smithery:

npx -y @smithery/cli install @Gabrielrtads/openrouter-zero-mcp --client claude

💻 Manual Setup

1. Claude Desktop

Add this to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "openrouter": {
      "command": "npx",
      "args": ["-y", "openrouter-zero-mcp"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-your-key-here"
      }
    }
  }
}

2. Cursor IDE

  1. Open Cursor Settings (Ctrl+Shift+J or Cmd+Shift+J).

  2. Navigate to Features > MCP Servers > Add New MCP Server.

  3. Fill in:

    • Name: openrouter

    • Type: command

    • Command: npx -y openrouter-zero-mcp

    • Environment Variables: OPENROUTER_API_KEY=sk-or-v1-your-key-here

3. Antigravity / Windsurf / Claude Code

In your mcp_config.json:

{
  "mcpServers": {
    "openrouter": {
      "command": "npx",
      "args": ["-y", "openrouter-zero-mcp"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-your-key-here"
      }
    }
  }
}

🛠️ Available MCP Tools

1. openrouter_chat_completion

Executes chat completions on any model in the OpenRouter catalog (DeepSeek V3/R1, Gemini 2.5 Flash, Claude 3.7 Sonnet, Llama 3.3 70B, etc.).

  • Parameters: model, messages, prompt, temperature, max_tokens, reasoning.

2. openrouter_get_credits

Checks real-time credit balance, usage, and key parameters.

3. openrouter_list_models

Searches and lists models from the OpenRouter API with pricing per 1M tokens and context window size.

  • Parameters: search (e.g. 'deepseek', 'gemini', 'free'), limit.

4. openrouter_manage_keys

Provisions, lists, or revokes API keys via the OpenRouter Management API.

  • Parameters: action ('list', 'create', 'delete'), name, limit, hash.


🔒 Security & Privacy

  • All API calls are made directly to https://openrouter.ai/api/v1 with your personal key.

  • Zero analytics, zero telemetry, zero middleman proxy.

  • Secrets are read exclusively from environment variables.


📄 License

MIT License — Created with ❤️ by Gabriel Toledo (@Gabrielrtads).

Available Tools

4 tools
openrouter_chat_completionC

Execute chat inference on any model available on OpenRouter (e.g. google/gemini-2.5-flash, anthropic/claude-3.7-sonnet, deepseek/deepseek-v4-flash-0731:US, meta-llama/llama-3.3-70b-instruct).

NameRequiredDescriptionDefault
modelNoOpenRouter model ID (default: 'google/gemini-2.5-flash').google/gemini-2.5-flash
promptNoSimple prompt string (fallback if 'messages' is omitted).
messagesNoArray of messages [{role: 'user'|'system'|'assistant', content: '...'}]
reasoningNoThinking / reasoning config (e.g. { effort: 'high' } or { enabled: true }).
max_tokensNoMaximum completion tokens limit.
temperatureNoSampling temperature (0.0 to 2.0).

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it discloses nothing about cost/credit consumption, API-key requirements, rate limits, timeouts, or whether calls are stateless. For a paid external-inference call this is a meaningful omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight, front-loaded sentence with no filler. It is appropriately sized, though its brevity comes at the cost of the missing guidance noted elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A six-parameter tool with nested message objects, no output schema, and no annotations needs more than a single sentence. The description omits the fallback relationship between prompt and messages, the response shape, and the cost/auth context an agent needs before invoking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's only added value is example model IDs beyond the single default in the schema; it says nothing about how 'messages' interacts with 'prompt' or how 'reasoning' affects output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Execute chat inference on any model available on OpenRouter') and the model-ID examples make the scope concrete. It is clearly distinguishable from the sibling tools (list_models, get_credits, manage_keys) by resource, though it never names them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance: nothing tells the agent when to prefer 'messages' over 'prompt', when to use this versus other OpenRouter tools, or that it incurs cost/requires an API key. Usage must be entirely inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openrouter_get_creditsB

Retrieve account balance, credits usage, and API key limits from OpenRouter.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. 'Retrieve' implies a read-only operation, but there is no statement about authentication requirements, rate limits, or whether this returns live or cached balance data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence naming the verb and all three returned data categories, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description usefully enumerates what is returned (balance, usage, key limits), but it omits the shape of those values and any auth or scope caveats. Adequate for a trivial zero-arg read, but not fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to clarify or compensate for. Schema coverage is 100% regardless.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Retrieve') and enumerates the resources returned: account balance, credits usage, and API key limits. This distinguishes it from the other read-oriented sibling (openrouter_list_models) and from the mutating openrouter_manage_keys, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus openrouter_manage_keys (which likely also touches key data) or when credits info would be relevant. The agent must infer usage entirely from the name and resource list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openrouter_list_modelsC

List available AI models on OpenRouter with filters for name, slug, context window size, and pricing.

NameRequiredDescriptionDefault
limitNoMaximum number of models to return (default: 30, max: 100).
searchNoSearch keyword for model name or slug (e.g. 'claude', 'gemini', 'deepseek', 'free').

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not disclose pagination behavior, rate limits, authentication needs, or what the response looks like; 'available' is the only hint about scope. For a discovery tool with zero annotation coverage this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no padding — the verb and resource lead. The only flaw is the inaccurate filter tail, not the length or ordering.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should say something about returned fields, sorting, or pagination limits, and it does not. Worse, the claimed filters (context window, pricing) are absent from the schema, so the description is incomplete and partly inaccurate for a two-parameter discovery tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the real parameters (limit, search) are documented in the schema. However, the description advertises filters for 'name, slug, context window size, and pricing' that do not exist as parameters, actively misleading the agent about the tool's inputs rather than adding accurate value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (AI models on OpenRouter), which is clearly distinguishable from siblings like chat_completion and manage_keys. It is clear what the tool does, though the trailing filter list overstates the tool's actual capability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The list-models framing implies the discovery use case before calling chat_completion, but the description never states when to use this versus alternatives or any prerequisite context. Usage is left to inference rather than made explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openrouter_manage_keysB

Manage OpenRouter API keys (list, create, delete) via the Management API. Requires OPENROUTER_MANAGEMENT_KEY.

NameRequiredDescriptionDefault
hashNoKey hash to delete (required for action: 'delete').
nameNoName for the new key (required for action: 'create').
limitNoCredit limit in USD for the new key (optional for 'create').
actionYesAction to execute.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that OPENROUTER_MANAGEMENT_KEY is required, but says nothing about the destructive/irreversible nature of 'delete', whether 'create' returns a secret that is shown only once, or any rate limits. For a tool that can delete credentials, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, correctly front-loaded with the operation set before the auth precondition. Every clause earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a three-action management tool, but with no output schema the description should say something about what 'list' and 'create' return (e.g., key hashes vs. plaintext secrets). That omission is the main incompleteness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents hash, name, limit, and action with conditional requirements. The description adds no parameter-level detail beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with the three supported operations enumerated in parentheses ('list, create, delete'), so the agent knows exactly what the tool covers. It is easily distinguishable from the siblings (chat completion, credits, models), though it does not explicitly contrast itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites beyond the auth note, and no exclusions. The agent must infer from the schema enum which action to pick for a given intent; the description contributes no routing logic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedopenrouter_chat_completion
    • First observedopenrouter_get_credits
    • First observedopenrouter_list_models
    • First observedopenrouter_manage_keys

TDQS

B3.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a clearly distinct area: chat inference, account credits, model listing, and API key management. There is no meaningful overlap or ambiguity in intent.

Naming Consistency4/5

All tools share the openrouter_ prefix and snake_case format, which is highly consistent. The only minor deviation is openrouter_chat_completion, which is noun-based rather than verb_noun like the other three.

Tool Count5/5

Four well-scoped tools cleanly cover the OpenRouter integration surface without redundancy. Each tool earns its place for a focused MCP server.

Completeness4/5

Core workflows are covered: inference, model discovery, credits, and key lifecycle. Minor gaps exist around richer generation options (e.g. embeddings, streaming controls, per-model usage), but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers