LabscoMCP early access ↗
blacktopMCP SERVER

Text-to-Speech (TTS)

Let the assistant speak — through macOS `say`, a local MLX model, ElevenLabs, Gemini or OpenAI.

by blacktop ↗Speech Synthesis & TranscriptionCommunity

LABSCO SUMMARY

Five voices, one decision per call.

Because each backend is its own tool, the cheap local one and the expensive hosted one sit side by side and you choose per message. The serialisation is the quiet good idea: several agents speaking at once is unintelligible, so by default they queue.

What it is

A Go MCP server that adds text-to-speech to Claude Desktop, Claude Code, Cursor and others. Five backends are registered as separate tools, so you pick per call whether the voice is local and free or hosted and better.

What you get

  • say_tts — the macOS say binary and its built-in system voices, with no key of any kind
  • voice_tts — Qwen3-TTS through MLX via the local voice-say CLI, keeping text and audio on the Mac; it reloads the model each call, so it suits summaries rather than time-critical alerts, and takes voice, tier, style and describe
  • elevenlabs_tts — ElevenLabs voices, defaulting to the premade voice EXAVITQu4vr4xnSDxMaL
  • google_tts — Gemini TTS with 30 named voices, from Achernar to Zubenelgenubi
  • openai_tts — named voices from alloy through verse across gpt-4o-mini-tts, tts-1 and tts-1-hd, with speed from 0.25x to 4.0x and free-text delivery instructions
  • One voice at a time by default — a mutex serialises speech inside the process and across multiple Claude Desktop windows through a system-wide file lock; MCP_TTS_ALLOW_CONCURRENT=true if you want them overlapping
  • Audio saved to disk with MCP_TTS_OUTPUT_DIR, and MCP_TTS_NO_PLAY=true to save without playing
  • MCP_TTS_SUPPRESS_SPEAKING_OUTPUT=true to stop the "Speaking:" line appearing in the transcript

Requirements

A Go binary, with Docker configurations documented too. say_tts needs macOS and nothing else. The hosted backends need their keys: ELEVENLABS_API_KEY, GOOGLE_AI_API_KEY or GEMINI_API_KEY, and OPENAI_API_KEY. voice_tts only registers when voice-say is resolvable on PATH, and it plays directly rather than writing files. Free-tier ElevenLabs keys are limited to premade voices — Voice Library voices return 402 paid_plan_required.

Setup effort

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