Skip to main content

kyutai-tts-mcp

Local-only voice for any MCP client (Claude Code, Claude Desktop, Cursor, etc.) via Kyutai Pocket TTS. No cloud, no API keys, no rate limits.

  • 🇫🇷 French (Estelle) and 🇬🇧 English (Alba), plus 24 other Kyutai voices usable in both
  • No PyTorch: runs on ONNX Runtime with int8 exports of Kyutai's 6-layer model
  • TTFA ~20 ms, ~9× real-time on an Apple Silicon CPU, frame-by-frame streaming
  • Pass language= per speak() call; models load lazily and cache
  • Non-blocking speak(), gap-free playback via sounddevice write-mode
  • ~160 MB venv, ~115 MB model per language, ~330 MB RAM

Install

uvx kyutai-tts-mcp --help

Or persistent:

uv tool install kyutai-tts-mcp

Then add to your MCP client's .mcp.json:

{
  "mcpServers": {
    "kyutai-tts": {
      "command": "uvx",
      "args": ["kyutai-tts-mcp", "--language", "french"]
    }
  }
}

Replace french with english for your default language. Per-call language= overrides this default. Older names such as french_24l are accepted as aliases.

MCP tools

Tool Purpose
speak(text, voice?, language?, interrupt?) Generate audio for text and queue it for background playback. Returns immediately, streaming generation. By default, calls queue and play sequentially (including across turns). Pass interrupt=True to abort current playback and clear the queue first. Pass language= (french / english) to switch model on the fly.
stop_speaking() Stop current playback, drop queue, cancel in-flight generation. Use for explicit "mute" requests. For mid-turn interruption + new speech, use speak(..., interrupt=True) instead.
status() Report loaded languages, queue depths, sample rate, last error.

Configuration

The default language is set via --language (CLI) or KYUTAI_TTS_LANGUAGE (env var). Other knobs (all env):

  • KYUTAI_TTS_VOICE — default voice name (estelle in French, alba in English; any Kyutai predefined voice works in both)
  • KYUTAI_TTS_MAX_TOKENS — max tokens per generated chunk (default 50)

Voice cloning and the other pocket-tts languages (Spanish, German, Italian, Portuguese, Dutch) need PyTorch and were dropped in 0.9.0: use uvx "kyutai-tts-mcp<0.9" if you rely on them.

Claude Code users

If you're on Claude Code (CLI, desktop, or via Cursor), you can install the bundled plugin (MCP wiring + /voice-mode skill) in one shot:

/plugin marketplace add Vincweb/kyutai-tts-mcp
/plugin install kyutai-tts@vincweb-tools

See the main repo for architecture details, voice catalog, and a side-by-side comparison with voxtral-mcp.

Requirements

  • macOS 13+ (Apple Silicon recommended; Intel should work with Python 3.11–3.13, untested)
  • Python 3.11 – 3.14
  • ~330 MB free RAM (~570 MB with both languages loaded)

License

MIT. The model weights are Kyutai's, under CC BY 4.0; the alba voice is by Alba McKenna, CC BY 4.0. See the Pocket TTS model card for Kyutai's terms of use.

Metadata

Release files for kyutai-tts-mcp 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kyutai-tts-mcp 0.9.0
File Size Uploaded
kyutai_tts_mcp-0.9.0.tar.gz 79.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kyutai-tts-mcp 0.9.0
File Interpreter ABI Platform
kyutai_tts_mcp-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 94.5 kB

Release files / kyutai_tts_mcp-0.9.0.tar.gz

Download URL kyutai_tts_mcp-0.9.0.tar.gz
Size 79.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ba4f65f840c51b0259564c37a64bb7fc5231f01a1e3d7e7f5b4c1425a7c9d452
BLAKE2b-256 checksum
How to use checksums
04bab4eed58802d4927314bd92f79fb0195520af69c0fc9eff0c1a0e29be09fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / kyutai_tts_mcp-0.9.0-py3-none-any.whl

Download URL kyutai_tts_mcp-0.9.0-py3-none-any.whl
Size 15.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8a91d1e93713378d37c6bbaf4ff5a643674e3b1ca55da7de2adad01bfb54df2a
BLAKE2b-256 checksum
How to use checksums
0e73f3efc2b9f8daf081df213e7ac1f61432786181cc2762aa1b0c31f211793c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page