OpenRouter MCP Multimodal Server

Build Status npm version Docker Pulls

An MCP (Model Context Protocol) server that provides chat and image analysis capabilities through OpenRouter.ai's diverse model ecosystem. This server combines text chat functionality with powerful image analysis capabilities.

Features

  • Text Chat:

    • Direct access to all OpenRouter.ai chat models
    • Support for simple text and multimodal conversations
    • Configurable temperature and other parameters
  • Image Analysis:

    • Analyze single images with custom questions
    • Process multiple images simultaneously
    • Automatic image resizing and optimization
    • Support for various image sources (local files, URLs, data URLs)
  • Model Selection:

    • Search and filter available models
    • Validate model IDs
    • Get detailed model information
    • Support for default model configuration
  • Performance Optimization:

    • Smart model information caching
    • Exponential backoff for retries
    • Automatic rate limit handling

Installation

Option 1: Install via npm

npm install -g @stabgan/openrouter-mcp-multimodal

Option 2: Run via Docker

docker run -i -e OPENROUTER_API_KEY=your-api-key-here stabgandocker/openrouter-mcp-multimodal:latest

Quick Start Configuration

Prerequisites

  1. Get your OpenRouter API key from OpenRouter Keys
  2. Choose a default model (optional)

MCP Configuration Options

Add one of the following configurations to your MCP settings file (e.g., cline_mcp_settings.json or claude_desktop_config.json):

Option 1: Using npx (Node.js)

{
  "mcpServers": {
    "openrouter": {
      "command": "npx",
      "args": [
        "-y",
        "@stabgan/openrouter-mcp-multimodal"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-api-key-here",
        "DEFAULT_MODEL": "qwen/qwen2.5-vl-32b-instruct:free"
      }
    }
  }
}

Option 2: Using uv (Python Package Manager)

{
  "mcpServers": {
    "openrouter": {
      "command": "uv",
      "args": [
        "run",
        "-m",
        "openrouter_mcp_multimodal"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-api-key-here",
        "DEFAULT_MODEL": "qwen/qwen2.5-vl-32b-instruct:free"
      }
    }
  }
}

Option 3: Using Docker

{
  "mcpServers": {
    "openrouter": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e", "OPENROUTER_API_KEY=your-api-key-here",
        "-e", "DEFAULT_MODEL=qwen/qwen2.5-vl-32b-instruct:free",
        "stabgandocker/openrouter-mcp-multimodal:latest"
      ]
    }
  }
}
{
  "mcpServers": {
    "openrouter": {
      "command": "smithery",
      "args": [
        "run",
        "stabgan/openrouter-mcp-multimodal"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-api-key-here",
        "DEFAULT_MODEL": "qwen/qwen2.5-vl-32b-instruct:free"
      }
    }
  }
}

Examples

For comprehensive examples of how to use this MCP server, check out the examples directory. We provide:

  • JavaScript examples for Node.js applications
  • Python examples with interactive chat capabilities
  • Code snippets for integrating with various applications

Each example comes with clear documentation and step-by-step instructions.

Dependencies

This project uses the following key dependencies:

  • @modelcontextprotocol/sdk: ^1.8.0 - Latest MCP SDK for tool implementation
  • openai: ^4.89.1 - OpenAI-compatible API client for OpenRouter
  • sharp: ^0.33.5 - Fast image processing library
  • axios: ^1.8.4 - HTTP client for API requests
  • node-fetch: ^3.3.2 - Modern fetch implementation

Node.js 18 or later is required. All dependencies are regularly updated to ensure compatibility and security.

Available Tools

mcp_openrouter_chat_completion

Send text or multimodal messages to OpenRouter models:

use_mcp_tool({
  server_name: "openrouter",
  tool_name: "mcp_openrouter_chat_completion",
  arguments: {
    model: "google/gemini-2.5-pro-exp-03-25:free", // Optional if default is set
    messages: [
      {
        role: "system",
        content: "You are a helpful assistant."
      },
      {
        role: "user",
        content: "What is the capital of France?"
      }
    ],
    temperature: 0.7 // Optional, defaults to 1.0
  }
});

For multimodal messages with images:

use_mcp_tool({
  server_name: "openrouter",
  tool_name: "mcp_openrouter_chat_completion",
  arguments: {
    model: "anthropic/claude-3.5-sonnet",
    messages: [
      {
        role: "user",
        content: [
          {
            type: "text",
            text: "What's in this image?"
          },
          {
            type: "image_url",
            image_url: {
              url: "https://example.com/image.jpg"
            }
          }
        ]
      }
    ]
  }
});
Description
MCP server for OpenRouter multimodal capabilities with Streamable HTTP transport
Readme 401 KiB
Languages
TypeScript 56%
JavaScript 29.8%
Python 7.8%
HTML 3.4%
Shell 1.7%
Other 1.3%