tts-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tts-mcpNarrate this in Malayalam using indicf5 voice anas and save as MP3."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
text-to-speech-mcp
A local text-to-speech MCP server for Claude and other MCP clients.
English narration with Kokoro (optional extra).
Malayalam narration with Indic Parler-TTS, IndicF5 (including voices cloned from a sample you have permission to use), Piper, or MMS.
Edit-ready output: Malayalam comes out as 48 kHz mono WAV, loudness-normalised to −14 LUFS with true peak ≤ −1 dBTP, with optional MP3.
Malayalam text front end: expands numbers, ₹/AED amounts, % and acronyms to words; normalises Unicode chillu characters; supports your own pronunciation lexicon.
Async job queue: one job at a time. A job can return a
job_idimmediately so agents can poll for progress, which avoids tool-call timeouts on long narrations.CPU/GPU detection: picks CUDA, Apple Silicon (MPS) or CPU and asks you to confirm, falling back to CPU if the accelerator isn't usable.
Runs entirely on your machine. Models download from Hugging Face on first use.
Install
macOS (Apple Silicon or Intel) and Linux:
curl -LsSf https://raw.githubusercontent.com/imaimai86/text-to-speech-mcp/main/install.sh | bashThe installer:
checks your system (OS, CPU, free disk);
installs uv, ffmpeg and espeak-ng if they're missing (asks first);
installs the server (
tts-mcp) and the setup tool (tts-mcp-setup);detects your CPU/GPU and asks you to confirm which device to use;
offers to register the server with Claude Desktop and Claude Code, backing up their config first;
runs a self-test.
It's safe to re-run. Useful flags:
Flag | Effect |
| Unattended: accept every prompt |
| Skip detection |
| Malayalam only; avoids the GPL-licensed English phonemizer |
| Don't register the server with Claude |
| Install from a local checkout |
| Reinstall even if already installed |
Gated models: Parler and IndicF5 need a Hugging Face login, plus accepting their terms on indic-parler-tts and IndicF5:
uv tool run --from huggingface_hub hf auth loginRelated MCP server: low-latency-tts-api-server-mcp
Use
Restart Claude Desktop, then ask, for example:
Narrate this in Malayalam with indicf5, voice anas, 20 steps, and export MP3: …
Tools
Tool | What it does |
| Malayalam text to WAV/MP3. Key inputs: |
| English (Kokoro) text to WAV/MP3. Inputs: |
| Predicted audio length and runtime; |
| Progress, ETA, |
| Manage the queue |
| Voices, per-job options with ranges, licence status |
Sync or async: run_async=true validates the request and returns a job_id in under a second.
A synchronous call whose estimated runtime exceeds about 45 s is queued automatically and also
returns a job_id, so it never times out. Invalid input (unknown voice, out-of-range steps, a file
that already exists without overwrite) returns an error immediately and queues nothing.
Your data
Everything lives in ~/tts-mcp/ (override with TTS_MCP_HOME):
config.json device and settings (written by tts-mcp-setup configure)
output/ generated audio; output/jobs/ holds job records
voices/ saved IndicF5 voices: <name>.wav (6–12 s of clean speech) + <name>.txt (exact transcript)
lexicon.json your pronunciation overridesSetup commands
tts-mcp-setup configure [--device auto|cpu|mps|cuda] [--yes] # re-detect and confirm the device
tts-mcp-setup register | unregister # Claude Desktop / Claude Code
tts-mcp-setup doctor # show config, check dependencies
tts-mcp-setup uninstall [--purge] # remove the tool (--purge also deletes ~/tts-mcp)
tts-mcp --self-test [--full] # end-to-end check (--full also synthesises English)Performance
Measured on an Apple M1 with 16 GB RAM. RTF is synthesis time ÷ audio length; lower is faster.
Engine | RTF |
IndicF5 on MPS, 16 / 20 / 32 steps | ≈ 1.2 / 1.5 / 2.6 |
IndicF5 on CPU, 32 steps | ≈ 7 |
Parler (Malayalam) | ≈ 3.9 |
MMS | ≈ 0.13 |
Piper | ≈ 0.02 |
The job queue refines its time estimates from your machine's actual runs.
Licences
The code is MIT. Dependencies and models have their own licences, and not every engine is safe for monetised content: see THIRD_PARTY_LICENSES.md. In short, Parler is fine, IndicF5 needs review (a non-commercial runtime dependency), and Piper and MMS are not allowed.
Development
uv sync --locked --extra dev
uv run pytest
uv run python scripts/licence_report.py --check # licence audit of the core installLimitations
The CUDA path is covered by unit tests with mocks; it hasn't been run on NVIDIA hardware.
Windows isn't supported.
Cancelling a running job takes effect after the current chunk. For IndicF5 a chunk is one paragraph.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted text-to-speech MCP server: 66 voices in 9 languages, long-form narration, podcasts.
AI voice generation: text-to-speech and voice cloning from any MCP client.
MCP server exposing the AceDataCloud Fish Audio API (text-to-speech with voice conditioning)
MCP server for Text-to-Speech
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides text-to-speech conversion through a unified MCP interface, supporting both local Kokoro and cloud OpenAI TTS engines with streaming audio, voice selection, and customization via natural language instructions.7-
- FlicenseNot gradedqualityBmaintenanceA low-latency text-to-speech MCP server that uses local Kokoro GGUF inference via TTS.cpp, providing say, get_voices, and get_status tools for AI agents to synthesize speech and manage playback queues.-
- AlicenseAqualityBmaintenanceText to speech in 149 languages: MP3 links from any assistant. Free without an account. 2,253 voices; PRO adds HD voices, WAV, dialogue with a voice per speaker, Script mode timing and transcription.720 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to narrate internal thoughts, announce tool actions, and speak final responses aloud through local cross-platform text-to-speech. It exposes dedicated audio tools over stdio JSON-RPC for MCP-compatible clients.MIT