Skip to main content

MCP server for Microsoft Edge TTS — Remotion-optimised with word-timing JSON

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

saitrogen_edge_tts_mcp-0.1.1.tar.gz (108.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

saitrogen_edge_tts_mcp-0.1.1-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file saitrogen_edge_tts_mcp-0.1.1.tar.gz.

File metadata

File hashes

Hashes for saitrogen_edge_tts_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0d0fc5c24ee0c4786cc69637b0bc58ce3c355b123df3c7d4cbacc96233423778
MD5 c7a8bd3c65df2ec3656c213d306056e2
BLAKE2b-256 49bdc97c136599481c6059f9ffb3bf42614f354a7f2d1f000a338793f466021c

See more details on using hashes here.

File details

Details for the file saitrogen_edge_tts_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for saitrogen_edge_tts_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 de523a2fb88e90a28d443248d04697088bd0793d0b650a73b910aaa1cca9c25c
MD5 e02cf4dd006c5dd083aaf8d78c22b623
BLAKE2b-256 7558344e165b8ff0a2d451abcebbee7405a6309cfeedef70dece8f30461313d5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page