transcript-tts
by ShevinuM
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