Skip to main content
Glama

mcp-edge-tts - Give Claude a Voice!

PyPI Python License Platform

Minimal cross-platform MCP server for text-to-speech using Microsoft Edge TTS.

Let Claude speak! Works with Claude Code and Claude Desktop.

Слава Україні!

Features

  • 🎙️ 300+ voices in 50+ languages

  • 🖥️ Cross-platform: Windows, macOS, Linux

  • 🔑 Zero API keys required

  • ⚙️ Customizable: speed, volume, pitch

  • 🤖 Works with Claude Code and Claude Desktop

Related MCP server: Edge-TTS MCP Server

Installation

pip install mcp-edge-tts

From source

Windows

git clone https://github.com/s-n-n/edge-tts-mcp.git
cd edge-tts-mcp
python -m venv venv
venv\Scripts\activate
pip install -e .

macOS / Linux

git clone https://github.com/s-n-n/edge-tts-mcp.git
cd edge-tts-mcp
python3 -m venv venv
source venv/bin/activate
pip install -e .

Setup

Add to your MCP configuration:

If installed via pip

{
  "mcpServers": {
    "edge-tts": {
      "command": "python",
      "args": ["-m", "mcp_edge_tts"]
    }
  }
}

If installed from source

Claude Code (.mcp.json)

Windows:

{
  "mcpServers": {
    "edge-tts": {
      "command": "C:\\path\\to\\edge-tts-mcp\\venv\\Scripts\\python.exe",
      "args": ["-m", "mcp_edge_tts"]
    }
  }
}

macOS / Linux:

{
  "mcpServers": {
    "edge-tts": {
      "command": "/path/to/edge-tts-mcp/venv/bin/python",
      "args": ["-m", "mcp_edge_tts"]
    }
  }
}

Usage

speak

Speak text aloud.

speak("Hello, world!")
speak("Привіт!", voice="uk-UA-PolinaNeural")
speak("Fast!", rate="+50%")

Parameters:

Parameter

Description

Example

text

Text to speak

"Hello"

voice

Voice name

"en-US-AriaNeural"

rate

Speed (-50% to +100%)

"+20%"

volume

Volume (-50% to +100%)

"+10%"

pitch

Pitch (-50Hz to +50Hz)

"+5Hz"

list_available_voices

List voices, optionally filtered by language.

list_available_voices()
list_available_voices("uk")

get_config

Show current settings and available audio players.

Configuration

Set defaults via environment variables or .env file:

EDGE_TTS_VOICE=uk-UA-OstapNeural
EDGE_TTS_RATE=+0%
EDGE_TTS_VOLUME=+0%
EDGE_TTS_PITCH=+0Hz
EDGE_TTS_PLAYER=auto

Audio Players

Auto-detected by platform:

Platform

Default Player

Alternatives

Windows

PowerShell MediaPlayer (built-in)

ffplay, mpv

macOS

afplay (built-in)

ffplay, mpv

Linux

ffplay

mpv, paplay

Language

Voice

Gender

Ukrainian

uk-UA-OstapNeural

Male

Ukrainian

uk-UA-PolinaNeural

Female

English (US)

en-US-AriaNeural

Female

English (US)

en-US-GuyNeural

Male

German

de-DE-ConradNeural

Male

French

fr-FR-DeniseNeural

Female

Spanish

es-ES-AlvaroNeural

Male

Chinese

zh-CN-XiaoxiaoNeural

Female

Run list_available_voices() for full list.

Requirements

  • Python 3.10+

  • No additional software on Windows/macOS (uses built-in players)

  • Linux: ffmpeg or mpv recommended

License

MIT


Made with ❤️ in Ukraine

Available Tools

3 tools
get_configB
Get current TTS configuration.

Returns:
    Current settings
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Returns: Current settings,' which implies a read-only operation, but doesn't clarify aspects like authentication requirements, rate limits, or error handling. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with the main purpose stated first ('Get current TTS configuration.') and additional return information in a separate line. It avoids unnecessary words, but the 'Returns:' section could be integrated more smoothly, slightly affecting structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there's an output schema (which should detail the return values), the description doesn't need to explain return specifics. However, for a tool with no annotations and sibling tools present, it lacks context on usage scenarios and behavioral traits. It's minimally adequate but has clear gaps in guiding the agent.

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, but that's appropriate here. A baseline of 4 is applied since there are no parameters to document, and the description doesn't introduce confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get current TTS configuration.' It specifies the verb ('Get') and resource ('current TTS configuration'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'list_available_voices' or 'speak', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose 'get_config' over 'list_available_voices' (which might list voice options) or 'speak' (which might use the configuration). Without any usage context or exclusions, the agent lacks direction on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_available_voicesB
List available TTS voices.

