stabgan/openrouter-mcp-multimodal

stabgan/openrouter-mcp-multimodal

от stabgan
Мультимодальный MCP-сервер для анализа и генерации текста, изображений, аудио и видео. Интегрируется с Claude Desktop, Cursor и другими клиентами через OpenRouter, давая доступ к 300+ моделям. Вклю...

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 · 14 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 · 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:

Capability Tools Highlights
Chat chat_completion 300+ models, :nitro / :exacto suffixes, provider routing, web search, response caching, reasoning tokens
Vision analyze_image, generate_image OCR, captioning, VQA, image generation with reference inputs
Audio analyze_audio, generate_audio Transcription, speech/music generation
Video analyze_video, generate_video, generate_video_from_image, get_video_status Clip understanding, Veo / Sora / Seedance / Wan generation with progress notifications
Catalog search_models, get_model_info, validate_model, rerank_documents, health_check Model discovery, validation, reranking, ops health
Инструменты были проиндексированы:
analyze_audioтолько чтениевнешний мир

Транскрибирует или анализирует один аудиофайл (WAV, MP3, FLAC, OGG и т. д.) с помощью мультимодальной модели. Результат помечается тегом _meta.content_is_untrusted: true. Используйте, когда: - У вас есть локальный аудиофайл или URL, и нужна транскрипция или анализ аудио - Формат - распространённый аудиоконтейнер, который распознаёт декодер НЕ используйте, когда: - Нужен синтез речи (text-to-speech) → используйте text_to_speech (отдельный инструмент, быстрее) или generate_audio (чат-маршрут, музыка/звуковые эффекты) - Нужна только транскрипция без вопросов и ответов → используйте speech_to_text - На входе видео → используйте analyze_video (или сначала извлеките аудио) Удачные примеры: - { "audio_path": "meeting.wav", "question": "Транскрибируй дословно." } - { "audio_path": "https://example.com/podcast.mp3", "question": "Кратко опиши темы." } Неудачные примеры: - { "audio_path": "/etc/shadow" } → UNSAFE_PATH - { "path": "song.mp3" } → неверный ключ; используйте audio_path - Бинарный файл не аудиоформата, переименованный в .mp3 → UNSUPPORTED_FORMAT Завершается ошибкой, когда: - INVALID_INPUT: отсутствует audio_path - UNSAFE_PATH: локальный путь вышел за пределы песочницы - UNSUPPORTED_FORMAT: файл не распознан как аудио - RESOURCE_TOO_LARGE: превышен допустимый размер Работает с: generate_audio, search_models.

Параметры
  • audio_pathstringобязательный

    Local file path (sandboxed), http(s) URL, or data URL (base64-encoded audio).

  • cacheboolean

    Enable OpenRouter response caching via X-OpenRouter-Cache: true. Server default: OPENROUTER_CACHE_RESPONSES=1.

  • cache_clearboolean

    Bust the cache entry for this exact request.

  • cache_inputboolean
  • cache_ttlstring

    Cache TTL as integer seconds (1–86400) or a duration string such as "30s", "5m", or "1h". Sent upstream as seconds.

  • modelstring

    Multimodal model ID (default: google/gemini-2.5-flash).

  • questionstring

    Question or instruction. Default: "Please transcribe and analyze this audio file."

analyze_imageтолько чтениевнешний мир

Анализирует одно изображение с помощью vision-модели. Принимает локальный путь в песочнице ввода, https URL или base64 data URL. Результат создаётся моделью и помечается тегом _meta.content_is_untrusted: true. Используйте, когда: - У вас есть одно изображение, и нужны OCR, генерация подписей или визуальные вопросы и ответы - Изображение: локальный файл в песочнице ввода, публичный https URL или data URL НЕ используйте, когда: - Нужно сгенерировать новое изображение → используйте generate_image или generate_image_dedicated - Нужен пакетный анализ нескольких файлов одним вызовом → не поддерживается; вызывайте по одному разу на каждое изображение - Нужен многоходовой визуальный чат с несколькими изображениями → используйте chat_completion с vision-моделью (analyze_image работает только с одним изображением) Хорошие примеры: - { "image_path": "diagram.png", "question": "Перечисли все надписи на этой диаграмме." } - { "image_path": "https://example.com/photo.jpg", "question": "Опиши сцену." } - { "image_path": "scan.jpg", "question": "Извлеки текст", "model": "google/gemini-2.5-flash" } (необязательное переопределение модели) Плохие примеры: - { "url": "photo.jpg" } → неверный ключ; используйте image_path - { "prompt": "describe" } → неверный ключ; используйте question (необязательный; по умолчанию: «Что на этом изображении?») - { "image_path": "../../../etc/passwd" } → UNSAFE_PATH (выход за пределы песочницы) Возвращает ошибку, когда: - INVALID_INPUT: image_path отсутствует или имеет неверный формат - UNSAFE_PATH: локальный путь вышел за пределы песочницы ввода - RESOURCE_TOO_LARGE: изображение превысило максимальный размер загрузки - UPSTREAM_REFUSED: блокировка SSRF, некорректный URL или политика контента Работает с: search_models, generate_image.

Параметры
  • cacheboolean

    Enable OpenRouter response caching via X-OpenRouter-Cache: true. Server default: OPENROUTER_CACHE_RESPONSES=1.

  • cache_clearboolean

    Bust the cache entry for this exact request.

  • cache_inputboolean

    Attach cache_control: ephemeral to the image block for Anthropic / Gemini prompt caching.

  • cache_ttlstring

    Cache TTL as integer seconds (1–86400) or a duration string such as "30s", "5m", or "1h". Sent upstream as seconds.

  • image_pathstringобязательный

    Local path (OPENROUTER_INPUT_DIR sandbox), https URL, or data URL. Good: "photo.jpg". Bad: "url": "..." (wrong key), "/etc/passwd" (UNSAFE_PATH).

  • modelstring

    Vision model ID (optional; server default is a free multimodal model).

  • questionstring

    Optional question. Default: "What's in this image?". Bad: using prompt (wrong key for this tool).

analyze_videoтолько чтениевнешний мир

Описывает или анализирует один видеофайл (mp4, mpeg, mov, webm). Модель по умолчанию: google/gemini-2.5-flash. В выводе тег _meta.content_is_untrusted: true. Большие файлы полностью буферизируются — предпочитайте короткие клипы. Используй, когда: - Нужна сводка, описание сцен или вопросы-ответы по видеофайлу. - Видео вписывается в лимиты и читается декодером. НЕ используй, когда: - Хочешь сгенерировать видео → используй generate_video. - Нужен только звук → используй analyze_audio. - Видео очень большое → сначала обрежь или ожидай RESOURCE_TOO_LARGE. Хорошие примеры: - { "video_path": "clip.mp4", "question": "Что происходит в первые 30 секунд?" } - { "video_path": "demo.webm", "question": "Перечисли текст на экране." } Плохие примеры: - { "video_path": "../secret.mp4" } → UNSAFE_PATH - Ожидание покадровых временных меток без явного запроса в подсказке. - Использование analyze_video для асинхронного статуса генерации → используй get_video_status. Ошибки: - INVALID_INPUT: отсутствует video_path. - UNSAFE_PATH: путь вышел за пределы изолированной среды. - UNSUPPORTED_FORMAT: нераспознанный видеоформат. - RESOURCE_TOO_LARGE: превышает лимит загрузки. Совместим с: generate_video, get_video_status, search_models.

Параметры
  • cacheboolean

    Enable OpenRouter response caching via X-OpenRouter-Cache: true. Server default: OPENROUTER_CACHE_RESPONSES=1.

  • cache_clearboolean

    Bust the cache entry for this exact request.

  • cache_inputboolean
  • cache_ttlstring

    Cache TTL as integer seconds (1–86400) or a duration string such as "30s", "5m", or "1h". Sent upstream as seconds.

  • modelstring

    Video-capable model ID (default: google/gemini-2.5-flash).

  • questionstring

    Optional question. Default: "Describe what happens in this video, step by step."

  • video_pathstringобязательный

    Local file path (sandboxed), http(s) URL, or base64 data URL. Supported containers: mp4, mpeg, mov, webm.

chat_completionвнешний мир

Отправляет сообщения в чат-модель OpenRouter и возвращает текстовый ответ. Поддерживает маршрутизацию провайдеров, суффиксы моделей (:nitro самая быстрая, :floor самая дешёвая, :free бесплатная, :online веб-поиск, :exacto точность инструментов), токены рассуждений, веб-поиск (online: true) и кэширование ответов. Используйте, когда: - Вам нужна генерация текста, Q&A, суммаризация или многоходовой диалог - Вы хотите получить ответы с учётом веб-информации (online: true) - Вы уже знаете идентификатор модели (или полагаетесь на серверный вариант по умолчанию) Не используйте, когда: - На входе один файл изображения/аудио/видео → используйте analyze_image / analyze_audio / analyze_video (специализированные обёртки) - Вам нужно создать изображение, аудио или видео → используйте инструменты generate_* / text_to_speech - Вам нужно только проверить, существует ли модель → используйте validate_model Хорошие примеры: - { "messages": [{ "role": "user", "content": "Explain recursion in one paragraph." }] } - { "model": "openai/gpt-4o:nitro", "messages": [...], "online": true } для веб-поиска - { "messages": [...], "include_reasoning": true } для моделей chain-of-thought Плохие примеры: - { "messages": [] } → INVALID_INPUT (пустой массив) - { "image_path": "photo.jpg" } → не тот инструмент; используйте analyze_image - Передача путей к файлам внутри содержимого сообщения без настроенной vision-модели Ошибки возникают, когда: - INVALID_INPUT: массив messages пуст - UPSTREAM_REFUSED: недостаточно кредитов, сработала политика контента или превышен лимит запросов - UPSTREAM_TIMEOUT: вышестоящий сервис не ответил вовремя - MODEL_NOT_FOUND: model slug не существует в OpenRouter Работает с: validate_model, search_models.

Параметры
  • cacheboolean

    Enable OpenRouter response caching via X-OpenRouter-Cache: true. Server default: OPENROUTER_CACHE_RESPONSES=1.

  • cache_clearboolean

    Bust the cache entry for this exact request.

  • cache_ttlstring

    Cache TTL as integer seconds (1–86400) or a duration string such as "30s", "5m", or "1h". Sent upstream as seconds.

  • include_reasoningboolean

    Surface the model's chain-of-thought on _meta.reasoning for R1 / Opus / Gemini Thinking models.

  • max_tokensnumber

    Max completion tokens. Falls back to OPENROUTER_MAX_TOKENS env var if unset.

  • messagesobject[]обязательный
  • modelstring

    Model ID (optional, uses server default). Append :nitro (fastest), :floor (cheapest), :free, :online (web search), or :exacto (tool accuracy). Example: openai/gpt-4o:nitro. Or pass online: true for programmatic web search.

  • onlineboolean

    Enable OpenRouter's web-search plugin (Exa-backed, $4 / 1000 results).

  • providerobject

    OpenRouter provider-routing overrides. Merges on top of OPENROUTER_PROVIDER_* env defaults. See https://openrouter.ai/docs/features/provider-routing

  • temperaturenumber

    Default: 1.

  • web_max_resultsnumber

    Max web-search results when online: true (default 5).

generate_audioвнешний мир

Генерирует речь или музыку через chat completions (маршрут modalities). Форматы: wav, mp3, flac, opus, pcm16. Модель по умолчанию: openai/gpt-audio, голос alloy. Для отдельного TTS со скоростью и инструкциями используйте text_to_speech. Используйте, когда: - Нужна музыка, звуковые эффекты или выразительная речь через чат-маршрут - Нужен вывод pcm16/wav из семейства gpt-audio НЕ используйте, когда: - Нужен быстрый отдельный TTS со скоростью и инструкциями → text_to_speech - Нужно транскрибировать существующее аудио → speech_to_text или analyze_audio - Промпт пустой Хорошие примеры: - { "prompt": "Say hello world in a calm voice." } - { "prompt": "Upbeat jingle", "save_path": "out/jingle.mp3" } Плохие примеры: - { "text": "hello" } → неверный ключ; используйте prompt - { "save_path": "../../../tmp/out.wav" } → UNSAFE_PATH Ошибки при: - INVALID_INPUT: промпт пустой - UNSAFE_PATH: save_path вышел за пределы песочницы - UPSTREAM_REFUSED: контентная политика или кредиты Работает с: analyze_audio.

Параметры
  • formatenum

    Output audio format (default: pcm16, auto-wrapped as WAV when needed).

  • modelstring

    Chat-completions audio model (default: openai/gpt-audio).

  • promptstringобязательный

    Text prompt for speech or music generation.

  • save_pathstring

    Write the artifact under OPENROUTER_OUTPUT_DIR (path-sandboxed). When set, the tool result is text-only with _meta.save_path — no inline media block. When unset, inline image/audio (default 1 MiB) or video (default 10 MiB) is returned only if under the per-kind ceiling: OPENROUTER_IMAGE_INLINE_MAX_BYTES, OPENROUTER_AUDIO_INLINE_MAX_BYTES, OPENROUTER_VIDEO_INLINE_MAX_BYTES (global fallback OPENROUTER_INLINE_MAX_BYTES). See .env.example.

  • voicestring

    Voice ID (default: alloy). Model-specific.

generate_imageвнешний мир

Генерирует изображение через chat completions (маршрут modalities). Необязательные input_images для стиля и идентичности. Модель по умолчанию: google/gemini-2.5-flash-image. Для управления разрешением, качеством и форматом или для более новых моделей Image API используйте generate_image_dedicated. Используйте, когда: - Нужно новое изображение по текстовому запросу через маршрут chat-completions - Есть референсные изображения, чтобы сохранить стиль или объект (input_images) - Нужно простое преобразование текста в изображение без специальных настроек API НЕ используйте, когда: - Нужны уровни разрешения, качество, output_format или модели только Image API → generate_image_dedicated - Нужно проанализировать существующее изображение → analyze_image - Нужно видео → generate_video или generate_video_from_image - Промпт пустой или содержит только пробелы Хорошие примеры: - { "prompt": "A watercolor fox in autumn leaves" } - { "prompt": "Same character", "input_images": ["ref.png"], "aspect_ratio": "16:9" } - { "prompt": "Logo", "save_path": "out/logo.png" } внутри выходной песочницы Плохие примеры: - { "prompt": "" } → INVALID_INPUT - { "input_images": ["/etc/passwd"] } → UNSAFE_PATH - { "aspect_ratio": "21:9" }, если значения нет в разрешённом перечне → INVALID_INPUT Ошибки: - INVALID_INPUT: пустой промпт, недопустимый aspect_ratio/image_size, нечитаемое референсное изображение - UNSAFE_PATH: save_path или input_images вышли за пределы песочницы - UPSTREAM_REFUSED: нарушение политики контента или недостаточно кредитов - MODEL_NOT_FOUND: неверный slug модели Работает с: analyze_image, generate_video_from_image.

Параметры
  • aspect_ratioenum

    Optional aspect ratio (provider-dependent).

  • image_sizeenum

    Optional resolution tier for supported models.

  • input_imagesstring[]

    Reference images (local path, URL, or data URL) for style/identity conditioning.

  • max_tokensnumber

    Optional completion token cap.

  • modalitiesstring[]

    Response modalities (default: ["image","text"]).

  • modelstring

    Image model ID (default: google/gemini-2.5-flash-image). Chat-completions route.

  • promptstringобязательный

    Text prompt describing the image to generate.

  • save_pathstring

    Write the artifact under OPENROUTER_OUTPUT_DIR (path-sandboxed). When set, the tool result is text-only with _meta.save_path — no inline media block. When unset, inline image/audio (default 1 MiB) or video (default 10 MiB) is returned only if under the per-kind ceiling: OPENROUTER_IMAGE_INLINE_MAX_BYTES, OPENROUTER_AUDIO_INLINE_MAX_BYTES, OPENROUTER_VIDEO_INLINE_MAX_BYTES (global fallback OPENROUTER_INLINE_MAX_BYTES). See .env.example.

generate_image_dedicatedвнешний мир

Генерирует изображения через отдельный Image API OpenRouter (POST /api/v1/images). Поддерживает нормализованные уровни разрешения, уровни качества, выбор выходного формата и референсные изображения. Новые модели изображений добавляются только в этот эндпоинт. Модель по умолчанию: google/gemini-2.5-flash-image. Используйте, когда: - Нужна генерация изображений с точным контролем разрешения, качества и формата - Хотите использовать новые модели изображений, доступные только в отдельном API - Нужно преобразование изображение-в-изображение с input_references Не используйте, когда: - Простой текстовый запрос на генерацию изображения без контроля формата или разрешения → generate_image (меньше параметров) - Нужно проанализировать существующее изображение → analyze_image - Нужно видео → generate_video или generate_video_from_image - Поле prompt пустое или состоит только из пробелов Примеры правильного использования: - { "prompt": "A watercolor fox", "resolution": "2K", "quality": "high" } - { "prompt": "Product shot", "input_references": ["product.jpg"], "aspect_ratio": "16:9" } - { "prompt": "Logo", "output_format": "svg", "save_path": "out/logo.svg" } Примеры некорректного использования: - { "prompt": "" } → INVALID_INPUT - { "resolution": "8K" } → значение не входит в допустимый enum - { "quality": "ultra" } → значение не входит в допустимый enum Возвращает ошибку в случаях: - INVALID_INPUT: пустой prompt, недопустимые resolution/quality/output_format - UNSAFE_PATH: save_path или input_references вышли за пределы песочницы - UPSTREAM_REFUSED: политика безопасности контента, модель не поддерживает запрошенные параметры - MODEL_NOT_FOUND: неверный slug модели Работает с: analyze_image, generate_video_from_image.

Параметры
  • aspect_ratioenum

    Aspect ratio (same enum as generate_image).

  • cacheboolean

    Enable OpenRouter response caching via X-OpenRouter-Cache: true. Server default: OPENROUTER_CACHE_RESPONSES=1.

  • cache_clearboolean

    Bust the cache entry for this exact request.

  • cache_ttlstring

    Cache TTL as integer seconds (1–86400) or a duration string such as "30s", "5m", or "1h". Sent upstream as seconds.

  • input_referencesstring[]

    Reference images for image-to-image. Each entry: local path, http(s) URL, or data URL.

  • modelstring

    Image model ID. Default: google/gemini-2.5-flash-image. Browse: https://openrouter.ai/collections/image-models

  • nnumber

    Number of images to request (default 1; only images[0] is saved/inlined).

  • output_formatenum

    Output image format.

  • promptstringобязательный

    Text prompt describing the image to generate.

  • providerobject

    Provider routing overrides (order, sort, allow_fallbacks, etc.).

  • qualityenum

    Image quality level (default: auto).

  • resolutionenum

    Normalized resolution tier. Provider maps to closest supported size.

  • save_pathstring

    Save generated image to this path. Write the artifact under OPENROUTER_OUTPUT_DIR (path-sandboxed). When set, the tool result is text-only with _meta.save_path — no inline media block. When unset, inline image/audio (default 1 MiB) or video (default 10 MiB) is returned only if under the per-kind ceiling: OPENROUTER_IMAGE_INLINE_MAX_BYTES, OPENROUTER_AUDIO_INLINE_MAX_BYTES, OPENROUTER_VIDEO_INLINE_MAX_BYTES (global fallback OPENROUTER_INLINE_MAX_BYTES). See .env.example.

generate_videoвнешний мир

Генерирует видео из текстового запроса (опционально первый/последний кадр или референсные изображения). Отправляет асинхронную задачу, опрашивает до max_wait_ms, скачивает по завершении. Отправляет MCP-прогресс, если клиент передал progressToken. Модель по умолчанию: google/veo-3.1. Используй, когда: - Нужно текст-в-видео или видео с привязкой к кадрам - Готов ждать опроса или вернуться позже через get_video_status - Нужны last_frame или несколько reference_images (их нет в generate_video_from_image) НЕ используй, когда: - У тебя только одно изображение и простая конвертация изображения в видео → используй generate_video_from_image (меньше параметров) - Задача уже отправлена → используй get_video_status с video_id - Нужно проанализировать существующее видео → analyze_video Хорошие примеры: - { "prompt": "Океанские волны на закате, кинематографично" } - Возобновление по таймауту: в ответе _meta.code: JOB_STILL_RUNNING и _meta.video_id → вызывай get_video_status - { "prompt": "Морфинг", "first_frame_image": "a.jpg", "last_frame_image": "b.jpg" } Плохие примеры: - Воспринимать JOB_STILL_RUNNING как ошибку — это успех с метаданными для возобновления - { "prompt": " " } → INVALID_INPUT - Опрашивать get_video_status в том же вызове без ожидания → снова получишь JOB_STILL_RUNNING Ошибки: - INVALID_INPUT: пустой промпт - UNSAFE_PATH: save_path или пути к изображениям вышли за пределы sandbox - UPSTREAM_REFUSED: политика, кредиты или некорректный запрос - JOB_FAILED: провайдер пометил задачу как неудачную Работает вместе с: get_video_status, generate_video_from_image.

Параметры
  • aspect_ratiostring

    Provider-specific aspect ratio (e.g. "16:9", "9:16"). No server-side enum.

  • durationnumber

    Clip duration in seconds (provider-dependent).

  • first_frame_imagestring

    Optional first-frame image (path, URL, or data URL).

  • last_frame_imagestring

    Optional last-frame image (path, URL, or data URL).

  • max_wait_msnumber

    Max time to poll before returning JOB_STILL_RUNNING (ms). Default: 600000 (10 min) via OPENROUTER_VIDEO_MAX_WAIT_MS.

  • modelstring

    Video model ID (default: google/veo-3.1). Passed through to provider.

  • poll_interval_msnumber

    Poll interval while waiting (ms). Default: 15000 via OPENROUTER_VIDEO_POLL_INTERVAL_MS.

  • promptstringобязательный

    Text prompt describing the video to generate.

  • providerobject

    Provider routing overrides.

  • reference_imagesstring[]

    Optional reference images for style/subject guidance.

  • resolutionstring

    Provider-specific resolution (e.g. "720p", "1080p"). No server-side enum.

  • save_pathstring

    Write the artifact under OPENROUTER_OUTPUT_DIR (path-sandboxed). When set, the tool result is text-only with _meta.save_path — no inline media block. When unset, inline image/audio (default 1 MiB) or video (default 10 MiB) is returned only if under the per-kind ceiling: OPENROUTER_IMAGE_INLINE_MAX_BYTES, OPENROUTER_AUDIO_INLINE_MAX_BYTES, OPENROUTER_VIDEO_INLINE_MAX_BYTES (global fallback OPENROUTER_INLINE_MAX_BYTES). See .env.example.

  • seednumber

    Optional reproducibility seed.

generate_video_from_imageвнешний мир

Узкая обёртка для преобразования изображения в видео: одно image (первый кадр) + prompt. Меньше параметров → выше точность вызова инструмента. Для последнего кадра или опорных изображений используйте generate_video. Используйте, когда: - Достаточно одного опорного изображения + описания движения - Нужна минимальная поверхность аргументов для преобразования изображения в видео НЕ используйте, когда: - Нужны last_frame_image или reference_images[] → generate_video - Проверяете статус задачи → get_video_status Хорошие примеры: - { "image": "start.png", "prompt": "Camera slowly zooms in" } - При тайм-ауте: тот же JOB_STILL_RUNNING + video_id продолжается как generate_video Плохие примеры: - { "first_frame_image": "x.png" } → неверный ключ; используйте image - Передача video_id сюда → используйте get_video_status Причины отказа: - INVALID_INPUT: image или prompt отсутствует - UNSAFE_PATH: путь к изображению вышел за пределы песочницы - UPSTREAM_REFUSED / JOB_FAILED: как в generate_video Работает с: generate_video, get_video_status.

Параметры
  • aspect_ratiostring

    Provider-specific aspect ratio.

  • durationnumber

    Clip duration in seconds.

  • imagestringобязательный

    First-frame image (path, URL, or data URL). Required.

  • max_wait_msnumber

    Max poll wait (ms) before JOB_STILL_RUNNING. Default: 600000.

  • modelstring

    Video model ID (default: google/veo-3.1).

  • poll_interval_msnumber

    Poll interval (ms). Default: 15000.

  • promptstringобязательный

    Motion/scene prompt describing the video.

  • resolutionstring

    Provider-specific resolution.

  • save_pathstring

    Write the artifact under OPENROUTER_OUTPUT_DIR (path-sandboxed). When set, the tool result is text-only with _meta.save_path — no inline media block. When unset, inline image/audio (default 1 MiB) or video (default 10 MiB) is returned only if under the per-kind ceiling: OPENROUTER_IMAGE_INLINE_MAX_BYTES, OPENROUTER_AUDIO_INLINE_MAX_BYTES, OPENROUTER_VIDEO_INLINE_MAX_BYTES (global fallback OPENROUTER_INLINE_MAX_BYTES). See .env.example.

  • seednumber

    Optional reproducibility seed.

get_chat_completion_statusтолько чтениеидемпотентный

Проверяет статус асинхронной задачи чат-генерации, запущенной с помощью start_chat_completion. Возвращает полный ответ, когда задача завершена, или текущий статус (running/failed) в противном случае. Используйте, когда: - Вы ранее вызывали start_chat_completion и нужно проверить, завершилась ли задача - Нужно опросить результат долго выполняющейся модели рассуждений НЕ используйте, когда: - Вы ещё не запускали задачу → сначала вызовите start_chat_completion - Вы хотите запустить новую генерацию Хорошие примеры: - { "job_id": "chat_20260806_001" } Плохие примеры: - { "job_id": "" } → INVALID_INPUT - { "job_id": "nonexistent" } → задача не найдена Выдаёт ошибку, когда: - INVALID_INPUT: пустой job_id - JOB_FAILED: фоновая генерация столкнулась с ошибкой - Задача не найдена: неверный job_id или задача из предыдущей сессии Работает с: start_chat_completion, chat_completion.

Параметры
  • job_idstringобязательный

    The job_id returned by start_chat_completion.

get_model_infoтолько чтениеидемпотентныйвнешний мир

Возвращает цену, длину контекста и архитектуру модальностей для одного идентификатора модели из кэшированного каталога. Используй, когда: - У тебя есть идентификатор модели и нужна информация о контекстном окне, цене или входных/выходных модальностях - Ты выбираешь между двумя известными слагами моделей НЕ используй, когда: - Нужно только true/false о существовании → validate_model (дешевле) - Ты просматриваешь неизвестные модели → сначала search_models Хорошие примеры: - { "model": "openai/gpt-4o" } - { "model": "google/gemini-2.5-flash" } перед analyze_video Плохие примеры: - { "model": "" } → INVALID_INPUT - { "name": "gpt-4o" } — неверный ключ; используй model с полным слагом openai/gpt-4o - Циклические вызовы → кэш общий; вызывай один раз для каждого id Ошибки: - INVALID_INPUT: не указана модель - MODEL_NOT_FOUND: слаг отсутствует в каталоге - UPSTREAM_HTTP: не удалось обновить каталог Работает вместе с: search_models, validate_model.

Параметры
  • modelstringобязательный

    Full OpenRouter model slug (e.g. openai/gpt-4o).

get_video_statusтолько чтениеидемпотентныйвнешний мир

