Token导航 LogoToken导航TokenDH.com
Openrouter MCP Multimodal logo
运维云端stdio官方级别未说明来源级核验

Openrouter MCP Multimodal

MCP Server

@stabgan/openrouter-mcp-multimodal

一个集文本、图像、音频和视频分析与生成功能于一体的多模态服务器,支持连接300多种大型语言模型。

工具数

14

提示词数

0

GitHub Stars

39

资源数

0
大型语言模型TypeScriptVS CodeClaude DesktopClaudeCursorWindsurfClineVS CodeVS Code Insiders

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

stabgan

提供方

stabgan

最后核验

2026/5/17 20:22

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx -y @stabgan/openrouter-mcp-multimodal # that's it — needs OPENROUTER_API_KEY env var

详细介绍

OpenRouter MCP Multimodal Server

The only MCP server that does text + image + audio + video analysis AND generation in one package. Connect Claude Desktop, Cursor, Kiro, VS Code, Windsurf, or Cline to 300+ LLMs via OpenRouter.

Install · Tools · Examples · Config · Changelog

______________________________________________________________________

![Verified on MseeP](https://mseep.ai/app/8f27d6d4-0877-4b86-b377-8a33f451e755)

安装

npx -y @stabgan/openrouter-mcp-multimodal  # that's it — needs OPENROUTER_API_KEY env var

获取免费的API密钥→ openrouter.ai/keys

一键安装

Kiro Cursor VS Code VS Code Insiders Claude DesktopManual config — Add to claude_desktop_config.json WindsurfManual config — Add to ~/.codeium/windsurf/mcp_config.json ClineManual config — Add via Cline MCP settings Smitherynpx -y @smithery/cli install @stabgan/openrouter-mcp-multimodal --client claude

点击后,目标客户端会打开一个确认提示。粘贴您的 OPENROUTER_API_KEY --deeplink提供了一个占位符,因此共享链接中不会出现任何秘密。

手动设定

npx (recommended)

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

Docker

{
  "mcpServers": {
    "openrouter": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "OPENROUTER_API_KEY=sk-or-v1-...",
        "stabgan/openrouter-mcp-multimodal:latest"
      ]
    }
  }
}

Global install

npm install -g @stabgan/openrouter-mcp-multimodal
{
  "mcpServers": {
    "openrouter": {
      "command": "openrouter-multimodal",
      "env": { "OPENROUTER_API_KEY": "sk-or-v1-..." }
    }
  }
}

为什么是这个?

能力此服务器其他
与300多名模特进行文字聊天
图像分析(视觉)✅ 夏普优化一些
音频分析+生成
视频理解 (mp4/mov/webm)
视频生成 (见3.1,Sora 2 Pro)
响应缓存(命中时为零令牌)
网络搜索、重新排序、健康检查
MCP 2025-06-18规范(结构化输出、进度)

工具

工具它做什么
chat_completion向任何模型发送消息。支持提供者路由、模型后缀(:nitro, :floor, :exacto)、响应缓存、推理直通和网络搜索。
analyze_image分析本地文件、URL或数据URI中的图像。使用sharp自动优化。
analyze_audio从文件、URL或数据URI转录/分析音频(WAV、MP3、FLAC、OGG)
analyze_video从文件、URL或数据URI分析视频(mp4、mpeg、mov、webm)
generate_image生成具有宽高比控制和可选路径沙盒磁盘保存的图像。
generate_audio生成语音或音乐。自动检测格式,将原始PCM封装在WAV中。
generate_video通过异步API(Veo 3.1/Sora 2 Pro/Seedance/Wan)生成带有MCP进度通知的视频。
generate_video_from_image图像到视频。架构比 generate_video 以获得更高的刀具调用精度。
get_video_status继续按ID轮询视频生成作业
rerank_documents根据查询重新排列文档(Cohere、Fireworks)。
search_models按名称、提供商或形态搜索/过滤模型。分页。
get_model_info获取任何型号的定价、上下文长度和功能。
validate_model检查OpenRouter上是否存在型号ID。
health_check验证API密钥、OpenRouter可达性、服务器+协议版本。
所有错误都带有 _meta.code 从封闭的分类学来看: INVALID_INPUT · UNSAFE_PATH · UPSTREAM_HTTP · UPSTREAM_TIMEOUT · UPSTREAM_REFUSED · UNSUPPORTED_FORMAT · RESOURCE_TOO_LARGE · ZDR_INCOMPATIBLE · MODEL_NOT_FOUND · JOB_FAILED · JOB_STILL_RUNNING · INTERNAL

用法示例

与提供商路由聊天:

{
  "tool": "chat_completion",
  "arguments": {
    "model": "anthropic/claude-sonnet-4",
    "messages": [{ "role": "user", "content": "Summarize this document" }],
    "provider": { "sort": "price", "ignore": ["openai"], "data_collection": "deny" }
  }
}

从Claude Desktop生成视频:

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

分析图像:

{
  "tool": "analyze_image",
  "arguments": {
    "image": "/path/to/photo.jpg",
    "prompt": "Describe what you see in detail"
  }
}

使用缓存+推理进行聊天(v4.5):

{
  "tool": "chat_completion",
  "arguments": {
    "model": "deepseek/deepseek-r1",
    "messages": [{ "role": "user", "content": "Prove sqrt(2) is irrational" }],
    "cache": true,
    "include_reasoning": true
  }
}

网络搜索:

{
  "tool": "chat_completion",
  "arguments": {
    "model": "openai/gpt-4o",
    "messages": [{ "role": "user", "content": "What shipped in OpenRouter last week?" }],
    "online": true
  }
}

重新排列文档:

{
  "tool": "rerank_documents",
  "arguments": {
    "query": "best practices for MCP server auth",
    "documents": ["doc A text...", "doc B text...", "doc C text..."],
    "top_n": 3
  }
}

配置

Environment variables (click to expand)

变量必填默认描述
OPENROUTER_API_KEY-您的OpenRouter API密钥
OPENROUTER_DEFAULT_MODEL没有nvidia/nemotron-nano-12b-v2-vl:free聊天+分析工具的默认模型
DEFAULT_MODEL--以上别名
OPENROUTER_MAX_TOKENS--默认值 max_tokens 当不是按请求设置时
OPENROUTER_PROVIDER_QUANTIZATIONS--CSV。按量化进行滤波(例如。 fp16,int8)
OPENROUTER_PROVIDER_IGNORE--CSV。排除供应商蛞蝓
OPENROUTER_PROVIDER_SORT没有--price / throughput / latency
OPENROUTER_PROVIDER_ORDER没有提供程序ID的JSON数组或CSV
OPENROUTER_PROVIDER_REQUIRE_PARAMETERS没有--true / false
OPENROUTER_PROVIDER_DATA_COLLECTION没有--allow / deny
OPENROUTER_PROVIDER_ALLOW_FALLBACKS没有--true / false
OPENROUTER_CACHE_RESPONSES没有--1 / true。在服务器范围内启用响应缓存
OPENROUTER_INCLUDE_REASONING没有--1 / true。在服务器范围内启用推理传递
OPENROUTER_MODEL_CACHE_TTL_MS没有3600000模型缓存TTL(ms)
OPENROUTER_IMAGE_MAX_DIMENSION没有800调整大小的最长边(px)
OPENROUTER_IMAGE_JPEG_QUALITY没有80JPEG质量(1–100)
OPENROUTER_IMAGE_FETCH_TIMEOUT_MS没有30000图像URL超时
OPENROUTER_IMAGE_MAX_DOWNLOAD_BYTES没有26214400图像URL大小上限(~25 MB)
OPENROUTER_IMAGE_MAX_REDIRECTS没有8图像URL重定向上限
OPENROUTER_IMAGE_MAX_DATA_URL_BYTES没有20971520图像数据URL大小上限(约20 MB)
OPENROUTER_AUDIO_FETCH_TIMEOUT_MS没有30000音频URL超时
OPENROUTER_AUDIO_MAX_DOWNLOAD_BYTES没有26214400音频URL大小上限(~25 MB)
OPENROUTER_AUDIO_MAX_REDIRECTS没有8音频URL重定向上限
OPENROUTER_AUDIO_MAX_DATA_URL_BYTES没有20971520音频数据URL大小上限
OPENROUTER_DEFAULT_VIDEO_MODEL没有google/gemini-2.5-flash默认值为 analyze_video
OPENROUTER_DEFAULT_VIDEO_GEN_MODEL没有google/veo-3.1默认值为 generate_video
OPENROUTER_VIDEO_FETCH_TIMEOUT_MS没有60000视频URL超时
OPENROUTER_VIDEO_MAX_DOWNLOAD_BYTES没有104857600视频URL大小上限(~100 MB)
OPENROUTER_VIDEO_MAX_REDIRECTS没有8视频URL重定向上限
OPENROUTER_VIDEO_MAX_DATA_URL_BYTES没有104857600视频数据URL大小上限
OPENROUTER_VIDEO_POLL_INTERVAL_MS没有15000异步视频轮询节奏
OPENROUTER_VIDEO_MAX_WAIT_MS没有600000返回可恢复句柄前的最大等待时间
OPENROUTER_VIDEO_GEN_MAX_BYTES没有268435456生成的视频下载上限(~256 MB)
OPENROUTER_VIDEO_INLINE_MAX_BYTES没有10485760内联视频上限(~10 MB)
OPENROUTER_OUTPUT_DIR没有process.cwd()沙盒根 save_path
OPENROUTER_ALLOW_UNSAFE_PATHS没有--1 禁用沙盒
OPENROUTER_LOG_LEVEL没有infoerror / warn / info / debug

