Edge TTS MCP
Click on "Install 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., "@Edge TTS MCPspeak 'Hello world' using the en-US-AriaNeural voice"
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.
mcp-edge-tts - Give Claude a Voice!
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
Via pip (recommended)
pip install mcp-edge-ttsFrom 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 to speak |
|
| Voice name |
|
| Speed (-50% to +100%) |
|
| Volume (-50% to +100%) |
|
| Pitch (-50Hz to +50Hz) |
|
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=autoAudio 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 |
Popular Voices
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:
ffmpegormpvrecommended
License
MIT
Made with ❤️ in Ukraine
Available Tools
3 toolsget_configB
Get current TTS configuration.
Returns:
Current settings
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| voice | No | ||
| rate | No | ||
| volume | No | ||
| pitch | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 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.
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.
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.
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.
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.
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.
3 tool updates
v0.1.1- First observed
get_config - First observed
list_available_voices - First observed
speak
TDQS
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.
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.
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.
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
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
MCP server for Text-to-Speech
AI voice generation: text-to-speech and voice cloning from any MCP client.
MCP server exposing the AceDataCloud Fish Audio API (text-to-speech with voice conditioning)
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA 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.171MIT
- FlicenseNot gradedqualityDmaintenanceAn 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.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that converts text into lifelike speech using Microsoft Edge's Text-to-Speech service, supporting customizable voice, rate, volume, and pitch.4MIT
- FlicenseNot gradedqualityDmaintenanceThis MCP server enables Claude to speak summaries, announcements, and explanations aloud using text-to-speech — right from your terminal.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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