Say (Text-to-Speech)
About
Provides text-to-speech capabilities through both native system voices and ElevenLabs integration, enabling vocalization of responses without leaving the conversation interface.
Details
- Author
- blacktop
- Repository
- blacktop/mcp-tts
- GitHub stars
- 5
- Downloads
- 426
- License
- MIT License
- Categories
- Developer Tools, Design, File Management, AI, Media, Frontend, Infrastructure, Other
- Tags
- #integration
Jump to
- Four TTS providers: macOS say, ElevenLabs, Google Gemini, OpenAI
- Sequential (default) or concurrent speech via --sequential-tts flag
- Save audio to disk with MCP_TTS_OUTPUT_DIR and optional --no-play
- Suppress "Speaking:" output with MCP_TTS_SUPPRESS_SPEAKING_OUTPUT
- OpenAI TTS supports speed control (0.25x–4.0x) and custom voice instructions
- Multi-instance protection prevents overlapping speech across Claude Desktop instances
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Say (Text-to-Speech)Command (node, npx, python, etc.)mcp-ttsEnvironment-
OPENAI_API_KEY
******** -
GOOGLE_AI_API_KEY
******** -
ELEVENLABS_API_KEY
******** -
ELEVENLABS_VOICE_ID
EXAVITQu4vr4xnSDxMaL -
OPENAI_TTS_INSTRUCTIONS
Speak in a cheerful and positive tone -
MCP_TTS_ALLOW_CONCURRENT
false -
MCP_TTS_SUPPRESS_SPEAKING_OUTPUT
true
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
OPENAI_API_KEY
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
go install github.com/blacktop/mcp-tts@latest
```bash
❱ mcp-tts --help
TTS (text-to-speech) MCP Server.
Provides multiple text-to-speech services via MCP protocol:
• say_tts - Uses macOS built-in 'say' command (macOS only)
• voice_tts - Uses local Qwen3-TTS through voice-say (when available on PATH)
• elevenlabs_tts - Uses ElevenLabs API for high-quality speech synthesis
• google_tts - Uses Google's Gemini TTS models for natural speech
• openai_tts - Uses OpenAI's TTS API with various voice options
Each tool supports different voices, rates, and configuration options.
Requires appropriate API keys for cloud-based services.
Designed to be used with the MCP (Model Context Protocol).
say_tts
Uses the macOS 'say' binary to speak the text with built-in system voices.
voice_tts
Uses the local 'voice-say' CLI from Voice to run Qwen3-TTS through MLX. Supports parameters for voice, tier, style, and describe.
elevenlabs_tts
Uses the ElevenLabs text-to-speech API to speak the text with premium AI voices.
google_tts
Uses Google's Gemini TTS models to speak the text with various high-quality voices.
openai_tts
Uses OpenAI's text-to-speech API to speak the text with multiple natural-sounding voices and supports speed control and custom voice instructions.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"say (text-to-speech)": {
"env": {
"OPENAI_API_KEY": "********",
"GOOGLE_AI_API_KEY": "********",
"ELEVENLABS_API_KEY": "********",
"ELEVENLABS_VOICE_ID": "EXAVITQu4vr4xnSDxMaL",
"OPENAI_TTS_INSTRUCTIONS": "Speak in a cheerful and positive tone",
"MCP_TTS_ALLOW_CONCURRENT": "false",
"MCP_TTS_SUPPRESS_SPEAKING_OUTPUT": "true"
},
"args": [],
"command": "mcp-tts"
}
}
}
Linux
{
"env": {
"OPENAI_API_KEY": "********",
"GOOGLE_AI_API_KEY": "********",
"ELEVENLABS_API_KEY": "********",
"ELEVENLABS_VOICE_ID": "EXAVITQu4vr4xnSDxMaL",
"OPENAI_TTS_INSTRUCTIONS": "Speak in a cheerful and positive tone",
"MCP_TTS_ALLOW_CONCURRENT": "false",
"MCP_TTS_SUPPRESS_SPEAKING_OUTPUT": "true"
},
"args": [],
"command": "mcp-tts"
}
Macos
{
"env": {
"OPENAI_API_KEY": "********",
"GOOGLE_AI_API_KEY": "********",
"ELEVENLABS_API_KEY": "********",
"ELEVENLABS_VOICE_ID": "EXAVITQu4vr4xnSDxMaL",
"OPENAI_TTS_INSTRUCTIONS": "Speak in a cheerful and positive tone",
"MCP_TTS_ALLOW_CONCURRENT": "false",
"MCP_TTS_SUPPRESS_SPEAKING_OUTPUT": "true"
},
"args": [],
"command": "mcp-tts"
}
Windows
{
"env": {
"OPENAI_API_KEY": "********",
"GOOGLE_AI_API_KEY": "********",
"ELEVENLABS_API_KEY": "********",
"ELEVENLABS_VOICE_ID": "EXAVITQu4vr4xnSDxMaL",
"OPENAI_TTS_INSTRUCTIONS": "Speak in a cheerful and positive tone",
"MCP_TTS_ALLOW_CONCURRENT": "false",
"MCP_TTS_SUPPRESS_SPEAKING_OUTPUT": "true"
},
"args": [
"/c",
"mcp-tts"
],
"command": "cmd"
}
<p align="center">
<a href="https://github.com/blacktop/mcp-tts">
</a>
<h1 align="center">mcp-tts</h1>
<h4><p align="center">MCP Server for TTS (Text-to-Speech)</p></h4>
<p align="center">
<a href="https://mcptoplist.com/server/mcp.so%2Fmcp-tts%2Fblackto" alt="Actions">
</a>
<a href="https://github.com/blacktop/mcp-tts/actions" alt="Actions">
</a>
<a href="https://github.com/blacktop/mcp-tts/releases/latest" alt="Downloads">
</a>
<a href="https://github.com/blacktop/mcp-tts/releases" alt="GitHub Release">
</a>
<a href="http://doge.mit-license.org" alt="LICENSE">
</a>
</p>
<br>
What? 🤔
Adds Text-to-Speech to things like Claude Desktop and Cursor IDE.
It registers the existing TTS tools, plus voice_tts when voice-say is available on PATH:
- say_tts
- voice_tts (when available)
- elevenlabs_tts
- google_tts
- openai_tts
say_tts
Uses the macOS say binary to speak the text with built-in system voices
voice_tts
Uses the local voice-say CLI from Voice to run Qwen3-TTS through MLX. Voice needs no API key and keeps text and audio on the Mac. The model reloads for every invocation, so startup typically takes several seconds; prefer it for summaries and announcements rather than time-critical alerts.
The tool is registered only when voice-say is resolvable on PATH. Optional parameters are:
- voice: preset voice Ryan or Aiden
- tier: small for faster 0.6B synthesis or large for higher-quality 1.7B synthesis
- style: free-text delivery guidance
- describe: free-text voice design; forces the 1.7B model and cannot be combined with voice
Voice plays audio directly and does not support --output-dir; with --no-play, calls fail without launching voice-say.
> [!WARNING]
> The Voice repository is currently private and will be released publicly soon, so the link requires access for now.
elevenlabs_tts
Uses the ElevenLabs text-to-speech API to speak the text with premium AI voices
google_tts
Uses Google's Gemini TTS models to speak the text with 30 high-quality voices. Available voices include:
Achernar, Achird, Algenib, Algieba, Alnilam, Aoede, Autonoe, Callirrhoe, Charon, Despina, Enceladus, Erinome, Fenrir, Gacrux, Iapetus, Kore, Laomedeia, Leda, Orus, Puck, Pulcherrima, Rasalgethi, Sadachbia, Sadaltager, Schedar, Sulafat, Umbriel, Vindemiatrix, Zephyr, Zubenelgenubi
openai_tts
Uses OpenAI's Text-to-Speech API to speak the text with 10 natural-sounding voices:
- alloy (Warm, conversational, modern)
- ash (Confident, assertive, slightly textured)
- ballad (Gentle, melodious, slightly lyrical)
- coral (Cheerful, fresh, upbeat)
- echo (Neutral, calm, balanced)
- fable (Storyteller-like, expressive)
- nova (Clear, precise, slightly formal)
- onyx (Deep, authoritative, resonant)
- sage (Soothing, empathetic, reassuring)
- shimmer (Bright, animated, playful)
- verse (Versatile, expressive)
Supports three quality models:
- gpt-4o-mini-tts - Default, optimized quality and speed
- tts-1 - Standard quality, faster generation
- tts-1-hd - High definition audio, premium quality
Additional features:
- Speed control from 0.25x to 4.0x (default: 1.0x)
- Custom voice instructions (e.g., "Speak in a cheerful and positive tone") via parameter or OPENAI_TTS_INSTRUCTIONS environment variable
Configuration
Sequential vs Concurrent TTS
By default, the TTS server enforces sequential speech operations - only one TTS request can play audio at a time. This prevents multiple agents from speaking simultaneously and creating an unintelligible cacophony. Subsequent requests will wait in a queue until the current speech completes.
Multi-Instance Protection: The mutex works both within a single MCP server process and across multiple Claude Desktop instances. When running multiple Claude Desktop terminals, they coordinate via a system-wide file lock to prevent overlapping speech.
To allow concurrent TTS operations (multiple speeches playing simultaneously):
Environment Variable:
export MCP_TTS_ALLOW_CONCURRENT=true
Command Line Flag:
mcp-tts --sequential-tts=false
> Note: Concurrent TTS may result in overlapping audio that's difficult to understand. Use this option only when you explicitly want multiple TTS operations to run simultaneously.
Suppressing "Speaking:" Output
By default, TTS tools return a message like "Speaking: [text]" when speech completes. This can interfere with LLM responses. To suppress this output:
Environment Variable:
export MCP_TTS_SUPPRESS_SPEAKING_OUTPUT=true
Command Line Flag:
mcp-tts --suppress-speaking-output
When enabled, tools return "Speech completed" instead of echoing the spoken text.
Saving Audio to Disk
Save TTS audio output to files instead of (or in addition to) playing them:
Environment Variables:
export MCP_TTS_OUTPUT_DIR=/path/to/audio # Save audio files to this directory
export MCP_TTS_NO_PLAY=true # Skip playback, only save (optional)
Command Line Flags:
mcp-tts --output-dir /path/to/audio # Save and play
mcp-tts --output-dir /path/to/audio --no-play # Save only, no playback
Files are saved with unique names: tts_{timestamp}_{hash}.{ext}
| Provider | Format |
|----------|--------|
| macOS say | AIFF |
| Voice | Playback only |
| ElevenLabs | MP3 |
| Google TTS | WAV |
| OpenAI TTS | MP3 |
Getting Started
Install
go install github.com/blacktop/mcp-tts@latest
```bash
❱ mcp-tts --help
TTS (text-to-speech) MCP Server.
Provides multiple text-to-speech services via MCP protocol:
• say_tts - Uses macOS built-in 'say' command (macOS only)
• voice_tts - Uses local Qwen3-TTS through voice-say (when available on PATH)
• elevenlabs_tts - Uses ElevenLabs API for high-quality speech synthesis
• google_tts - Uses Google's Gemini TTS models for natural speech
• openai_tts - Uses OpenAI's TTS API with various voice options
Each tool supports different voices, rates, and configuration options.
Requires appropriate API keys for cloud-based services.
Designed to be used with the MCP (Model Context Protocol).
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





