Text to speech inside Claude, ChatGPT and Cursor
Add one address to your assistant and it can read text aloud with 2,253 voices in 149 languages, then hand you the MP3. Free with the standard voices; your FreeTTS account brings your plan, HD voices and the Script mode tools.
https://mcp.freetts.org/mcpYou: Read this in German and give me the MP3: “Guten Abend, und willkommen.”
Assistant: calls freetts text_to_speech
Assistant: Here it is, read by Katja: mcp.freetts.org/audio/…mp3 (4 seconds).
Add it to your client
The address is the same everywhere. Pick your client.
Claude Code
In a terminal:
claude mcp add --transport http freetts https://mcp.freetts.org/mcpRun /mcp inside a session to connect your FreeTTS account with the sign-in flow.
Claude (web, desktop, mobile)
Settings, Connectors, Add custom connector, paste the address:
https://mcp.freetts.org/mcpFree tools work at once. When a tool needs your account, Claude shows Connect and a FreeTTS page asks for your key.
Cursor
Install in CursorPress the button, or add to ~/.cursor/mcp.json:
{
"mcpServers": {
"freetts": { "url": "https://mcp.freetts.org/mcp" }
}
}VS Code and GitHub Copilot
Install in VS CodePress the button, or add to .vscode/mcp.json:
{
"servers": {
"freetts": { "type": "http", "url": "https://mcp.freetts.org/mcp" }
}
}Codex CLI and ChatGPT desktop
In a terminal (they share one config):
codex mcp add freetts --url https://mcp.freetts.org/mcpChatGPT
Add to ChatGPTFreeTTS is a published ChatGPT plugin: press the button and connect. In Developer Mode you can also add the address by hand:
https://mcp.freetts.org/mcpThe plugin asks for a FreeTTS key when you connect. A free account has one.
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"freetts": { "serverUrl": "https://mcp.freetts.org/mcp" }
}
}Gemini CLI
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"freetts": { "httpUrl": "https://mcp.freetts.org/mcp" }
}
}Using your account in a client without a sign-in flow: the README on GitHub shows how to pass your FreeTTS key as a request header. Keys are made in the dashboard under API keys, and never belong in a URL.
What the assistant can do
text_to_speechText in, MP3 link out. Picks a voice for the language if you name none.
Freelist_voicesVoices for a language or search word, with ids.
Freesuggest_voiceThree voices for a language and a use, with reasons.
Freecheck_usagePlan, characters left, limits.
Freedialogue_to_speechName: line script, a voice per speaker, one file.
PROscript_to_tracksScript mode: exact (pause 2), (beep), (ding), TRACK: files, CUE: voice, scenes.
PROtranscribe_audioA public audio URL in, text out.
PROFree, and with an account
Without an account
- Standard voices, 318 of them, in every language.
- 2,000 characters a call and a day per connection, 10 requests a minute.
- A short spoken “FreeTTS” tag at the end of each file.
- Files kept one hour on freetts.org.
- Metered by the connection's address, like a website visitor.
With a FreeTTS account
- Free account: 5,000 characters a day.
- PRO: HD and Signature voices, no tag, 10,000 characters a call, 1,000,000 a month, WAV, files kept 30 days.
- PRO: dialogue_to_speech, script_to_tracks (Script mode timing) and transcribe_audio.
- Disconnect any time by deleting the key in the dashboard.
Text sent through the server goes to FreeTTS and its speech providers exactly as text typed on the website, under the privacy policy. The server logs tool name, plan, character count and outcome, never the text.
Questions
A server that speaks the Model Context Protocol, the open standard assistants use to call outside tools. Add its address to Claude, ChatGPT, Cursor, VS Code, Codex or another MCP client and the assistant gains a text_to_speech tool: it sends the text to FreeTTS and hands you a link to the MP3.