PluginBench
MCP Server

io.github.stabgan/openrouter-multimodal MCP Server

io.github.stabgan/openrouter-multimodal

What is the io.github.stabgan/openrouter-multimodal MCP server?

Chat with 300+ LLMs via OpenRouter. Analyze and generate images, audio, and video from MCP.

How to install io.github.stabgan/openrouter-multimodal

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • OPENROUTER_API_KEY
    required
    secret

    OpenRouter API key. Get one free at https://openrouter.ai/keys

  • OPENROUTER_DEFAULT_MODEL

    Default model for chat + analyze tools. Defaults to nvidia/nemotron-nano-12b-v2-vl:free.

  • OPENROUTER_OUTPUT_DIR

    Sandbox root for save_path on generate_* tools. Defaults to the current working directory.

  • OPENROUTER_MAX_TOKENS

    Default max_tokens for chat_completion when unset in the request.

  • OPENROUTER_PROVIDER_SORT

    price / throughput / latency

  • OPENROUTER_PROVIDER_IGNORE

    CSV of provider slugs to exclude.

  • OPENROUTER_PROVIDER_ORDER

    JSON array or CSV of preferred provider IDs.

  • OPENROUTER_PROVIDER_QUANTIZATIONS

    CSV of quantization levels (fp16,int8).

  • OPENROUTER_PROVIDER_REQUIRE_PARAMETERS

    true/false. Require providers to support all request params.

  • OPENROUTER_PROVIDER_DATA_COLLECTION

    allow/deny

  • OPENROUTER_PROVIDER_ALLOW_FALLBACKS

    true/false

  • OPENROUTER_CACHE_RESPONSES

    Enable response caching server-wide. Sends X-OpenRouter-Cache: true on every chat/analyze call unless overridden per-request. Zero tokens billed on cache hits.

  • OPENROUTER_INCLUDE_REASONING

    Enable reasoning tokens passthrough server-wide. Adds _meta.reasoning to chat_completion responses for DeepSeek R1 / Gemini Thinking / Opus 4.7.

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "openrouter-multimodal": {
      "command": "npx",
      "args": [
        "-y",
        "@stabgan/openrouter-mcp-multimodal"
      ],
      "env": {
        "OPENROUTER_API_KEY": "<YOUR_OPENROUTER_API_KEY>",
        "OPENROUTER_DEFAULT_MODEL": "<YOUR_OPENROUTER_DEFAULT_MODEL>",
        "OPENROUTER_OUTPUT_DIR": "<YOUR_OPENROUTER_OUTPUT_DIR>",
        "OPENROUTER_MAX_TOKENS": "<YOUR_OPENROUTER_MAX_TOKENS>",
        "OPENROUTER_PROVIDER_SORT": "<YOUR_OPENROUTER_PROVIDER_SORT>",
        "OPENROUTER_PROVIDER_IGNORE": "<YOUR_OPENROUTER_PROVIDER_IGNORE>",
        "OPENROUTER_PROVIDER_ORDER": "<YOUR_OPENROUTER_PROVIDER_ORDER>",
        "OPENROUTER_PROVIDER_QUANTIZATIONS": "<YOUR_OPENROUTER_PROVIDER_QUANTIZATIONS>",
        "OPENROUTER_PROVIDER_REQUIRE_PARAMETERS": "<YOUR_OPENROUTER_PROVIDER_REQUIRE_PARAMETERS>",
        "OPENROUTER_PROVIDER_DATA_COLLECTION": "<YOUR_OPENROUTER_PROVIDER_DATA_COLLECTION>",
        "OPENROUTER_PROVIDER_ALLOW_FALLBACKS": "<YOUR_OPENROUTER_PROVIDER_ALLOW_FALLBACKS>",
        "OPENROUTER_CACHE_RESPONSES": "<YOUR_OPENROUTER_CACHE_RESPONSES>",
        "OPENROUTER_INCLUDE_REASONING": "<YOUR_OPENROUTER_INCLUDE_REASONING>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "openrouter-multimodal": {
      "command": "npx",
      "args": [
        "-y",
        "@stabgan/openrouter-mcp-multimodal"
      ],
      "env": {
        "OPENROUTER_API_KEY": "<YOUR_OPENROUTER_API_KEY>",
        "OPENROUTER_DEFAULT_MODEL": "<YOUR_OPENROUTER_DEFAULT_MODEL>",
        "OPENROUTER_OUTPUT_DIR": "<YOUR_OPENROUTER_OUTPUT_DIR>",
        "OPENROUTER_MAX_TOKENS": "<YOUR_OPENROUTER_MAX_TOKENS>",
        "OPENROUTER_PROVIDER_SORT": "<YOUR_OPENROUTER_PROVIDER_SORT>",
        "OPENROUTER_PROVIDER_IGNORE": "<YOUR_OPENROUTER_PROVIDER_IGNORE>",
        "OPENROUTER_PROVIDER_ORDER": "<YOUR_OPENROUTER_PROVIDER_ORDER>",
        "OPENROUTER_PROVIDER_QUANTIZATIONS": "<YOUR_OPENROUTER_PROVIDER_QUANTIZATIONS>",
        "OPENROUTER_PROVIDER_REQUIRE_PARAMETERS": "<YOUR_OPENROUTER_PROVIDER_REQUIRE_PARAMETERS>",
        "OPENROUTER_PROVIDER_DATA_COLLECTION": "<YOUR_OPENROUTER_PROVIDER_DATA_COLLECTION>",
        "OPENROUTER_PROVIDER_ALLOW_FALLBACKS": "<YOUR_OPENROUTER_PROVIDER_ALLOW_FALLBACKS>",
        "OPENROUTER_CACHE_RESPONSES": "<YOUR_OPENROUTER_CACHE_RESPONSES>",
        "OPENROUTER_INCLUDE_REASONING": "<YOUR_OPENROUTER_INCLUDE_REASONING>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "openrouter-multimodal": {
      "command": "npx",
      "args": [
        "-y",
        "@stabgan/openrouter-mcp-multimodal"
      ],
      "env": {
        "OPENROUTER_API_KEY": "<YOUR_OPENROUTER_API_KEY>",
        "OPENROUTER_DEFAULT_MODEL": "<YOUR_OPENROUTER_DEFAULT_MODEL>",
        "OPENROUTER_OUTPUT_DIR": "<YOUR_OPENROUTER_OUTPUT_DIR>",
        "OPENROUTER_MAX_TOKENS": "<YOUR_OPENROUTER_MAX_TOKENS>",
        "OPENROUTER_PROVIDER_SORT": "<YOUR_OPENROUTER_PROVIDER_SORT>",
        "OPENROUTER_PROVIDER_IGNORE": "<YOUR_OPENROUTER_PROVIDER_IGNORE>",
        "OPENROUTER_PROVIDER_ORDER": "<YOUR_OPENROUTER_PROVIDER_ORDER>",
        "OPENROUTER_PROVIDER_QUANTIZATIONS": "<YOUR_OPENROUTER_PROVIDER_QUANTIZATIONS>",
        "OPENROUTER_PROVIDER_REQUIRE_PARAMETERS": "<YOUR_OPENROUTER_PROVIDER_REQUIRE_PARAMETERS>",
        "OPENROUTER_PROVIDER_DATA_COLLECTION": "<YOUR_OPENROUTER_PROVIDER_DATA_COLLECTION>",
        "OPENROUTER_PROVIDER_ALLOW_FALLBACKS": "<YOUR_OPENROUTER_PROVIDER_ALLOW_FALLBACKS>",
        "OPENROUTER_CACHE_RESPONSES": "<YOUR_OPENROUTER_CACHE_RESPONSES>",
        "OPENROUTER_INCLUDE_REASONING": "<YOUR_OPENROUTER_INCLUDE_REASONING>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "openrouter-multimodal": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@stabgan/openrouter-mcp-multimodal"
      ],
      "env": {
        "OPENROUTER_API_KEY": "<YOUR_OPENROUTER_API_KEY>",
        "OPENROUTER_DEFAULT_MODEL": "<YOUR_OPENROUTER_DEFAULT_MODEL>",
        "OPENROUTER_OUTPUT_DIR": "<YOUR_OPENROUTER_OUTPUT_DIR>",
        "OPENROUTER_MAX_TOKENS": "<YOUR_OPENROUTER_MAX_TOKENS>",
        "OPENROUTER_PROVIDER_SORT": "<YOUR_OPENROUTER_PROVIDER_SORT>",
        "OPENROUTER_PROVIDER_IGNORE": "<YOUR_OPENROUTER_PROVIDER_IGNORE>",
        "OPENROUTER_PROVIDER_ORDER": "<YOUR_OPENROUTER_PROVIDER_ORDER>",
        "OPENROUTER_PROVIDER_QUANTIZATIONS": "<YOUR_OPENROUTER_PROVIDER_QUANTIZATIONS>",
        "OPENROUTER_PROVIDER_REQUIRE_PARAMETERS": "<YOUR_OPENROUTER_PROVIDER_REQUIRE_PARAMETERS>",
        "OPENROUTER_PROVIDER_DATA_COLLECTION": "<YOUR_OPENROUTER_PROVIDER_DATA_COLLECTION>",
        "OPENROUTER_PROVIDER_ALLOW_FALLBACKS": "<YOUR_OPENROUTER_PROVIDER_ALLOW_FALLBACKS>",
        "OPENROUTER_CACHE_RESPONSES": "<YOUR_OPENROUTER_CACHE_RESPONSES>",
        "OPENROUTER_INCLUDE_REASONING": "<YOUR_OPENROUTER_INCLUDE_REASONING>"
      }
    }
  }
}
Claude Code
claude mcp add openrouter-multimodal --env OPENROUTER_API_KEY=<YOUR_OPENROUTER_API_KEY> --env OPENROUTER_DEFAULT_MODEL=<YOUR_OPENROUTER_DEFAULT_MODEL> --env OPENROUTER_OUTPUT_DIR=<YOUR_OPENROUTER_OUTPUT_DIR> --env OPENROUTER_MAX_TOKENS=<YOUR_OPENROUTER_MAX_TOKENS> --env OPENROUTER_PROVIDER_SORT=<YOUR_OPENROUTER_PROVIDER_SORT> --env OPENROUTER_PROVIDER_IGNORE=<YOUR_OPENROUTER_PROVIDER_IGNORE> --env OPENROUTER_PROVIDER_ORDER=<YOUR_OPENROUTER_PROVIDER_ORDER> --env OPENROUTER_PROVIDER_QUANTIZATIONS=<YOUR_OPENROUTER_PROVIDER_QUANTIZATIONS> --env OPENROUTER_PROVIDER_REQUIRE_PARAMETERS=<YOUR_OPENROUTER_PROVIDER_REQUIRE_PARAMETERS> --env OPENROUTER_PROVIDER_DATA_COLLECTION=<YOUR_OPENROUTER_PROVIDER_DATA_COLLECTION> --env OPENROUTER_PROVIDER_ALLOW_FALLBACKS=<YOUR_OPENROUTER_PROVIDER_ALLOW_FALLBACKS> --env OPENROUTER_CACHE_RESPONSES=<YOUR_OPENROUTER_CACHE_RESPONSES> --env OPENROUTER_INCLUDE_REASONING=<YOUR_OPENROUTER_INCLUDE_REASONING> -- npx -y @stabgan/openrouter-mcp-multimodal

Related MCP servers

Structured thinking + steel-manning verification for AI agents. Backed by 43+ papers.

View repository →