supertonic3-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@supertonic3-mcpSay 'Hello, world!' in a cheerful voice"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
supertonic3-mcp
Local, on-device TTS for Claude & Cursor, powered by Supertonic 3. No API key. No cloud. An internal tool open-sourced by Halozen — we build AI compliance intelligence for construction.
Not affiliated with Supertone Inc.
Expose speak, list_voices, and list_expressions to Claude Desktop, Cursor, or any MCP client over STDIO.
Quick start (TTHW < 3 min)
git clone https://github.com/nextic-tech/supertonic3-mcp && cd supertonic3-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
# Optional: pre-download model for offline use (~400MB)
supertonic3-mcp preload
# Run MCP server (STDIO)
supertonic3-mcpCursor MCP config
Add to .cursor/mcp.json (or Cursor Settings → MCP):
{
"mcpServers": {
"supertonic3": {
"command": "/absolute/path/to/supertonic-tts/.venv/bin/supertonic3-mcp",
"args": []
}
}
}First server start downloads the Supertonic model into ~/.cache/supertonic3/ unless you ran preload first.
Related MCP server: Kokoro MCP Server
Tools
Tool | Description |
| Synthesize text to a WAV file; returns absolute path + metadata |
| Built-in voices ( |
| Inline tags ( |
speak parameters
text— 1–5000 characters; expression tags allowedvoice_id— optional (M1,F1, …)language— ISO 639-1 (en,ko,ja, …). For non-English text, always setlanguage=. Defaults toen.speed—0.7to2.0(SDK range)play— iftrue, plays audio on this machine viaafplay(macOS) oraplay(Linux). Unsupported on Windows.
WAV files are written to /tmp/supertonic_*.wav (macOS/Linux). Windows is not supported for synthesis output paths in v1.0.
Example return:
Audio saved to /tmp/supertonic_abc123.wav (1.4s, voice: M1, lang: en)Performance (this repo)
Measured on Apple M3, supertonic 1.3.1 — see benchmark/results.md.
Scenario | Median FSL |
Warm (model loaded) | ~0.82s |
Cold (new | ~0.81s |
FSL = time from synthesize() through WAV written (no streaming, no play=True).
Re-run: python benchmark/run.py
Offline use
supertonic3-mcp preloadDownloads ONNX weights atomically to ~/.cache/supertonic3/ and prints SHA256 checksums. After preload, synthesis works without network access.
Development
pip install -e ".[dev]"
pytestTests mock the Supertonic SDK (no network in CI).
Coming in v1.1
listen()— Whisper speech-to-text (pip install supertonic3-mcp[stt])SSE transport + Docker image for remote agents
PyPI publish workflow
License
MIT (this package). Supertonic SDK is MIT; model weights use OpenRAIL-M.
Disclaimer
AI-generated speech is not a substitute for certified safety, legal, or medical guidance. For demonstration purposes only.
Available Tools
3 toolslist_expressionsA
List inline expression tags (e.g. ) usable inside speak() text.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'List' conveys a read-only behavior, and the example and usage context add value. It does not discuss side effects, auth, or rate limits, but for a simple listing tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence conveys the action, resource, example, and usage context. Every word earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with an output schema available, the description fully covers what the tool does and where the result applies. The sibling context further clarifies differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline per rubric is 4. The description adds no parameter information because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists inline expression tags, with an example (<laugh>), and specifies their context (usable inside speak() text). This distinguishes it from siblings list_voices (lists voices) and speak (performs speech).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly provides usage context by mentioning 'usable inside speak() text', indicating when to use it. It does not explicitly mention alternatives or exclusions, but the sibling names make the distinction clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_voicesA
List built-in Supertonic voice styles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The verb 'List' implies a read-only operation, which provides basic transparency about safety, but it does not disclose any potential side effects, auth requirements, or rate limits. For a simple list tool, the risk is low, so the implicit read-only nature is adequate but not highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no extraneous detail. It front-loads the action and the resource, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, output schema present), the description is sufficiently complete. It states what the tool lists, and the output schema covers return value specifics. The lack of sibling differentiation is a minor gap but not critical for understanding this tool's core function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% and baseline for this dimension is 4. The description does not need to elaborate on parameter semantics since there are none to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with the resource 'built-in Supertonic voice styles', clearly identifying both the action and the target. This distinguishes it from sibling tools like 'list_expressions' by specifying the object type (voices vs expressions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling tools 'list_expressions' or 'speak'. There is no explicit context about prerequisites, use cases, or alternative tools, leaving the agent without direction on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
speakA
Convert text to speech and save a WAV file. Returns the absolute path and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| play | No | If true, play audio on this machine (STDIO/local use only). | |
| text | Yes | 1–5000 characters; may include expression tags from list_expressions(). | |
| speed | No | Playback speed in [0.7, 2.0]. | |
| language | No | ISO 639-1 code (en, ko, ja, …). Required for reliable non-English output. | |
| voice_id | No | Built-in voice (M1–M5, F1–F5). See list_voices(). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It discloses the primary behavior (saving a WAV file) and return value (absolute path and metadata), but does not mention side effects like file overwriting, execution context, or any required permissions. This is a minimal but acceptable level of disclosure for a straightforward conversion tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core action and output. Every word earns its place, and there is no redundant information or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (5 parameters, output schema present), the description adequately covers the tool's purpose and return value. It could improve by referencing the sibling helper tools (list_voices, list_expressions) to guide the agent toward parameter discovery, but the existing schema already includes those references, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all five parameters, including text constraints, speed range, language code, voice IDs, and the play flag. The description adds no additional parameter-level meaning beyond what the schema already provides, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts text to speech and saves a WAV file, with a specific verb and resource. It also mentions returning the absolute path and metadata, distinguishing it from sibling tools like list_voices and list_expressions, which are list-only functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for when to use the tool (text-to-speech conversion) but provides no explicit guidance on when not to use it or how it relates to alternatives. The sibling tools list_voices and list_expressions are referenced in the parameter schema, but the description does not connect the dots for the agent, leaving usage coordination to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
list_expressions - First observed
list_voices - First observed
speak
TDQS
Scored across 3 tools
Each tool has a clear, distinct purpose: listing voice styles, listing expression tags, and performing text-to-speech conversion. No overlap or ambiguity between the tools.
All tool names follow a consistent verb_noun pattern: list_voices, list_expressions, and speak. The naming is predictable and uniform.
With only three tools, the server is well-scoped for a text-to-speech domain. Each tool is essential and earns its place.
The tool set covers the core workflow: discovering available voices and expressions, then speaking text. No obvious gaps for the stated purpose.
Maintenance
Related MCP Connectors
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Generate AI images, video, speech, music and presentations from Claude, ChatGPT and Cursor.
Text to speech for your AI. Your AI can send text to Doc Player to read it aloud. You will see a reader window with the text and you can control the playback sentence by sentence. Find an example here: https://documentplayer.com/connect-ai/
Generate AI images, videos, music, SFX & speech in any AI assistant. Results appear inline in chat.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables voice interaction with Claude Code through local speech-to-text (Whisper) and text-to-speech (Supertonic), allowing verbal input/output without external API calls.1-
- AlicenseNot gradedqualityDmaintenanceProvides text-to-speech generation using the Kokoro-82M model, enabling AI assistants to generate voiceovers and audio content directly within Claude Desktop and Cursor.14Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAdds text-to-speech capabilities to Cursor IDE, allowing your AI assistant to speak responses, summaries, and explanations out loud using OpenAI or ElevenLabs.1Apache 2.0

supertone-mcpofficial
AlicenseAqualityFmaintenanceMCP server for the Supertone TTS API. Generate natural speech, browse and preview the voice catalog, predict synthesis cost, and create cloned voices — directly from Claude Desktop, Cursor, or any MCP-compatible client. Supports Korean, English, Japanese, and 20+ other languages, with speed, pitch, and emotion-style control.144MIT