Say (Text-to-Speech) MCP server

Provides text-to-speech capabilities through both native system voices and ElevenLabs integration, enabling vocalization of responses without leaving the conversation interface.
Back to servers
Setup instructions
Provider
blacktop
Release date
Mar 24, 2025
Language
Go
Stats
16 stars

The MCP Server for TTS (Text-to-Speech) allows you to add speech capabilities to applications like Claude Desktop and Cursor IDE. It provides four different text-to-speech tools that can be accessed through the Model Context Protocol.

Installation

Prerequisites

Before installing, make sure you have:

  • Go installed on your system
  • API keys for any cloud services you plan to use (ElevenLabs, Google AI, or OpenAI)

Install from Source

Install the MCP TTS server directly using Go:

go install github.com/blacktop/mcp-tts@latest

Configuration

Setting Up API Keys

To use the cloud-based TTS services, you'll need to configure the appropriate API keys:

  • For ElevenLabs TTS: ELEVENLABS_API_KEY and optionally ELEVENLABS_VOICE_ID
  • For Google TTS: GOOGLE_AI_API_KEY or GEMINI_API_KEY
  • For OpenAI TTS: OPENAI_API_KEY and optionally OPENAI_TTS_INSTRUCTIONS

Configuring Claude Desktop

Add the MCP TTS server to your Claude Desktop configuration:

{
  "mcpServers": {
    "say": {
      "command": "mcp-tts",
      "env": {
        "ELEVENLABS_API_KEY": "your_elevenlabs_key",
        "ELEVENLABS_VOICE_ID": "1SM7GgM6IMuvQlz2BwM3",
        "GOOGLE_AI_API_KEY": "your_google_ai_key",
        "OPENAI_API_KEY": "your_openai_key",
        "OPENAI_TTS_INSTRUCTIONS": "Speak in a cheerful and positive tone",
        "MCP_TTS_SUPPRESS_SPEAKING_OUTPUT": "true"
      }
    }
  }
}

Suppressing "Speaking:" Output

By default, TTS tools return a message like "Speaking: [text]" when speech completes. To suppress this and return only "Speech completed":

Using an environment variable:

export MCP_TTS_SUPPRESS_SPEAKING_OUTPUT=true

Using a command line flag:

mcp-tts --suppress-speaking-output

Usage

Available TTS Tools

say_tts (macOS Only)

Uses the built-in macOS say command for text-to-speech:

{
  "name": "say_tts",
  "arguments": {
    "text": "Hello, world!",
    "voice": "Alex",
    "rate": 200
  }
}

Parameters:

  • text: The text to speak
  • voice: (Optional) System voice to use
  • rate: (Optional) Speaking rate (default: 200)

elevenlabs_tts

Uses ElevenLabs API for high-quality speech synthesis:

{
  "name": "elevenlabs_tts",
  "arguments": {
    "text": "Hello from ElevenLabs!",
    "voice": "Bella"
  }
}

Parameters:

  • text: The text to speak
  • voice: (Optional) ElevenLabs voice ID or name

google_tts

Uses Google's Gemini TTS models for natural speech:

{
  "name": "google_tts",
  "arguments": {
    "text": "Hello from Google TTS!",
    "voice": "Kore",
    "model": "gemini-2.5-flash-preview-tts"
  }
}

Parameters:

  • text: The text to speak
  • voice: (Optional) Google voice name (e.g., "Kore", "Puck", "Charon", etc.)
  • model: (Optional) TTS model to use

Available voices include Zephyr, Puck, Charon, Kore, Fenrir, Leda, Orus, Aoede, Callirhoe, Autonoe, Enceladus, Iapetus, and many others.

openai_tts

Uses OpenAI's Text-to-Speech API with various voice options:

{
  "name": "openai_tts",
  "arguments": {
    "text": "Hello from OpenAI TTS!",
    "voice": "nova",
    "model": "tts-1",
    "speed": 1.2,
    "instructions": "Speak in a cheerful and positive tone"
  }
}

Parameters:

  • text: The text to speak
  • voice: (Optional) OpenAI voice ID (default: "alloy")
  • model: (Optional) TTS model (default: "gpt-4o-mini-tts")
  • speed: (Optional) Speaking speed from 0.25x to 4.0x (default: 1.0x)
  • instructions: (Optional) Custom voice instructions

Available voices include alloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer, and verse.

Testing

You can test the MCP TTS server directly with JSON requests:

Testing macOS TTS

cat test/say.json | mcp-tts --verbose

Testing Google TTS

cat test/google_tts.json | mcp-tts --verbose

Testing OpenAI TTS

cat test/openai_tts.json | mcp-tts --verbose

Command Line Options

mcp-tts --help

Available flags:

  • --help or -h: Display help information
  • --suppress-speaking-output: Suppress 'Speaking:' text output
  • --verbose or -v: Enable verbose debug logging

How to install this MCP server

For Claude Code

To add this MCP server to Claude Code, run this command in your terminal:

claude mcp add-json "say" '{"command":"mcp-tts","env":{"ELEVENLABS_API_KEY":"********","ELEVENLABS_VOICE_ID":"1SM7GgM6IMuvQlz2BwM3","GOOGLE_AI_API_KEY":"********","OPENAI_API_KEY":"********","OPENAI_TTS_INSTRUCTIONS":"Speak in a cheerful and positive tone","MCP_TTS_SUPPRESS_SPEAKING_OUTPUT":"true"}}'

See the official Claude Code MCP documentation for more details.

For Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "say": {
            "command": "mcp-tts",
            "env": {
                "ELEVENLABS_API_KEY": "********",
                "ELEVENLABS_VOICE_ID": "1SM7GgM6IMuvQlz2BwM3",
                "GOOGLE_AI_API_KEY": "********",
                "OPENAI_API_KEY": "********",
                "OPENAI_TTS_INSTRUCTIONS": "Speak in a cheerful and positive tone",
                "MCP_TTS_SUPPRESS_SPEAKING_OUTPUT": "true"
            }
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.

For Claude Desktop

To add this MCP server to Claude Desktop:

1. Find your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

2. Add this to your configuration file:

{
    "mcpServers": {
        "say": {
            "command": "mcp-tts",
            "env": {
                "ELEVENLABS_API_KEY": "********",
                "ELEVENLABS_VOICE_ID": "1SM7GgM6IMuvQlz2BwM3",
                "GOOGLE_AI_API_KEY": "********",
                "OPENAI_API_KEY": "********",
                "OPENAI_TTS_INSTRUCTIONS": "Speak in a cheerful and positive tone",
                "MCP_TTS_SUPPRESS_SPEAKING_OUTPUT": "true"
            }
        }
    }
}

3. Restart Claude Desktop for the changes to take effect

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later