Опрашивает асинхронное задание по видео по его идентификатору. Скачивает и опционально сохраняет результат по завершении. Если задание ещё выполняется → возвращает success с _meta.code: JOB_STILL_RUNNING (это не ошибка). Используй когда: - generate_video вернул JOB_STILL_RUNNING, или у тебя уже есть video_id от предыдущего вызова - хочешь проверить статус без повторной отправки НЕ используй когда: - запускаешь новую генерацию → для этого есть generate_video или generate_video_from_image - у тебя ещё нет video_id Правильные примеры: - { "video_id": "vid_abc123" } - { "video_id": "vid_abc123", "save_path": "out/clip.mp4" } - Повторяй, пока статус не будет completed, или тебя устраивает частичный результат из _meta.progress Неправильные примеры: - { "id": "vid_abc" } → неверный ключ; используй video_id - ожидание мгновенного завершения при первом опросе долгих заданий - считать JOB_STILL_RUNNING ошибкой инструмента Ошибки: - INVALID_INPUT: не передан video_id - UNSAFE_PATH: save_path выходит за пределы sandbox'а - JOB_FAILED: провайдер пометил задание как неудавшееся Работает с: generate_video, generate_video_from_image.

Параметры
  • save_pathstring

    Write the artifact under OPENROUTER_OUTPUT_DIR (path-sandboxed). When set, the tool result is text-only with _meta.save_path — no inline media block. When unset, inline image/audio (default 1 MiB) or video (default 10 MiB) is returned only if under the per-kind ceiling: OPENROUTER_IMAGE_INLINE_MAX_BYTES, OPENROUTER_AUDIO_INLINE_MAX_BYTES, OPENROUTER_VIDEO_INLINE_MAX_BYTES (global fallback OPENROUTER_INLINE_MAX_BYTES). See .env.example.

  • video_idstringобязательный

    Video job id from generate_video / generate_video_from_image.

health_checkтолько чтениеидемпотентныйвнешний мир

Проверяет API-ключ, доступность OpenRouter, количество кэшированных моделей и версии сервера/протокола. Аргументы не требуются. Используйте, когда: - Проба при запуске / эксплуатации перед другими инструментами - Нужно получить { ok, api_key_valid } без запуска генерации (чтобы избежать расходов) НЕ используйте, когда: - Нужно проверить качество конкретной модели — используйте chat_completion с коротким промптом - Ожидаете isError при неверном API-ключе — этот инструмент всегда возвращает структурированные данные Примеры правильного использования: - {} — пустые аргументы - Ветвление по structuredContent.api_key_valid === false для запроса повторной аутентификации Примеры неправильного использования: - Передача model или prompt — игнорируется; это не чат-инструмент - Ожидание isError: true при ошибке — вместо этого проверяйте поле ok Ошибка не возникает: - Никогда не возвращает isError — всегда возвращает { ok, api_key_valid, ... } для программного ветвления Работает с: любыми другими инструментами (запускается один раз при старте).

Параметры

Без параметров.

rerank_documentsтолько чтениеидемпотентныйвнешний мир

Переупорядочивает документы по релевантности запросу с помощью ранжировщика OpenRouter. По умолчанию: cohere/rerank-english-v3.0. Используй, когда: - Есть запрос и список текстовых фрагментов, которые нужно отсортировать по релевантности - Лучшие результаты пойдут в chat_completion для ответов с опорой на источники НЕ используй, когда: - Нужно получить документы из интернета — сначала chat_completion с онлайн-поиском или внешним извлечением - documents пуст или содержит не-строки Хорошие примеры: - { "query": "battery life", "documents": ["Doc A text...", "Doc B text..."] } - { "query": "...", "documents": [...], "model": "cohere/rerank-english-v3.0" } Плохие примеры: - { "documents": [] } → INVALID_INPUT - { "query": "x", "documents": [{ "text": "y" }] } → элементы должны быть строками - Использование выхода rerank как сообщений модели без извлечения текстовых полей Ошибки: - INVALID_INPUT: отсутствует query, documents пуст или есть элементы не-строки - MODEL_NOT_FOUND: неверный идентификатор ранжировщика - UPSTREAM_HTTP: ошибка провайдера Работает с: search_models, chat_completion.

Параметры
  • documentsstring[]обязательный
  • modelstring

    Reranker model (default: cohere/rerank-english-v3.0).

  • querystringобязательный

    Search query to rank documents against.

  • return_documentsboolean

    When true, include original document text in each result.

  • top_nnumber

    Return only the top N results.

search_modelsтолько чтениеидемпотентныйвнешний мир

Ищет по каталогу моделей OpenRouter по названию, провайдеру или возможностям. Возвращает результат постранично — используй offset, limit и next_offset, чтобы пролистывать большие наборы. Используй, когда: - Ты не знаешь, какой id модели взять. - Нужны модели с поддержкой изображений/аудио/видео, отфильтрованные по модальности. - Хочешь модели от конкретного провайдера (например, google). НЕ используй, когда: - У тебя уже есть id модели и нужна только проверка существования → validate_model - Нужна информация о цене/контексте для одного id → get_model_info - Ты рассчитываешь получить все 400+ моделей в одном ответе без пагинации Хорошие примеры: - { "query": "gemini", "capabilities": { "vision": true }, "limit": 10, "offset": 0 } - { "provider": "anthropic", "limit": 20 } - Страница 2: { "query": "llama", "offset": 20, "limit": 20 } на основе предыдущего next_offset Плохие примеры: - Опрос пагинации для широких запросов → большой ответ; используй limit/offset - Использование выдачи search_models как сообщений чата → используй возвращённый id в chat_completion - { "capability": "vision" } → неверная структура; используй capabilities: { "vision": true } Ошибки: - UPSTREAM_HTTP: ошибка эндпоинта /models - UPSTREAM_REFUSED: неверный API-ключ Совместим с: validate_model, get_model_info.

Параметры
  • capabilitiesobject
  • limitnumber

    Page size (default 20, max 50).

  • offsetnumber

    Pagination offset (default 0).

  • providerstring

    Filter by provider slug prefix (e.g. google).

  • querystring

    Substring match against model id or name.

speech_to_textтолько чтениевнешний мир

Транскрибирует аудио через выделенную конечную точку STT OpenRouter (POST /api/v1/audio/transcriptions). Быстрее и дешевле, чем chat completions, для чистой транскрипции. Модели: Whisper-1, GPT-4o Transcribe, Voxtral. Используйте, когда: - Нужна быстрая транскрипция аудиофайлов - Нужно только распознавание речи без анализа и Q&A - Нужен структурированный вывод (SRT, VTT, verbose JSON) НЕ используйте, когда: - Нужно задавать вопросы об аудио → analyze_audio - Нужен анализ музыки или определение звуков → analyze_audio - Нужен TTS → text_to_speech или generate_audio Хорошие примеры: - { "audio_path": "recording.mp3" } - { "audio_path": "meeting.wav", "language": "en", "response_format": "srt" } - { "audio_path": "https://example.com/audio.mp3", "model": "openai/gpt-4o-transcribe" } Плохие примеры: - { "audio_path": "" } → INVALID_INPUT - { "path": "audio.mp3" } → неправильный ключ; используйте audio_path - { "audio_path": "/etc/shadow" } → UNSAFE_PATH Завершается ошибкой, когда: - INVALID_INPUT: пустой audio_path, неверный response_format, нечитаемый файл - UNSAFE_PATH: audio_path вышел за пределы песочницы - UPSTREAM_REFUSED: неподдерживаемый формат или закончились кредиты Работает с: text_to_speech, analyze_audio.

Параметры
  • audio_pathstringобязательный

    Audio file: local path (sandboxed), http(s) URL, or base64 data URL. Formats: mp3, wav, flac, ogg, webm, mp4, m4a.

  • cacheboolean

    Enable OpenRouter response caching via X-OpenRouter-Cache: true. Server default: OPENROUTER_CACHE_RESPONSES=1.

  • cache_clearboolean

    Bust the cache entry for this exact request.

  • cache_ttlstring

    Cache TTL as integer seconds (1–86400) or a duration string such as "30s", "5m", or "1h". Sent upstream as seconds.

  • languagestring

    ISO-639-1 language code (e.g. "en", "es", "fr"). Improves accuracy.

  • modelstring

    STT model. Default: openai/whisper-1. Also: openai/gpt-4o-transcribe, openai/gpt-4o-mini-transcribe.

  • response_formatenum

    Output format for transcription. Default: json.

  • temperaturenumber

    Sampling temperature for transcription (0–1).

start_chat_completionвнешний мир

Запускает chat completion как асинхронную фоновую задачу. Сразу возвращает job_id, не дожидаясь ответа модели. Используйте get_chat_completion_status, чтобы опрашивать результаты. Рассчитан на reasoning-модели и любые запросы, которые могут превысить тайм-аут MCP (~60 с). Используйте, когда: - Используете reasoning-модель, которая может отвечать больше 60 секунд (DeepSeek R1, Claude Opus и т. п.) - Подключены через удалённый MCP-мост с короткими тайм-аутами - Хотите отправить completion и забыть о нём, а позже проверить результат НЕ используйте, когда: - Быстрые модели отвечают за секунды → используйте chat_completion напрямую - Нужен потоковый вывод → используйте chat_completion - Массив messages пуст Хорошие примеры: - { "messages": [{ "role": "user", "content": "Prove the Riemann hypothesis" }], "model": "deepseek/r1" } - { "messages": [...], "include_reasoning": true } для длинной цепочки рассуждений Плохие примеры: - { "messages": [] } → INVALID_INPUT - Не используйте для простых запросов вроде «hello world» (лишняя нагрузка) Ошибки возникают, когда: - INVALID_INPUT: пустой массив messages - Задача может завершиться ошибкой в фоне, если модель выдаст ошибку или закончатся кредиты Работает с: get_chat_completion_status, chat_completion.

Параметры
  • cacheboolean

    Enable OpenRouter response caching via X-OpenRouter-Cache: true. Server default: OPENROUTER_CACHE_RESPONSES=1.

  • cache_clearboolean

    Bust the cache entry for this exact request.

  • cache_ttlstring

    Cache TTL as integer seconds (1–86400) or a duration string such as "30s", "5m", or "1h". Sent upstream as seconds.

  • include_reasoningboolean
  • max_tokensnumber
  • messagesobject[]обязательный
  • modelstring

    Model ID (same options as chat_completion).

  • onlineboolean
  • providerobject
  • temperaturenumber
  • web_max_resultsnumber
text_to_speechвнешний мир

Преобразует текст в речь через выделенный TTS-endpoint OpenRouter (POST /api/v1/audio/speech). Для чистого TTS быстрее и дешевле, чем chat completions. Модели: OpenAI GPT-4o Mini TTS, Google Gemini Flash TTS, Mistral Voxtral. Используйте, когда: - Нужен TTS с выбором конкретного голоса - Хотите быстрый выделенный TTS без обвязки чата - Нужен конкретный аудиоформат (mp3, opus, wav и т. д.) Не используйте, когда: - Нужно сгенерировать музыку или звуковые эффекты → generate_audio - Нужно расшифровать аудио → speech_to_text или analyze_audio - Входной текст пуст Хорошие примеры: - { "input": "Hello, welcome to our app!" } - { "input": "...", "voice": "nova", "response_format": "mp3", "save_path": "out/welcome.mp3" } - { "input": "...", "instructions": "speak slowly and clearly", "speed": 0.8 } Плохие примеры: - { "input": "" } → INVALID_INPUT - { "prompt": "text" } → неверный ключ; используйте input - { "response_format": "mp4" } → недопустимый аудиоформат Не работает, когда: - INVALID_INPUT: пустой input, недопустимый response_format - UNSAFE_PATH: save_path вышел за пределы sandbox - UPSTREAM_REFUSED: политика контента или закончились кредиты Работает с: speech_to_text, analyze_audio.

Параметры
  • cacheboolean

    Enable OpenRouter response caching via X-OpenRouter-Cache: true. Server default: OPENROUTER_CACHE_RESPONSES=1.

  • cache_clearboolean

    Bust the cache entry for this exact request.

  • cache_ttlstring

    Cache TTL as integer seconds (1–86400) or a duration string such as "30s", "5m", or "1h". Sent upstream as seconds.

  • inputstringобязательный

    Text to convert to speech.

  • instructionsstring

    Tone/style instructions (e.g. "speak in a warm, friendly tone"). OpenAI models only.

  • modelstring

    TTS model. Default: openai/gpt-4o-mini-tts-2025-12-15. Also: google/gemini-flash-tts, mistral/voxtral-mini-tts.

  • response_formatenum

    Output audio format. Default: mp3.

  • save_pathstring

    Save audio to this path. Write the artifact under OPENROUTER_OUTPUT_DIR (path-sandboxed). When set, the tool result is text-only with _meta.save_path — no inline media block. When unset, inline image/audio (default 1 MiB) or video (default 10 MiB) is returned only if under the per-kind ceiling: OPENROUTER_IMAGE_INLINE_MAX_BYTES, OPENROUTER_AUDIO_INLINE_MAX_BYTES, OPENROUTER_VIDEO_INLINE_MAX_BYTES (global fallback OPENROUTER_INLINE_MAX_BYTES). See .env.example.

  • speednumber

    Speed of speech (0.25–4.0). Default: 1.0.

  • voicestring

    Voice ID (model-specific). Default: alloy. OpenAI voices: alloy, echo, fable, onyx, nova, shimmer.

validate_modelтолько чтениеидемпотентныйвнешний мир

Дешёвая булева проверка: существует ли этот идентификатор модели в каталоге OpenRouter? Использует общий кеш. Используй, когда: - Предварительная проверка перед chat_completion или generate_*, чтобы избежать MODEL_NOT_FOUND. - Нужен только { valid: true|false }, без цены или модальностей. НЕ используй, когда: - Нужны цена или длина контекста → get_model_info. - Ищешь модели → search_models. Хорошие примеры: - { "model": "anthropic/claude-sonnet-4" } → { "valid": true, "model": "..." } - { "model": "fake/model" } → { "valid": false } (это не ошибка) Плохие примеры: - Воспринимать valid: false как ошибку инструмента — это успешный ответ. - Использовать validate_model для поиска по части имени → используй search_models с query. Не работает, когда: - INVALID_INPUT: модель не указана. - UPSTREAM_HTTP: обновление каталога не удалось. Совместим с: get_model_info, chat_completion.

Параметры
  • modelstringобязательный

    Full OpenRouter model slug to check.

Похожие MCP-сервера

mbailey/voice-mcp

mbailey/voice-mcp

VoiceMode добавляет в Claude Code голосовое общение. Разговаривайте с ИИ-агентом вслух, когда печатать неудобно: на прогулке, за готовкой или давая глазам отдых. Поддерживает локальные модели для п...

Python1357
elevenlabs/elevenlabs-mcp

elevenlabs/elevenlabs-mcp

Официальный MCP-сервер ElevenLabs для синтеза речи, клонирования голосов и транскрибации аудио. Интегрируется с Claude Desktop, Cursor и другими агентами, позволяя генерировать голосовые ответы, создавать звуковые ландшафты и обрабатывать аудиофайлы без переключения контекста.

Python1535
evalstate/mcp-hfspace

evalstate/mcp-hfspace

MCP сервер для доступа к моделям Hugging Face Spaces. Поддерживает десятки задач — генерацию, распознавание, синтез — через единый MCP протокол. Идеален для интеграции с Claude Desktop. Использует Gradio эндпоинты, настройка минимальна.

TypeScript389
MKirovBG/scribefy-mcp

MKirovBG/scribefy-mcp

Сервер Scribefy для MCP — извлекает транскрипты YouTube по ссылке прямо в Claude Desktop, Cursor, Windsurf и других AI-клиентах. Также бесплатно ищет видео, получает метаданные и похожие ролики.

JavaScript1
MarkItDown MCP

MarkItDown MCP

официальный

Инструмент для преобразования PDF, Word, Excel, изображений, аудио и других форматов в Markdown. Оптимален для подготовки данных для LLM-пайплайнов. Сохраняет структуру документов (заголовки, списки, таблицы).

Python182416
gpu-bridge/mcp-server

gpu-bridge/mcp-server

MCP сервер GPU-Bridge предоставляет 30 GPU-сервисов как инструменты для ИИ-агентов: LLM, генерация изображений, аудио и другие. Поддерживает x402 для автономной оплаты без API ключей. Идеален для автономных AI агентов.

JavaScript2
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин