OpenRouter Voice MCP
OpenRouter Voice MCP
Небольшой MCP-сервер (Python + FastMCP, stdio), который превращает текст в локальные аудиофайлы с помощью речевых моделей OpenRouter. Модель по умолчанию:
fish-audio/s2.1-pro-free:freeСоздан для озвучки видео на вьетнамском: Codex или Claude Code пишет сценарий повествования, вызывает render_voiceover() и получает абсолютный путь к MP3, который можно сразу передать в FFmpeg.
Codex / Claude Code
| MCP stdio
OpenRouter Voice MCP
| HTTPS
OpenRouter -> fish-audio/s2.1-pro-free:free
|
MP3 bytes -> local file -> FFmpeg / video pipelineНикаких PyTorch, CUDA, локальных загрузок моделей, локальных LLM или локального HTTP-порта. Только Python, три чисто Python-пакета и API-ключ OpenRouter.
Установка
Требования: Python >= 3.10 в PATH, а также ffmpeg, если вы хотите, чтобы render_long_voiceover() объединял сегменты. Получите бесплатный API-ключ на https://openrouter.ai/keys.
Одна команда делает всё — venv, зависимости, .env, приёмочные тесты и регистрацию в Claude Code и Codex:
git clone https://github.com/Trandu1/mcp_voice.git D:\VoiceAI\openrouter-voice-mcp
cd D:\VoiceAI\openrouter-voice-mcp
.\install.ps1 -ApiKey "sk-or-v1-..." -RegisterРучной эквивалент, если вы предпочитаете видеть каждый шаг:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
copy .env.example .env # then set OPENROUTER_API_KEY=sk-or-v1-...
.\.venv\Scripts\python.exe tests\acceptance.pyНа macOS / Linux нет install.ps1; используйте ручные шаги с python3 -m venv .venv и .venv/bin/python, затем зарегистрируйте, как показано ниже.
Регистрация в Claude Code
claude mcp add openrouter-voice --scope user -- `
D:\VoiceAI\openrouter-voice-mcp\.venv\Scripts\python.exe `
D:\VoiceAI\openrouter-voice-mcp\server.py
claude mcp get openrouter-voice # expect: ConnectedРегистрация в Codex
codex mcp add openrouter-voice -- `
D:\VoiceAI\openrouter-voice-mcp\.venv\Scripts\python.exe `
D:\VoiceAI\openrouter-voice-mcp\server.py
codex mcp list # expect: openrouter-voiceКлюч API читается из .env рядом с server.py, поэтому он никогда не появляется в командной строке или в конфигурационных файлах обоих CLI. Вы также можете экспортировать OPENROUTER_API_KEY в окружение — экспортированное значение имеет приоритет над .env.
Related MCP server: MCP MeloTTS Audio Generator
Инструменты
Инструмент | Что делает |
| Статус конфигурации и ключа. Только бесплатная проверка аутентификации, никогда не рендерит аудио. |
| Основной инструмент. Текст -> локальный аудиофайл. |
| Разбивает длинный сценарий на сегменты, рендерит каждый, объединяет с FFmpeg, если он доступен. |
| Короткий образец, записывается в |
| Все модели OpenRouter с |
| Актуальный провайдер / тариф / цены / поддержка клонирования голоса для одной модели. |
render_voiceover
render_voiceover(
text: str,
output_path: str = "", # absolute or relative; parents are created
voice: str = "", # empty = model default (correct for Fish Audio)
response_format: str = "", # "mp3" (default) or "pcm"
instructions: str = "", # only sent to providers that document it
overwrite: bool = False, # False never clobbers an existing file
reference_audio_path: str = "", # optional stateless voice cloning
reference_text: str = "",
)Возвращает:
{
"status": "ok",
"model": "fish-audio/s2.1-pro-free:free",
"audio_path": "D:\\campaigns\\abc\\audio\\narration.mp3",
"format": "mp3",
"content_type": "audio/mpeg",
"bytes": 123456,
"elapsed_seconds": 2.31,
"duration_seconds": 12.4,
"generation_id": "gen-..."
}Аудиобайты записываются на диск и никогда не возвращаются в base64 через MCP — смысл в реальном файле для FFmpeg.
Конфигурация
Все настройки — переменные окружения (см. .env.example):
Переменная | По умолчанию | Примечания |
| — | Обязательно. Никогда не логируется и не возвращается. |
|
| |
| пусто | Fish Audio не документирует предустановленные идентификаторы голосов; оставьте пустым. |
|
|
|
|
| |
| пусто | Отправляется только при установке. |
|
| Отправляется как |
|
| Используется, когда вызывающий не передаёт |
| пусто | Оставьте пустым. Устанавливайте только если вы согласны платить за платную модель, когда бесплатная недоступна. |
Что API реально поддерживает
Проверено на живом OpenRouter Speech API и Models API (2026-08-25), а не выведено из старого OpenAI TTS API:
Конечная точка
POST https://openrouter.ai/api/v1/audio/speechвозвращает сырой аудиопоток байтов. Только ответы с кодом, отличным от 200, содержат JSON.Поля верхнего уровня:
model,input,voice,response_format,speed,input_references,provider.response_format— этоmp3илиpcm. API по умолчанию используетpcm, поэтому этот сервер всегда явно отправляет формат.instructionsне является полем верхнего уровня. Это опция провайдера OpenAI (provider.options.openai.instructions). Fish Audio не документирует опции провайдера, поэтомуinstructionsотбрасывается для моделей Fish и сообщается вwarnings— никакие выдуманные поля никогда не отправляются.speedподдерживается только некоторыми провайдерами (OpenAI, Azure); в остальных случаях он отбрасывается, а не молча игнорируется на стороне сервера.У Fish Audio нет предустановленных идентификаторов голосов (
alloy/nova/shimmerпринадлежат OpenAI). Оставьтеvoiceпустым.Клонирование голоса доступно: API конечных точек сообщает
supports_voice_cloning: trueдляfish-audio/s2.1-pro-free:free. Оно без сохранения состояния — вы передаёте аудиосэмпл в base64 вinput_referencesпри каждом запросе. Нет постоянногоvoice_idдля создания, поэтому на этом сервере нет инструментаclone_voice; вместо этого используйтеreference_audio_pathвrender_voiceover.Заголовки атрибуции:
HTTP-RefererиX-OpenRouter-Title.
Лимиты бесплатной модели
fish-audio/s2.1-pro-free:free — бесплатный вариант:
20 запросов в минуту, 50 запросов в день (1000 в день после покупки кредита на сумму ≥ $10 на аккаунте).
Доступность, очередь и задержка не гарантируются.
Когда бесплатная модель недоступна, сервер возвращает понятную ошибку. Он никогда не переключается на платную модель, если вы явно не установите
OPENROUTER_VOICE_FALLBACK_MODEL.
Временные сбои (408, 429, 5xx, сетевые ошибки) повторяются дважды с короткой экспоненциальной задержкой. 400/401/403 никогда не повторяются.
Тесты
.\.venv\Scripts\python.exe -m pytest tests -q --asyncio-mode=auto # unit, mocked HTTP
.\.venv\Scripts\python.exe tests\smoke_test.py # live, needs a key
.\.venv\Scripts\python.exe tests\acceptance.py # full checklistsmoke_test.py и живая половина acceptance.py корректно пропускаются без ключа. Пропуск сообщается как SKIP, никогда как PASS.
Безопасность
Ключ API хранится в
.env(исключён из git) или в окружении. Он никогда не логируется, не записывается в командную строку и не возвращается через MCP.health()иmodel_info()возвращают конфигурацию, но никогда учётные данные.Сервер работает только через stdio и не привязывает TCP-порт.
Он не выполняет shell-команд из входных данных инструментов. FFmpeg/ffprobe вызываются только для файлов, которые только что записал этот сервер, и только если они присутствуют.
Запись файлов происходит точно туда, куда просит вызывающий (Codex должен писать в произвольные каталоги кампаний), но каталоги, недопустимые имена файлов Windows и зарезервированные имена устройств отклоняются, а
overwrite=Falseникогда не перезаписывает.
Лицензия
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to generate and play high-quality text-to-speech audio using the Kokoro model, with support for multiple voices, adjustable speaking speed, and audio caching.
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to convert text to high-quality speech audio using MeloTTS. Automatically splits long texts into segments, generates WAV files, and merges them using ffmpeg with support for multiple languages and customizable speech parameters.MIT
- AlicenseNot gradedqualityDmaintenanceProvides text-to-speech generation using the Kokoro-82M model, enabling AI assistants to generate voiceovers and audio content directly within Claude Desktop and Cursor.14Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables text-to-speech generation using the Groq API, supporting multiple audio formats and optional local playback.451MIT
Related MCP Connectors
Generate images, video, music and voice from your CLI or AI agent. On-brand AI media toolkit.
15 media & data tools for AI agents: search, transcribe, subtitles, voiceover, translate & more.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Trandu1/mcp_voice'
If you have feedback or need assistance with the MCP directory API, please join our Discord server