Args:
    language: Filter by language code (e.g., en, ru, de). Empty for all.

Returns:
    List of voices with their details
ParametersJSON Schema
NameRequiredDescriptionDefault
languageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool lists voices and returns details, but doesn't describe important behaviors like whether this is a read-only operation, if it requires authentication, rate limits, pagination, or what format the returned details include. The output schema exists, but the description doesn't leverage this to add context about the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args and Returns sections are structured clearly, though the formatting with quotes might be slightly verbose. Every sentence adds value, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 optional parameter) and the existence of an output schema, the description is minimally adequate. It covers the purpose and parameter semantics reasonably well, but lacks usage guidelines and behavioral context that would be helpful for an AI agent, especially with no annotations to fill gaps.

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 description adds meaningful context about the single parameter 'language' that goes beyond the schema's minimal coverage (0%). It explains that it filters by language code with examples (e.g., en, ru, de) and that empty means 'all'. This compensates well for the schema's lack of description, though it doesn't mention format constraints beyond examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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 resource ('available TTS voices'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_config' or 'speak', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'speak' (which presumably generates speech) or 'get_config' (which might retrieve configuration). There's no mention of prerequisites, typical use cases, or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

speakA
Speak text aloud using Microsoft Edge TTS.

Args:
    text: Text to speak
    voice: Voice name (e.g., en-US-AriaNeural, uk-UA-OstapNeural)
    rate: Speech rate (-50% to +100%, e.g., +20%)
    volume: Volume (-50% to +100%, e.g., +10%)
    pitch: Pitch (-50Hz to +50Hz, e.g., +5Hz)

Returns:
    Confirmation message
ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
voiceNo
rateNo
volumeNo
pitchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/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 clearly indicates this is an output/action tool (speaking aloud) rather than a data retrieval tool, and mentions the specific TTS engine. However, it doesn't disclose important behavioral aspects like whether this blocks execution, requires specific permissions, has rate limits, or what happens if TTS fails.

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 perfectly structured and concise. It starts with the core purpose, then provides a well-organized parameter section with clear examples, and ends with the return value. Every sentence earns its place with no wasted words.

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?

Given the tool's moderate complexity (5 parameters, 1 required), no annotations, and the presence of an output schema (which handles return values), the description is mostly complete. It covers all parameters thoroughly and states the core purpose. The main gap is lack of behavioral context about execution characteristics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides excellent parameter semantics beyond the schema's 0% coverage. For all 5 parameters, it adds crucial context: text is 'Text to speak', voice includes example names, rate explains the range and format, volume explains the range and format, and pitch explains the range and format. This fully compensates for the schema's lack of descriptions.

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 specific action ('Speak text aloud') and the technology used ('using Microsoft Edge TTS'), which distinguishes it from potential siblings like get_config or list_available_voices. The verb+resource combination is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. While the description mentions Microsoft Edge TTS, it doesn't explain when text-to-speech is appropriate or how this tool relates to sibling tools like list_available_voices (which might help select voices).

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. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.1
    • First observedget_config
    • First observedlist_available_voices
    • First observedspeak

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: get_config retrieves settings, list_available_voices provides voice options, and speak performs the core TTS function. The descriptions make it impossible to confuse these three tools.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (get_config, list_available_voices, speak) with clear, descriptive names. The naming convention is uniform throughout the set with no deviations.

Tool Count5/5

Three tools is perfectly appropriate for a TTS server's scope: configuration management, voice discovery, and the core speak functionality. Each tool earns its place without being excessive or insufficient.

Completeness5/5

The tool surface provides complete coverage for the TTS domain: configuration retrieval, voice listing with filtering, and comprehensive speech generation with all key parameters (text, voice, rate, volume, pitch). There are no obvious gaps for typical TTS workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol server that integrates high-quality text-to-speech capabilities with Claude Desktop and other MCP-compatible clients, supporting multiple voice options and audio formats.
    17
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that leverages the Microsoft Edge TTS service to provide high-quality text-to-speech capabilities across over 80 languages. It enables users to generate audio files, query available voices, and create subtitle files using natural language commands.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that converts text into lifelike speech using Microsoft Edge's Text-to-Speech service, supporting customizable voice, rate, volume, and pitch.
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/s-n-n/edge-tts-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server