安全

  • SSRF保护 --URL获取块私有/链接本地/保留的IPv4和IPv6目标(环回、映射、兼容、多播、6to4、Teredo、ORCHID)。
  • 路径沙盒save_path 已解决 OPENROUTER_OUTPUT_DIR;遍历尝试被拒绝。以(权力)否决 OPENROUTER_ALLOW_UNSAFE_PATHS=1.
  • 无凭证泄漏 -API密钥从不在日志、响应或错误中回显。审计日志记录了每次付费操作调用。

Architecture

src/
├── index.ts                    # Entry, env validation, graceful shutdown
├── tool-handlers.ts            # 14 tools (annotated) + dispatch
├── model-cache.ts              # TTL + in-flight coalescing
├── openrouter-api.ts           # REST client (chat + /videos)
├── errors.ts                   # Closed ErrorCode enum
├── logger.ts                   # JSON-line structured logger
└── tool-handlers/
    ├── fetch-utils.ts          # SSRF, bounded fetch, data-URL parser
    ├── openrouter-errors.ts    # SDK/HTTP → ErrorCode classifier
    ├── completion-utils.ts     # Reasoning-model cutoff detection
    ├── path-safety.ts          # save_path sandbox
    ├── chat-completion.ts      # Text + multimodal chat
    ├── analyze-image.ts        # Vision analysis
    ├── analyze-audio.ts        # Audio transcription
    ├── analyze-video.ts        # Video understanding
    ├── generate-image.ts       # Image generation
    ├── generate-audio.ts       # Audio generation + streaming
    ├── generate-video.ts       # Video generation (async)
    ├── image-utils.ts          # Sharp optimization, MIME sniffing
    ├── audio-utils.ts          # Audio format detection
    ├── video-utils.ts          # Video format detection
    ├── search-models.ts        # Model search
    ├── get-model-info.ts       # Model detail lookup
    └── validate-model.ts       # Model existence check

Design Principles & Research

v4.5的设计借鉴了MCP的最佳实践和学术研究:

  • 结果,而非行动 --工具封装了整个工作流(fetch→ 验证→ 调用→ 保存),而不是公开原始API基元。跟随 Phil Schmid的MCP制作指南.
  • 平淡无奇的论点 --带有枚举的顶级图元可以降低工具调用失败率。由...支持 傅等(2025) 显示成功随着模式复杂性的增加而下降。
  • 故障模式文档 --每个工具描述都包括“失败时间:”和“使用:”部分,提高了选择精度 斯拉普巴赫 (2026).
  • 不受信任的内容标记 --分析工具标记输出 _meta.content_is_untrusted: true 减轻间接快速注射(赵等人,《护爪》).
  • 带有重试提示的结构化错误 --关闭 _meta.code 分类学+ retry_after_seconds 击败原始错误字符串。每 Apigene的12条规则.
  • MCP 2025-06-18合规性 --结构化产出(outputSchema)、进度通知、工具注释(readOnlyHint, destructiveHint, idempotentHint, openWorldHint).

OpenRouter平台功能浮出水面: 响应缓存 · 网络搜索 · 推理令牌 · 汽车精确 · 重新排序 · 快速缓存

从v2升级

v3+是 添加剂 --没有删除任何工具模式或环境变量。

  • 新工具: analyze_video, generate_video, generate_video_from_image, get_video_status, rerank_documents, health_check
  • 结构化的 _meta.code 在每个错误响应上
  • save_path 默认情况下沙盒--set OPENROUTER_OUTPUT_DIROPENROUTER_ALLOW_UNSAFE_PATHS=1

发展

git clone https://github.com/stabgan/openrouter-mcp-multimodal.git
cd openrouter-mcp-multimodal
npm install && cp .env.example .env  # Add your API key
npm run build && npm start
npm test                    # 288 unit tests, <1s
npm run test:integration    # Live API tests (16 scenarios)
npm run lint
node scripts/live-e2e.mjs  # 16 live E2E scenarios

兼容性

许可证

Apache 2.0——请参阅 许可证.

贡献

欢迎发布问题和PR。请先打开一个问题以了解重大更改。

目录标签

目录标签

大型语言模型TypeScriptVS Code多模态分析本地部署多模态生成服务器

支持客户端

Claude DesktopClaudeCursorWindsurfClineVS CodeVS Code Insiders

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@stabgan/openrouter-mcp-multimodal

工具数量(toolCount,工具数)

14

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP