MCP

Kokoro TTS MCP: generate an mp3 locally first

For connecting Kokoro speech synthesis to an agent, provided the local repository already has the onnx weights and voices file and you start with uv; the first time, only produce an mp3 on the machine and do not upload to S3.

Official source · Kokoro TTS MCP

Install

uv run mcp-tts.py

Who it is for

If you want to turn text into mp3 and optionally upload it to S3 afterward, this service matches. Official docs describe it as a Kokoro Text to Speech MCP server that generates a local mp3 and offers an S3 upload option.

It fits people who can already clone the official repository, use uv, and download onnx weights. Official docs require kokoro-v1.0.onnx and voices-v1.0.bin in the same repository directory. ffmpeg is also required so the intermediate wav can become mp3. On Mac the official install is brew install ffmpeg.

It is not for people who only want a cloud API, or who will not accept audio files landing on the machine. Generation itself writes an mp3 to disk. Also not for people who want to send the result to S3 the first time: that sends audio off the machine.

Official repository:

https://github.com/mberg/kokoro-tts-mcp

Weight source:

https://github.com/thewh1teagle/kokoro-onnx

First try in 3 minutes

There is only one official recommended path: in the local repository that already holds the weights, run mcp-tts.py with uv. Do not look for another installer, and do not configure S3 the first time.

uv run mcp-tts.py

Prerequisites: the official repository is already on the machine; kokoro-v1.0.onnx and voices-v1.0.bin are downloaded and sit next to the script; ffmpeg is present. Weight file addresses:

https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx

https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/voices-v1.0.bin

Config location: write the uv command above into the current MCP client’s server startup entry, with the working directory pointing at that repository. After connecting, make one low-risk call: among the tools this server shows in the client, pick the item that generates a local mp3. Official docs never write function names in a row; do not invent function names. Synthesis writes a file on the machine and also uses disk.

Success signal: a new mp3 appears in the repository directory, and nothing was uploaded to S3. If startup fails, first check that both weight files sit with mcp-tts.py and that ffmpeg is available.

Usage examples

Example 1: produce audio on the machine. The target is generate-and-save mp3 locally. Use the synthesis tool the client actually shows, and enter one short line of text with no private content. Evidence has no parameter table and no voice-field name; success is an mp3 appearing locally. Do not assume it will auto-play.

Example 2: optional S3 upload. Official docs say the mp3 lives locally and can optionally be uploaded to S3, and you can also configure how these files are managed. That goes online. The check is that you have already looked at the audio that will be uploaded and accept that it will enter your object storage, then act. This page does not write key variable names; do not invent them. If the client has no upload item, stop here.

Limits

Do not start without the weight files or ffmpeg. Official docs only write brew install ffmpeg on Mac; do not rewrite that as another system’s package-manager command. uv is the recommended start; do not switch to an installer that never appeared.

S3 upload goes online and may, per official notes, delete or keep the local file after upload; do not invent unnamed bucket names, regions, or credential fields. Synthesis is not zero risk: text enters the on-machine model, and audio lands on disk. Official docs write neither undo nor an uninstall path.