CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
stabgan avatar

Openrouter Multimodal

stabgan/openrouter-mcp-multimodal
45authSTDIOregistry active
Summary

A unified multimodal bridge to OpenRouter's 300+ model catalog. Exposes six tools: chat_completion for text generation with provider routing and response caching, analyze_image/audio/video for understanding media files or URLs, and generate_image/audio for creation workflows. The video analysis tool handles mp4, mov, and webm formats, while video generation taps models like Veo 3.1 and Sora 2 Pro. Image inputs get sharp optimization automatically. Audio generation wraps raw PCM in WAV containers. Works with Claude Desktop, Cursor, VS Code, Windsurf, Cline, and Kiro. You'd reach for this when you need vision, speech, or video capabilities without juggling multiple API clients or when OpenRouter's per-request model switching matters more than provider lock-in.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

OpenRouter MCP Multimodal — MCP server for chat, vision, audio, and video AI tools

OpenRouter MCP Multimodal

The MCP server for multimodal AI agents.
One install · 19 tools · 300+ OpenRouter models · text, vision, audio & video — analysis and generation.

npm version PyPI version GitHub release Docker version CI status Apache 2.0 license Node.js 20+

npm downloads Docker pulls MCP Registry Smithery MCP registry

Quick start · Tools · Examples · Security · Development · Releasing · FAQ


What is this?

OpenRouter MCP Multimodal is a production-grade Model Context Protocol (MCP) server — listed on the official MCP Registry as io.github.stabgan/openrouter-multimodal. It connects AI coding agents (Cursor, Claude Desktop, VS Code, Windsurf, Cline, and others) to OpenRouter's unified LLM API over stdio.

Unlike text-only MCP servers, one install covers the full multimodal surface:

CapabilityToolsHighlights
Chatchat_completion, start_chat_completion, get_chat_completion_status300+ models, :nitro / :floor / :free / :online / :exacto suffixes, provider routing, web search, response caching, reasoning tokens, async jobs for long-running models
Visionanalyze_image, generate_image, generate_image_dedicatedOCR, captioning, VQA, image generation with reference inputs, dedicated Image API with resolution/quality/format control
Audioanalyze_audio, generate_audio, text_to_speech, speech_to_textTranscription, speech/music generation, dedicated TTS (OpenAI/Gemini/Voxtral voices), dedicated STT (Whisper/GPT-4o Transcribe)
Videoanalyze_video, generate_video, generate_video_from_image, get_video_statusClip understanding, Veo 3.1 / Seedance 2.0 / Wan 2.7 generation with progress notifications
Catalogsearch_models, get_model_info, validate_model, rerank_documents, health_checkModel discovery, validation, reranking, ops health

Production hardening: input/output path sandboxes (including analyze_* local files as of v4.5.2), SSRF guards, structured errors with _meta.code, MCP 2025-06-18 structured outputs, tool icons (2025-11-25), async video progress notifications, and 770+ automated tests (unit, mock, regression, and live integration).

Quick start

1. Get an API key (free tier works) → openrouter.ai/keys

2. Run the server

export OPENROUTER_API_KEY=sk-or-v1-...
npx -y @stabgan/openrouter-mcp-multimodal

3. Add to your MCP client (Cursor, Claude Desktop, VS Code, etc.) — see Install below.

No credits required to start. Free models such as google/gemma-4-26b-a4b-it:free work for chat and vision. Video/audio generation typically needs credits.

Install

MCP servers are distributed through several packaging models. This server is implemented in Node.js/TypeScript; the table below maps each ecosystem method to how you run it here.

MethodRuntimeBest forThis server
npxNode.js 20+Most MCP clients (default)✅ @stabgan/openrouter-mcp-multimodal
uvx / pipxPython 3.10+ and Node.js 20+Python-first workflows, same pattern as PyPI MCP servers✅ mcp-server-openrouter-multimodal
npm globalNode.js 20+Pin a version without re-downloading✅
node (local)Node.js 20+Contributors / air-gapped builds✅
Docker HubDockerIsolation, no Node on host✅ stabgan/openrouter-mcp-multimodal
GHCRDockerGitHub-native OCI pulls✅ ghcr.io/stabgan/openrouter-mcp-multimodal
Smithery CLINode.js (via installer)Interactive install into Claude/Cursor/etc.✅
MCP Registrynpm or OCIOfficial discovery (io.github.stabgan/openrouter-multimodal)✅ listing
One-click deeplinksNode.jsCursor, VS Code, Kiro✅
Claude Code CLINode.jsTerminal-first Claude Code users✅
MCP InspectorNode.jsDebug / list tools locally✅
Windows cmd /c npxNode.jsClaude Desktop / Cursor when npx not on GUI PATH✅ see below
pip / uv (direct)—Native Python MCP servers only— use uvx row above
DXT desktop extensions—Bundled Claude Desktop .dxtnot yet
Remote HTTP / SSE—Hosted Smithery / Cloudflare endpointsvia Smithery

uvx vs npx: In the MCP ecosystem, npx runs npm (Node) packages and uvx runs PyPI (Python) packages. Because this server is Node-based, uvx uses a thin Python launcher that execs npx -y @stabgan/openrouter-mcp-multimodal — you still need Node installed.

One-click

CursorAdd OpenRouter MCP to Cursor
VS CodeAdd to VS Code
KiroAdd to Kiro
Claude Desktop / Windsurf / ClineManual JSON config (pick any method below)
Smitherynpx -y @smithery/cli install @stabgan/openrouter-mcp-multimodal --client claude
MCP RegistryOfficial registry page — npm + OCI packages

Paste your OPENROUTER_API_KEY when prompted — deeplinks use placeholders so secrets never appear in URLs.

Manual config

npx (recommended)
export OPENROUTER_API_KEY=sk-or-v1-...
npx -y @stabgan/openrouter-mcp-multimodal
{
  "mcpServers": {
    "openrouter": {
      "command": "npx",
      "args": ["-y", "@stabgan/openrouter-mcp-multimodal"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-..."
      }
    }
  }
}

Pin a release: "args": ["-y", "@stabgan/openrouter-mcp-multimodal@4.6.2"]

uvx / pipx (Python launcher)

Install uv (includes uvx), ensure Node.js 20+ is also on your PATH, then:

export OPENROUTER_API_KEY=sk-or-v1-...
uvx mcp-server-openrouter-multimodal
# pin npm version: OPENROUTER_MCP_NPM_VERSION=4.6.2 uvx mcp-server-openrouter-multimodal
{
  "mcpServers": {
    "openrouter": {
      "command": "uvx",
      "args": ["mcp-server-openrouter-multimodal"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-..."
      }
    }
  }
}

pipx equivalent: pipx run mcp-server-openrouter-multimodal

Optional: OPENROUTER_MCP_NPM_VERSION=4.6.2 pins the underlying npm package.

npm global
npm install -g @stabgan/openrouter-mcp-multimodal
{
  "mcpServers": {
    "openrouter": {
      "command": "openrouter-multimodal",
      "env": { "OPENROUTER_API_KEY": "sk-or-v1-..." }
    }
  }
}
node (local clone)
git clone https://github.com/stabgan/openrouter-mcp-multimodal.git
cd openrouter-mcp-multimodal
npm ci && npm run build
{
  "mcpServers": {
    "openrouter": {
      "command": "node",
      "args": ["/absolute/path/to/openrouter-mcp-multimodal/dist/index.js"],
      "env": { "OPENROUTER_API_KEY": "sk-or-v1-..." }
    }
  }
}
Docker
docker run --rm -i -e OPENROUTER_API_KEY=sk-or-v1-... stabgan/openrouter-mcp-multimodal:latest
{
  "mcpServers": {
    "openrouter": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "OPENROUTER_API_KEY=sk-or-v1-...",
        "stabgan/openrouter-mcp-multimodal:latest"
      ]
    }
  }
}

Use -i (interactive stdio). Avoid -t (TTY corrupts MCP framing on some hosts).

GHCR (GitHub Container Registry)
docker run --rm -i -e OPENROUTER_API_KEY=sk-or-v1-... \
  ghcr.io/stabgan/openrouter-mcp-multimodal:4.6.2
{
  "mcpServers": {
    "openrouter": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "OPENROUTER_API_KEY=sk-or-v1-...",
        "ghcr.io/stabgan/openrouter-mcp-multimodal:latest"
      ]
    }
  }
}
Smithery

Interactive install (writes config for your client):

npx -y @smithery/cli install @stabgan/openrouter-mcp-multimodal --client claude
# or: --client cursor | vscode | windsurf | ...

Listing: smithery.ai/server/@stabgan/openrouter-mcp-multimodal

MCP Registry

Official name: io.github.stabgan/openrouter-multimodal

  • Registry: registry.modelcontextprotocol.io
  • npm package: @stabgan/openrouter-mcp-multimodal
  • OCI image: docker.io/stabgan/openrouter-mcp-multimodal

Clients that support registry-driven install will offer npm or Docker; otherwise use the JSON blocks above.

Claude Code CLI
claude mcp add openrouter -- npx -y @stabgan/openrouter-mcp-multimodal
# project scope:
claude mcp add --scope project openrouter -- npx -y @stabgan/openrouter-mcp-multimodal

Set OPENROUTER_API_KEY in your shell or client env before starting Claude Code.

MCP Inspector

Debug tools/list and tool calls against a live OpenRouter key:

export OPENROUTER_API_KEY=sk-or-v1-...
npx -y @modelcontextprotocol/inspector npx -y @stabgan/openrouter-mcp-multimodal
Windows npx

When Claude Desktop or Cursor cannot find npx (GUI apps often miss shell PATH), wrap with cmd:

{
  "mcpServers": {
    "openrouter": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@stabgan/openrouter-mcp-multimodal"],
      "env": { "OPENROUTER_API_KEY": "sk-or-v1-..." }
    }
  }
}

If still failing, use the full path from where npx as the command.

Why this server?

CapabilityThis serverTypical MCP LLM servers
Text chat (300+ models)✅✅
Image analysis + generation✅partial
Audio analysis + TTS✅❌
Video analysis + generation✅❌
Model search / validate / rerank✅❌
Path sandbox + SSRF protection✅rare
MCP 2025 structured outputs✅rare
Async video + progress notifications✅❌

Tools

19 MCP tools. Each description includes Use when, Good/Bad examples, Fails when, and Works with so agents pick the right tool and recover from errors.

ToolPurpose
chat_completionText chat, web search, provider routing, caching, reasoning
start_chat_completionAsync background job for long-running reasoning models
get_chat_completion_statusPoll / retrieve async completion results
analyze_imageVision — local path, URL, or data URL + question
analyze_audioTranscribe / analyze audio files
analyze_videoDescribe / Q&A over video files
generate_imageText-to-image via chat completions with reference images
generate_image_dedicatedText-to-image via dedicated /api/v1/images (resolution, quality, format)
generate_audioText-to-speech / music via chat completions
text_to_speechDedicated TTS (/api/v1/audio/speech) — voices, speed, format
speech_to_textDedicated STT (/api/v1/audio/transcriptions) — Whisper, GPT-4o
generate_videoText-to-video (async, resumable)
generate_video_from_imageImage-to-video (narrower schema)
get_video_statusPoll / resume video jobs
search_modelsPaginated model catalog search
get_model_infoPricing, context, modalities
validate_modelCheap model ID existence check
rerank_documentsRelevance ranking for RAG
health_checkAPI key + reachability probe

Errors use a closed _meta.code taxonomy: INVALID_INPUT · UNSAFE_PATH · UPSTREAM_* · MODEL_NOT_FOUND · JOB_STILL_RUNNING · and more.

Examples

Chat (free model)

{
  "tool": "chat_completion",
  "arguments": {
    "model": "google/gemma-4-26b-a4b-it:free",
    "messages": [{ "role": "user", "content": "Summarize MCP in one sentence." }]
  }
}

Analyze an image

{
  "tool": "analyze_image",
  "arguments": {
    "image_path": "diagram.png",
    "question": "List every label in this diagram."
  }
}

Use image_path and question — not image / prompt.

Search models (vision + free)

{
  "tool": "search_models",
  "arguments": {
    "query": "gemma",
    "capabilities": { "vision": true },
    "limit": 10,
    "offset": 0
  }
}

Generate video (async)

{
  "tool": "generate_video",
  "arguments": {
    "model": "google/veo-3.1",
    "prompt": "Ocean waves at sunrise, cinematic drone shot",
    "duration": 4,
    "save_path": "river.mp4"
  }
}

If the job is still running when max_wait_ms elapses, the response succeeds with _meta.code: JOB_STILL_RUNNING and a video_id — call get_video_status to resume. This is not an error.

More examples: docs/plans/tool-description-improvement.md

Security

  • Input path sandbox — analyze_* and reference images must stay inside OPENROUTER_INPUT_DIR
  • Output path sandbox — save_path must stay inside OPENROUTER_OUTPUT_DIR
  • SSRF protection — private/reserved IPs blocked on URL fetches
  • Untrusted content — analyze outputs tagged _meta.content_is_untrusted: true

Override sandboxes only with OPENROUTER_ALLOW_UNSAFE_PATHS=1 (discouraged).

Configuration

Environment variables
VariableRequiredDefaultDescription
OPENROUTER_API_KEYYes—OpenRouter API key
OPENROUTER_DEFAULT_MODELNonvidia/nemotron-nano-12b-v2-vl:freeDefault when tools omit model
OPENROUTER_INTEGRATION_MODELNogoogle/gemma-4-26b-a4b-it:freeModel used by live integration tests
OPENROUTER_OUTPUT_DIRNocwdSandbox root for save_path
OPENROUTER_INPUT_DIRNo—Sandbox root for local input files
OPENROUTER_LOG_LEVELNoinfoerror / warn / info / debug

See .env.example for the full list (provider routing, image/audio/video limits, caching, video polling).

Development

git clone https://github.com/stabgan/openrouter-mcp-multimodal.git
cd openrouter-mcp-multimodal
npm install
cp .env.example .env   # add OPENROUTER_API_KEY
npm run build

Testing

CommandWhat it runs
npm test773 unit + mock tests (no API key, <20s)
npm run test:regressionSecurity + schema regression guards
npm run test:integration16 live OpenRouter scenarios (requires .env key)
npm run test:e2eFull MCP stdio smoke (scripts/live-e2e.mjs)
npm run cilint + format + build + all of the above except e2e

Free models for CI / zero-credit accounts: integration tests default to google/gemma-4-26b-a4b-it:free (override with OPENROUTER_INTEGRATION_MODEL). GitHub Actions requires the OPENROUTER_API_KEY repository secret.

Mock tests live under src/__tests__/mock/ and cover handlers, path sandboxes, SSRF blocks, model-cache pagination, tool descriptions, and structured outputs — 330+ additional cases beyond the core suite.

npm run lint
npm run format:check
npm run version:check   # package.json vs src/version.ts, server.json, pyproject.toml

Releasing

Published artifacts (npm, PyPI/uvx, Docker, GHCR) all ship from the same semver on a git tag (vX.Y.Z). Pushing to main runs tests but does not publish to npm or PyPI.

Normal flow: merge conventional commits to main → Release Please opens a Release PR → merge it → tag is created → CI publishes everywhere.

Manual flow: bump all version files → npm run version:check → npm run ci + smoke tests → commit → git tag vX.Y.Z → git push origin vX.Y.Z.

Full checklist, file list, CI secrets, and agent instructions:

  • docs/RELEASING.md — maintainer release guide
  • AGENTS.md — quick reference for AI agents

FAQ

Do I need paid OpenRouter credits?

No, to get started. Free models work for chat and vision. Audio/video generation usually requires credits; analysis may return 402 on some models — the server surfaces that as a structured error.

Which MCP clients are supported?

Any MCP-compatible client over stdio: Cursor, Claude Desktop, VS Code Copilot, Windsurf, Cline, Kiro, and custom agents.

How is this different from calling OpenRouter directly?

This server adds MCP tool schemas, security sandboxes, error taxonomy, model caching, async video polling with progress notifications, and agent-oriented tool descriptions — so LLMs invoke the right capability without custom HTTP glue.

Where is the security advisory for path traversal?

Fixed in 4.5.2+ — see GHSA-3q7p-736f-x44v and docs/solutions/security-issues/.

Compatibility

Works with any MCP client. Protocol: MCP 2025-06-18. Node ≥ 20 (Docker image uses Node 22).

License

Apache 2.0 — see LICENSE.

Contributing

Issues and PRs welcome. For large changes, open an issue first.

Before submitting: run npm run ci. Use Conventional Commits (fix:, feat:, etc.) so Release Please can cut the next release. See docs/RELEASING.md if you need to ship a version.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

Configuration

OPENROUTER_API_KEY*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.

Categories
Communication & MessagingMedia & Entertainment
Registryactive
Package@stabgan/openrouter-mcp-multimodal
TransportSTDIO
AuthRequired
UpdatedMay 4, 2026
View on GitHub

More from stabgan

  • Steelmind1

Related Communication & Messaging MCP Servers

View all →
btouchard avatar
Herald

btouchard/herald

Stop copy-pasting between Claude Chat and Claude Code.
43
nikolausm avatar
Imap Mcp Server

nikolausm/imap-mcp-server

IMAP/SMTP MCP server to search, read, organize, send, reply & forward email for AI assistants
39
s2thend avatar
Cursor History

io.github.s2thend/cursor-history

MCP server for browsing, searching, exporting, and backing up your Cursor AI chat history
32
aahl avatar
Notify MCP Server

aahl/mcp-notify

MCP Server for notify to Weixin, Telegram, Bark, Lark, Feishu, DingTalk
30
Vibe Prospecting logoVibe Prospecting logo
Vibe Prospecting

explorium-ai/vibeprospecting-mcp

Power your chat with B2B data to create lead lists, research companies, personalize your outreach, and more.
30
upinar avatar
ContrastAPI

com.contrastcyber/api

53 tools, 7 Resources, Sigma rules, email SPF/DMARC, MITRE, CVE/KEV, risk_score. No key.
28