OpenRouter Voice MCP
OpenRouter Voice MCP
Ein kleiner MCP-Server (Python + FastMCP, stdio), der Text in lokale Audiodateien umwandelt, unter Verwendung von OpenRouter-Sprachmodellen. Standardmodell:
fish-audio/s2.1-pro-free:freeGebaut für vietnamesische Video-Voiceover: Codex oder Claude Code schreibt ein Erzählskript,
ruft render_voiceover() auf und erhält einen absoluten Pfad zu einer MP3-Datei,
die es direkt an FFmpeg weiterreichen kann.
Codex / Claude Code
| MCP stdio
OpenRouter Voice MCP
| HTTPS
OpenRouter -> fish-audio/s2.1-pro-free:free
|
MP3 bytes -> local file -> FFmpeg / video pipelineKein PyTorch, CUDA, lokale Modell-Downloads, lokales LLM oder lokaler HTTP-Port. Nur Python, drei reine Python-Pakete und ein OpenRouter-API-Schlüssel.
Installation
Anforderungen: Python >= 3.10 im PATH, sowie ffmpeg, falls Sie
render_long_voiceover() zum Verketten von Segmenten verwenden möchten. Holen Sie sich einen kostenlosen API-Schlüssel unter
https://openrouter.ai/keys.
Ein Befehl erledigt alles – venv, Abhängigkeiten, .env, Akzeptanztests und
Registrierung sowohl bei Claude Code als auch bei 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-..." -RegisterManuelles Äquivalent, falls Sie jeden Schritt lieber selbst sehen möchten:
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.pyAuf macOS / Linux gibt es kein install.ps1; verwenden Sie die manuellen Schritte mit
python3 -m venv .venv und .venv/bin/python, und registrieren Sie dann wie unten gezeigt.
Bei Claude Code registrieren
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: ConnectedBei Codex registrieren
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-voiceDer API-Schlüssel wird aus .env neben server.py gelesen, sodass er niemals in einer
Befehlszeile oder in der Konfigurationsdatei eines der CLIs erscheint. Sie können auch
OPENROUTER_API_KEY in der Umgebung exportieren – ein exportierter Wert hat Vorrang vor
.env.
Related MCP server: MCP MeloTTS Audio Generator
Werkzeuge
Werkzeug | Was es tut |
| Konfigurations- und Schlüsselstatus. Nur kostenloser Auth-Test, rendert niemals Audio. |
| Das Hauptwerkzeug. Text -> lokale Audiodatei. |
| Teilt ein langes Skript in Segmente, rendert jedes und verkettet sie mit FFmpeg, falls verfügbar. |
| Kurzes Beispiel, geschrieben in |
| Jedes OpenRouter-Modell mit |
| Live-Provider / Stufe / Preis / Voice-Cloning-Unterstützung für ein Modell. |
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 = "",
)Gibt zurück:
{
"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-..."
}Audiobytes werden auf die Festplatte geschrieben und niemals base64-kodiert über MCP zurückgegeben – der Punkt ist eine echte Datei für FFmpeg.
Konfiguration
Alle Einstellungen sind Umgebungsvariablen (siehe .env.example):
Variable | Standard | Hinweise |
| — | Erforderlich. Wird nie protokolliert oder zurückgegeben. |
|
| |
| leer | Fish Audio dokumentiert keine voreingestellten Voice-IDs; leer lassen. |
|
|
|
|
| |
| leer | Wird nur gesendet, wenn gesetzt. |
|
| Wird als |
|
| Wird verwendet, wenn der Aufrufer keinen |
| leer | Leer lassen. Nur setzen, wenn Sie akzeptieren, für ein kostenpflichtiges Modell abgerechnet zu werden, wenn das kostenlose nicht verfügbar ist. |
Was die API tatsächlich unterstützt
Verifiziert gegen die Live-OpenRouter-Speech-API und Models-API (2026-08-25), nicht abgeleitet von der älteren OpenAI-TTS-API:
Endpunkt
POST https://openrouter.ai/api/v1/audio/speechgibt einen rohen Audio-Byte-Stream zurück. Nur Nicht-200-Antworten enthalten JSON.Top-Level-Felder:
model,input,voice,response_format,speed,input_references,provider.response_formatistmp3oderpcm. Die API standardmäßig aufpcm, daher sendet dieser Server das Format immer explizit.instructionsist kein Top-Level-Feld. Es ist eine OpenAI-Provider-Option (provider.options.openai.instructions). Fish Audio dokumentiert keine Provider-Optionen, daher wirdinstructionsfür Fish-Modelle verworfen und inwarningszurückgemeldet – es werden niemals erfundene Felder gesendet.speedwird nur von einigen Providern (OpenAI, Azure) berücksichtigt; es wird anderswo verworfen, anstatt serverseitig stillschweigend ignoriert zu werden.Fish Audio hat keine voreingestellten Voice-IDs (
alloy/nova/shimmergehören zu OpenAI). Lassen Sievoiceleer.Voice-Cloning ist verfügbar: Die Endpoints-API meldet
supports_voice_cloning: truefürfish-audio/s2.1-pro-free:free. Es ist zustandslos – Sie übergeben bei jeder Anfrage ein Base64-Audiobeispiel ininput_references. Es gibt keine persistentevoice_idzu erstellen, daher hat dieser Server keinclone_voice-Werkzeug; verwenden Sie stattdessenreference_audio_pathbeirender_voiceover.Attributions-Header sind
HTTP-RefererundX-OpenRouter-Title.
Grenzen des kostenlosen Modells
fish-audio/s2.1-pro-free:free ist eine kostenlose Variante:
20 Anfragen/Minute, 50 Anfragen/Tag (1000/Tag, sobald ≥ $10 Guthaben auf dem Konto gekauft wurden).
Verfügbarkeit, Warteschlangen und Latenz sind nicht garantiert.
Wenn das kostenlose Modell nicht verfügbar ist, gibt der Server einen klaren Fehler zurück. Er wechselt niemals zu einem kostenpflichtigen Modell, es sei denn, Sie setzen explizit
OPENROUTER_VOICE_FALLBACK_MODEL.
Vorübergehende Fehler (408, 429, 5xx, Netzwerkfehler) werden zweimal mit kurzem exponentiellem Backoff wiederholt. 400/401/403 werden nie wiederholt.
Tests
.\.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 und die Live-Hälfte von acceptance.py überspringen sauber ohne Schlüssel.
Ein Überspringen wird als SKIP gemeldet, niemals als PASS.
Sicherheit
Der API-Schlüssel befindet sich in
.env(git-ignoriert) oder in der Umgebung. Er wird nie protokolliert, nie in eine Befehlszeile geschrieben und nie über MCP zurückgegeben.health()undmodel_info()geben Konfiguration zurück, niemals Anmeldeinformationen.Der Server spricht nur stdio und bindet keinen TCP-Port.
Er führt keine Shell-Befehle aus Werkzeug-Eingaben aus. FFmpeg/ffprobe werden nur auf Dateien aufgerufen, die dieser Server gerade geschrieben hat, und nur, wenn sie vorhanden sind.
Dateischreibvorgänge gehen genau dorthin, wo der Aufrufer es verlangt (Codex muss in beliebige Kampagnenverzeichnisse schreiben), aber Verzeichnisse, ungültige Windows-Dateinamen und reservierte Gerätenamen werden abgelehnt, und
overwrite=Falseüberschreibt nie.
Lizenz
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