Skip to main content
Glama
README.md
# transcript-tts

A minimal [MCP](https://modelcontextprotocol.io) server that converts text/transcripts into
MP3 audio using Microsoft Edge's free neural text-to-speech voices ([`edge-tts`](https://github.com/rany2/edge-tts)).
No API key, no account, no usage cap — it's an unofficial use of the same TTS service behind
Edge's "Read Aloud" feature.

## Tools

- **`text_to_speech(text, voice="en-US-AriaNeural", rate="+0%", volume="+0%", pitch="+0Hz", filename=None)`**
  Synthesizes `text` to an MP3 file. Returns `{"audio_path": ..., "voice": ...}`.
  Files are saved to `~/tts-output/` by default (override with `TRANSCRIPT_TTS_OUTPUT_DIR`).

- **`list_voices(locale_prefix=None)`**
  Lists available voices, optionally filtered by locale (e.g. `"en-US"`, `"ja"`, `"en-GB"`).

## Setup

Requires [`uv`](https://docs.astral.sh/uv/).

```bash
git clone https://github.com/ShevinuM/transcript-tts.git
cd transcript-tts
uv sync
```

Register with Claude Code:

```bash
claude mcp add --scope user transcript-tts -- \
  /path/to/transcript-tts/.venv/bin/python /path/to/transcript-tts/server.py
```

Or add it manually to your MCP client config (e.g. `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "transcript-tts": {
      "command": "/path/to/transcript-tts/.venv/bin/python",
      "args": ["/path/to/transcript-tts/server.py"]
    }
  }
}
```

## Environment variables

- `TRANSCRIPT_TTS_OUTPUT_DIR` — where MP3s are saved (default: `~/tts-output`)
- `TRANSCRIPT_TTS_VOICE` — default voice short name (default: `en-US-AriaNeural`)

## Notes

Requires `mcp[cli]>=2.0.0` — the MCP Python SDK renamed `FastMCP` to `MCPServer` in its 2.0
release, so this won't work against older `mcp` SDK versions without adjusting the import in
`server.py`.

TDQS

A4.2/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one lists available voices, the other converts text to speech. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern: 'list_voices' and 'text_to_speech'. The naming is predictable and uniform.

Tool Count3/5

With only two tools, the server feels minimal but appropriately scoped for a simple TTS purpose. It is on the lower end of the acceptable range as noted in the calibration guide.

Completeness4/5

The core workflow is covered: list voices to select one, then synthesize text. Minor gaps like streamed audio or additional output formats could be added, but the essential lifecycle is complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues