gemini-tts
Generates speech audio from text using Google Gemini's text-to-speech capabilities, with configurable voice, style, speed, and accent, saving output as .wav files.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gemini-ttsGenerate speech saying 'Hello, this is a test' and save it as test.wav"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Gemini TTS MCP — Local Setup
This repository contains the Gemini TTS MCP server used by Claude Desktop.
This guide explains how to set it up locally on macOS.
1. Requirements
You need:
macOS
Claude Desktop
Node.js
npm
A Google Gemini API key
Related MCP server: MCP Audio Server
2. Clone the Repository
Open Terminal and clone the repository:
git clone YOUR_REPOSITORY_URLThen enter the project:
cd YOUR_REPOSITORY_NAMEReplace
YOUR_REPOSITORY_URLandYOUR_REPOSITORY_NAMEwith the actual repository information.
3. Check Node.js
Check whether Node.js is already installed:
node --versionAlso check npm:
npm --versionIf both commands return a version number, you can continue.
If Node.js is not installed, install it before continuing.
4. Install Dependencies
Inside the repository folder, run:
npm installThis installs all dependencies required by the MCP server.
5. Create the .env File
The MCP server needs a Gemini API key.
Inside the project folder, create a .env file:
touch .envOpen it:
nano .envAdd:
GEMINI_API_KEY=YOUR_GEMINI_API_KEYReplace YOUR_GEMINI_API_KEY with your actual Gemini API key.
Save the file:
CTRL + O
ENTER
CTRL + XGetting a Gemini API Key
Create a Gemini API key through Google AI Studio:
https://aistudio.google.com/apikey
Do not commit the .env file to Git.
The repository should already contain .env in .gitignore.
6. Test the MCP Server
From inside the project directory, run:
node src/server.jsIf the server starts without an error about a missing GEMINI_API_KEY, the setup is working.
The server may not display a normal message and may simply keep running.
This is normal.
Stop it with:
CTRL + C7. Configure Claude Desktop
Claude Desktop needs to know where the MCP server is located.
The configuration file is:
~/Library/Application Support/Claude/claude_desktop_config.jsonYou can open it with:
open ~/Library/Application\ Support/Claude/claude_desktop_config.jsonIf the file does not exist, create it.
8. Find Your Node.js Path
Run:
which nodeYou will get something similar to:
/Users/YOUR_USERNAME/.nvm/versions/node/v24.15.0/bin/nodeCopy the path returned by your Mac.
9. Find the MCP Project Path
Inside the repository folder, run:
pwdFor example:
/Users/YOUR_USERNAME/mcp-servers/gemini-tts-mcpYour MCP server file will therefore be:
/Users/YOUR_USERNAME/mcp-servers/gemini-tts-mcp/src/server.js10. Add the MCP Server to Claude Desktop
Add the following to:
claude_desktop_config.jsonExample:
{
"mcpServers": {
"gemini-tts": {
"command": "/Users/YOUR_USERNAME/.nvm/versions/node/v24.15.0/bin/node",
"args": [
"/Users/YOUR_USERNAME/mcp-servers/gemini-tts-mcp/src/server.js"
]
}
}
}Important
Replace both paths with the paths from your own Mac.
You can get them with:
which nodeand:
pwd11. If You Already Have Other MCP Servers
Do not replace your existing configuration.
For example, if you already have:
{
"mcpServers": {
"other-server": {
"command": "..."
}
}
}add gemini-tts alongside it:
{
"mcpServers": {
"other-server": {
"command": "..."
},
"gemini-tts": {
"command": "/Users/YOUR_USERNAME/.nvm/versions/node/v24.15.0/bin/node",
"args": [
"/Users/YOUR_USERNAME/mcp-servers/gemini-tts-mcp/src/server.js"
]
}
}
}12. Restart Claude Desktop
Completely quit Claude Desktop:
CMD + QThen open Claude Desktop again.
13. Verify the MCP Connection
In Claude Desktop, go to:
Settings
→ DeveloperYou should see:
gemini-ttsThe server should show as connected.
The available tools should include:
generate_speech
get_audio_files14. Test Gemini TTS
Open a new Claude conversation and ask:
Use the
gemini-ttsMCP server to generate speech.Generate a test using exactly this text:
"This is a test of the Gemini text to speech setup."
Save the file as:
test-voice
Claude should use the generate_speech tool.
The generated audio should be saved inside the project's:
audio/folder.
15. Generated Audio
Generated .wav files are stored in:
audio/For example:
audio/
├── test-voice.wav
├── college-vs-university.wav
└── scampi-vs-shrimps.wavYou can open the audio folder in Finder with:
open audio16. Default TTS Settings
The MCP server is already configured with the following defaults:
Voice:
AlgenibVocal style: subtle smile
Speaking speed: rapid-fire
Accent: neutral English
Style: energetic, natural and clear
Target format: short-form content such as TikTok and Instagram
No additional configuration is required.
17. Troubleshooting
GEMINI_API_KEY is missing
Make sure the .env file exists inside the repository:
ls -laYou should see:
.envCheck it with:
cat .envIt should contain:
GEMINI_API_KEY=YOUR_GEMINI_API_KEYServer disconnected
First test the server manually:
node src/server.jsIf an error appears, fix that error first.
Also check:
which nodeand:
pwdThen make sure the paths in claude_desktop_config.json are correct.
Claude does not show gemini-tts
Check:
The MCP configuration JSON is valid.
The Node.js path is correct.
The
server.jspath is correct..envexists.GEMINI_API_KEYexists in.env.Claude Desktop has been completely restarted.
18. Quick Setup Checklist
Clone repository
Open repository in Terminal
Run
npm installCreate
.envAdd
GEMINI_API_KEYRun
node src/server.jssuccessfullyRun
which nodeRun
pwdAdd
gemini-ttsto Claude Desktop's MCP configurationRestart Claude Desktop
Check
Settings → DeveloperConfirm
gemini-ttsis connectedGenerate a test voice
Done
Once gemini-tts appears as connected in Claude Desktop, no further setup is required.
Claude can now generate Gemini TTS audio through the MCP server.
### One important change I'd make to your repository
Since **you're giving her the repository**, I'd actually recommend that she clones it into a simple, predictable location, e.g.:
```text
~/mcp-servers/gemini-tts-mcpThen the setup becomes very easy and your Claude config can follow the same structure on both Macs.
Also, don't put your own .env into the repository. The repository should contain something like:
gemini-tts-mcp/
├── src/
│ └── server.js
├── audio/
├── package.json
├── package-lock.json
├── .gitignore
└── README.mdand each person creates their own .env locally with their own Gemini API key.
Available Tools
2 toolsgenerate_speechA
Generate natural English narration audio using Gemini TTS. The default voice is Algenib with a rapid-fire, slightly smiling, energetic delivery and a neutral English accent. The resulting audio is saved as a WAV file.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The exact script that should be spoken. Do not include instructions or explanations. | |
| style | No | Optional additional speaking style instructions. | |
| voice | No | Gemini TTS voice. Defaults to Algenib. | Algenib |
| filename | No | Optional filename without extension. Example: college-vs-university |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral outcomes: the audio is generated via Gemini TTS, uses a specific default voice, and is saved as a WAV file. It could mention return behavior or file location, but the core side effect is explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main action, and contains no redundant or filler text. The extra voice detail is relevant and placed naturally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple generation tool with no output schema, the description is mostly complete: it states the action, default voice, output format, and optional filename. It does not specify the returned value or default file name behavior, but this is a minor gap given the sibling get_audio_files context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds helpful color about the default voice and output format, but the parameters themselves are already well documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Generate natural English narration audio') and resource ('using Gemini TTS'), and differentiates from the sibling tool get_audio_files by focusing on creation rather than retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when speech audio needs to be generated—but does not explicitly contrast it with get_audio_files or state when not to use it. Usage is inferable but not directly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audio_filesA
List all WAV audio files generated by the Gemini TTS MCP.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to describe safety or side effects, and the description only says 'List all WAV audio files.' It does not explicitly state that the operation is read-only, nor does it disclose any permissions or potential side effects. The description carries the full burden here and falls short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It effectively conveys the tool's purpose without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema, and a straightforward list operation), the description is complete. It tells the agent exactly what the tool does, which is sufficient for calling it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the baseline score is 4. The description does not need to add parameter meaning because there is nothing to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'all WAV audio files generated by the Gemini TTS MCP.' It is specific about the tool's scope and implicitly distinguishes it from the sibling tool generate_speech, which creates such files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool versus the sibling generate_speech. While the function name and description make it obvious that this lists files and the sibling creates them, there is no explicit guidance or condition for choosing this tool over the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
generate_speech - First observed
get_audio_files
TDQS
Scored across 2 tools
The two tools are entirely distinct: one generates speech, the other lists generated files. There is no overlap or ambiguity in their purposes.
Both tools follow the verb_noun pattern: generate_speech and get_audio_files. The naming is consistent, clear, and predictable.
Two tools is on the thin side for a TTS server, but they cover the core generate and retrieve workflow. It feels slightly minimal rather than unreasonably sparse.
The server covers the essential TTS lifecycle: generating speech and listing outputs. Minor gaps exist such as no delete operation or voice selection flexibility, but agents can work around them for basic use.
Maintenance
Related MCP Connectors
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
AI voice generation: text-to-speech and voice cloning from any MCP client.
The Listenetic MCP server is a remote, cloud-hosted server that enables AI assistants like ChatGPT and Claude to convert articles, documents, websites, and videos into high-quality AI-generated audio. It provides multi-format support for text and binary files, natural-sounding text-to-audio conversion using AI, and specialized processing for SSML, markup, markdown, and various media formats through three core tools: listentic_supported_mimetypes, listentic_add_content_text, and listentic_add_content_binary.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude Desktop and other MCP clients to generate images, videos, music, and audio using Fal.ai models. Supports text-to-image generation, video creation, music composition, text-to-speech, audio transcription, and image enhancement through natural language prompts.1856MIT
- AlicenseNot gradedqualityDmaintenanceEnables text-to-speech conversion with smart language detection (using Google TTS for Chinese) and audio file playback with playback controls for Claude Desktop.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables text-to-speech conversion using OpenAI's TTS API, with inline audio playback and history within MCP hosts like Claude.7 npmBSD 4-Clause "Original" or "Old"

leanvox-mcpofficial
AlicenseNot gradedqualityDmaintenanceEnables text-to-speech generation, voice cloning, dialogue creation, and other TTS operations through natural language in MCP-compatible AI assistants.12 npmMIT