edge-tts MCP Server
Wraps rany2/edge-tts as an MCP server.
No API key. No Windows. No Edge browser. Just Microsoft's TTS — free.
Built for Remotion video production: outputs MP3 + word-timing JSON.
Install & Use
The easiest way to use this in your MCP clients (like Cursor or VS Code) is via uvx:
{
"mcpServers": {
"edge-tts": {
"command": "uvx",
"args": [
"--from",
"saitrogen-edge-tts-mcp",
"edge-tts-mcp"
]
}
}
}
Or you can install it using pip:
pip install saitrogen-edge-tts-mcp
Tools
edgetts_synthesize
Converts text → .mp3 + optional word-timing .json (Remotion-ready).
| Param | Default | Description |
|---|---|---|
text |
required | Text or SSML to speak |
output_path |
required | Path ending in .mp3 |
voice |
en-US-AriaNeural |
Voice name (see list_voices) |
rate |
+0% |
Speed: +20% faster, -10% slower |
volume |
+0% |
Volume adjustment |
pitch |
+0Hz |
Pitch: +50Hz, -20Hz |
save_timings |
true |
Save <output>.mp3.json with word timings |
Word timing JSON (saved at voiceover.mp3.json):
[
{ "word": "Hello", "startMs": 0, "durationMs": 312, "endMs": 312 },
{ "word": "Remotion","startMs": 375, "durationMs": 480, "endMs": 855 }
]
edgetts_list_voices
Lists all available voices with optional locale/gender filter.
| Param | Example |
|---|---|
locale |
en-US, hi-IN, ta |
gender |
Male, Female |
Remotion Usage
import timings from './public/voiceover.mp3.json';
import { Audio, Sequence, staticFile, useVideoConfig } from 'remotion';
export const Scene = () => {
const { fps } = useVideoConfig();
return (
<>
<Audio src={staticFile('voiceover.mp3')} />
{timings.map((w, i) => (
<Sequence
key={i}
from={Math.floor((w.startMs / 1000) * fps)}
durationInFrames={Math.ceil((w.durationMs / 1000) * fps)}
>
<div style={{ color: 'white', fontSize: 48 }}>{w.word}</div>
</Sequence>
))}
</>
);
};
VS Code / Claude Desktop Config
Add to mcp_servers (stdio transport):
{
"edge-tts": {
"command": "python3",
"args": ["/path/to/edge-tts-mcp/server.py"]
}
}
Or with uv run:
{
"edge-tts": {
"command": "uv",
"args": ["run", "--with", "edge-tts", "--with", "mcp", "python3", "server.py"]
}
}
Popular Voices
| Voice | Language | Gender |
|---|---|---|
en-US-AriaNeural |
English (US) | Female |
en-US-GuyNeural |
English (US) | Male |
en-GB-SoniaNeural |
English (UK) | Female |
hi-IN-SwaraNeural |
Hindi | Female |
hi-IN-MadhurNeural |
Hindi | Male |
ta-IN-PallaviNeural |
Tamil | Female |
ml-IN-SobhanaNeural |
Malayalam | Female |
Run edgetts_list_voices with locale: "ml" to find Malayalam voices.
Metadata
Release files for saitrogen-edge-tts-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| saitrogen_edge_tts_mcp-0.1.1.tar.gz | 108.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| saitrogen_edge_tts_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 115.6 kB
Release files / saitrogen_edge_tts_mcp-0.1.1.tar.gz
| Download URL | saitrogen_edge_tts_mcp-0.1.1.tar.gz |
|---|---|
| Size | 108.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d0fc5c24ee0c4786cc69637b0bc58ce3c355b123df3c7d4cbacc96233423778
|
|
BLAKE2b-256 checksum How to use checksums |
49bdc97c136599481c6059f9ffb3bf42614f354a7f2d1f000a338793f466021c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.6
|
Release files / saitrogen_edge_tts_mcp-0.1.1-py3-none-any.whl
| Download URL | saitrogen_edge_tts_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 6.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
de523a2fb88e90a28d443248d04697088bd0793d0b650a73b910aaa1cca9c25c
|
|
BLAKE2b-256 checksum How to use checksums |
7558344e165b8ff0a2d451abcebbee7405a6309cfeedef70dece8f30461313d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.6
|