Say (Text-to-Speech)

by blacktop

5 stars
426 downloads
Not rated
GitHub

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

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

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Say (Text-to-Speech)
    Command (node, npx, python, etc.) mcp-tts
    Environment
    • 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.

  4. 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">mcp-tts Logo</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).

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.