speak_as_personaLABSCO SUMMARY
Speech out of the model and into the room, with one binary.
The useful design choice is aggregation: you configure whichever providers you have keys for, and each becomes a tool, with personas sitting on top so the model picks a voice by name rather than by id. Keys live in a config file outside the repo, so the same binary serves every client on the machine without pasting secrets into each one.
What it is
A Go MCP server that takes text from the model, synthesizes it with a remote or local text-to-speech provider, and pipes the audio straight to the host system's native audio driver.
What you get
- Playback on the host itself, not a file you have to open afterwards
- A command tool exposed automatically for each provider you have configured
- Persona routing — map a semantic name to a provider and voice so the model calls
speak_as_personainstead of juggling voice ids - Generated audio cached to an XDG cache directory, so a repeated line does not cost a second synthesis
- Provider choice across FishAudio, ElevenLabs, Neets AI, PlayHT, Cartesia, OpenAI, Azure and local APIs
Requirements
Download the prebuilt binary for your OS from the releases page, or build from source with Go 1.22+. The server reads an .env file from your OS configuration directory — %APPDATA%\tts-mcp\.env on Windows, ~/.config/tts-mcp/.env on Linux, ~/Library/Application Support/tts-mcp/.env on macOS — holding a key per provider, such as FISHAUDIO_API_KEY or ELEVENLABS_API_KEY. The bundled tts-mcp-config CLI writes that file for you.
Setup effort
Follow the published steps
USE CASES
Listening to a long answer instead of reading it
Ask the assistant to speak the summary; the audio plays through your usual output device.
Giving different roles different voices
Define a persona per role in the config, then refer to the persona by name in the prompt.
Trying a provider before committing to it
Add one more key to the env file; the matching command tool appears without any other change.
1 tool
Listed in project docs. Your client may show a different list.
BEFORE YOU INSTALL
What to know first
Tools you get
1 tool named in the project's documentation. The server adds command tools for each TTS provider you configure (FishAudio, ElevenLabs, Neets AI, PlayHT, Cartesia, OpenAI, Azure, local APIs), so the count grows with your keys. You need keys only for providers you use.
Requires
An API key for each TTS provider you use, such as FISHAUDIO_API_KEY or ELEVENLABS_API_KEY, in tts-mcp's .env file
INSTALLATION
Connect your client
Server setup
Download the pre-compiled tts-mcp binary matching your OS from the Releases page (https://github.com/leo9iota/tts-mcp/releases) — each release also ships the tts-mcp-config binary
Create the .env file tts-mcp requires in your OS configuration directory (%APPDATA%\tts-mcp\.env on Windows, ~/.config/tts-mcp/.env on Linux, ~/Library/Application Support/tts-mcp/.env on macOS): run the included tts-mcp-config CLI to initialize it, or populate it manually with a key for each provider you use, such as FISHAUDIO_API_KEY or ELEVENLABS_API_KEY
Add the server to your client, pointing it at the absolute path of the downloaded tts-mcp binary
MCP Clients
Claude Desktop, Claude Code
{
"mcpServers": {
"tts-mcp": {
"command": "<YOUR_PATH_TO_EXTRACTED_TTS_MCP>"
}
}
}Cursor, Antigravity
Add the executable to your MCP Servers configuration list with Name tts-mcp, Type command and Command <YOUR_PATH_TO_EXTRACTED_TTS_MCP>