Skip to main content
Glama

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_URL

Then enter the project:

cd YOUR_REPOSITORY_NAME

Replace YOUR_REPOSITORY_URL and YOUR_REPOSITORY_NAME with the actual repository information.


3. Check Node.js

Check whether Node.js is already installed:

node --version

Also check npm:

npm --version

If 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 install

This 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 .env

Open it:

nano .env

Add:

GEMINI_API_KEY=YOUR_GEMINI_API_KEY

Replace YOUR_GEMINI_API_KEY with your actual Gemini API key.

Save the file:

CTRL + O
ENTER
CTRL + X

Getting 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.js

If 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 + C

7. 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.json

You can open it with:

open ~/Library/Application\ Support/Claude/claude_desktop_config.json

If the file does not exist, create it.


8. Find Your Node.js Path

Run:

which node

You will get something similar to:

/Users/YOUR_USERNAME/.nvm/versions/node/v24.15.0/bin/node

Copy the path returned by your Mac.


9. Find the MCP Project Path

Inside the repository folder, run:

pwd

For example:

/Users/YOUR_USERNAME/mcp-servers/gemini-tts-mcp

Your MCP server file will therefore be:

/Users/YOUR_USERNAME/mcp-servers/gemini-tts-mcp/src/server.js

10. Add the MCP Server to Claude Desktop

Add the following to:

claude_desktop_config.json

Example:

{
  "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 node

and:

pwd

11. 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 + Q

Then open Claude Desktop again.


13. Verify the MCP Connection

In Claude Desktop, go to:

Settings
→ Developer

You should see:

gemini-tts

The server should show as connected.

The available tools should include:

generate_speech
get_audio_files

14. Test Gemini TTS

Open a new Claude conversation and ask:

Use the gemini-tts MCP 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.wav

You can open the audio folder in Finder with:

open audio

16. Default TTS Settings

The MCP server is already configured with the following defaults:

  • Voice: Algenib

  • Vocal 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 -la

You should see:

.env

Check it with:

cat .env

It should contain:

GEMINI_API_KEY=YOUR_GEMINI_API_KEY

Server disconnected

First test the server manually:

node src/server.js

If an error appears, fix that error first.

Also check:

which node

and:

pwd

Then make sure the paths in claude_desktop_config.json are correct.


Claude does not show gemini-tts

Check:

  1. The MCP configuration JSON is valid.

  2. The Node.js path is correct.

  3. The server.js path is correct.

  4. .env exists.

  5. GEMINI_API_KEY exists in .env.

  6. Claude Desktop has been completely restarted.


18. Quick Setup Checklist

  • Clone repository

  • Open repository in Terminal

  • Run npm install

  • Create .env

  • Add GEMINI_API_KEY

  • Run node src/server.js successfully

  • Run which node

  • Run pwd

  • Add gemini-tts to Claude Desktop's MCP configuration

  • Restart Claude Desktop

  • Check Settings → Developer

  • Confirm gemini-tts is connected

  • Generate 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-mcp

Then 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.md

and each person creates their own .env locally with their own Gemini API key.

Available Tools

2 tools
generate_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe exact script that should be spoken. Do not include instructions or explanations.
styleNoOptional additional speaking style instructions.
voiceNoGemini TTS voice. Defaults to Algenib.Algenib
filenameNoOptional filename without extension. Example: college-vs-university

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 2 tool updatesv1.0.0
    • First observedgenerate_speech
    • First observedget_audio_files

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are entirely distinct: one generates speech, the other lists generated files. There is no overlap or ambiguity in their purposes.

Naming Consistency5/5

Both tools follow the verb_noun pattern: generate_speech and get_audio_files. The naming is consistent, clear, and predictable.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    18
    56
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables text-to-speech conversion using OpenAI's TTS API, with inline audio playback and history within MCP hosts like Claude.
    7 npm
    BSD 4-Clause "Original" or "Old"