Piper TTS MCP Server
Provides a Docker configuration for easily setting up and running the Piper TTS service, with pre-configured voice models and automatic startup.
Click on "Install 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., "@Piper TTS MCP Serverread today's news headlines with volume at 0.3"
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.
🎤 Piper TTS MCP Server
A Model Context Protocol (MCP) server that integrates Piper TTS for high-quality text-to-speech functionality. This server provides a speak tool that converts text to speech and plays it directly through your speakers with customizable volume control.
✨ Features
🔊 High-quality text-to-speech using Piper TTS
🎚️ Volume control (0.01 to 1.00)
⚡ Memory-based audio playback (no temporary files)
🔧 Customizable voice parameters (speaker, speed, voice variation)
🚀 Fast and lightweight MCP integration
🔇 Silent operation (no console output)
Related MCP server: Kokoro TTS MCP Server
📋 Requirements
⚠️ Important Prerequisites:
Python 3.12+ installed on your system
Piper TTS service running on
localhost:5000
You can set this up using the included Docker configuration or by running Piper TTS separately.
🚀 Quick Start
1. 🐳 Start Piper TTS Service
Clone this repo and start the TTS service:
git clone https://github.com/CryptoDappDev/piper-tts-mcp.git
cd piper-tts-mcpOption A: Using Docker Compose (Recommended)
docker compose up -dOption B: Using Docker Build
docker build -t piper-tts-mcp .
docker run -p 5000:5000 piper-tts-mcp2. 🔧 Configure MCP Client
Add the server to your MCP configuration (e.g., .mcp.json for Claude Desktop):
{
"mcpServers": {
"speak": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/piper-tts-mcp",
"run",
"server.py"
]
}
}
}3. 🎉 Enjoy!
The speak tool is now available in your MCP client!
🛠️ Usage
The MCP server provides a speak tool with the following parameters:
Parameter | Type | Default | Description |
| string | required | Text to convert to speech |
| int | 0 | Voice speaker ID |
| float | 1.1 | Speech speed (lower = faster) |
| float | 0.667 | Voice variation control |
| float | 0.333 | Pronunciation variation |
| float | 0.15 | Volume level (0.01 to 1.00) |
Example Usage
# Basic usage
speak("Hello, world!")
# With custom volume
speak("This is louder!", volume=0.5)
# With custom voice settings
speak("Fast and varied speech",
length_scale=0.8,
volume=0.3,
noise_scale=0.8)🔧 Development
Dependencies
Python 3.12+
mcp[cli]- MCP frameworkrequests- HTTP client for TTS APIpygame- Audio playback
Local Development
# Install dependencies
uv sync
# Run the server
uv run server.py📦 Docker Configuration
The included Docker setup provides:
Piper TTS service on port 5000
Pre-configured voice models
Automatic startup
🎙️ Voice Models
The default voice model used in this repository is en_GB-cori-high (British English, female voice).
🔍 Exploring Voice Options
Voice Samples: Listen to different voice models at Piper Voice Samples
Piper Documentation: Learn more about Piper TTS at rhasspy/piper
🛠️ Changing Voice Models
To use a different voice model:
Choose a voice from the voice samples page
Update the Dockerfile - Replace
en_GB-cori-highwith your chosen voice model:# Download your preferred voice model RUN python3 -m piper.download_voices your-chosen-voice-model # Update the server command CMD ["sh", "-c", "python3 -m piper.http_server -m your-chosen-voice-model"]Rebuild the Docker image:
docker build -t piper-tts-mcp . docker compose up -d
🎨 Creating Custom Voices
Creating your own custom voice requires additional effort and research. Please refer to the Piper documentation for guidance on voice training and customization.
🤝 Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
📄 License
This project is open source and available under the MIT License.
🙏 Acknowledgments
Piper TTS - Fast, local neural text to speech
Model Context Protocol - Standardized protocol for AI model interactions
Made with ❤️ for the MCP community
Available Tools
1 toolspeakA
Convert text to speech and play it through the speakers.
Args:
text: The text to convert to speech
speaker_id: Voice speaker ID (default: 0)
length_scale: Speech speed control (default: 1.1, lower = faster)
noise_scale: Voice variation control (default: 0.667)
noise_w_scale: Pronunciation variation control (default: 0.333)
volume: Volume level from 0.01 to 1.00 (default: 0.15)
Returns:
Success or error message
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| speaker_id | No | ||
| length_scale | No | ||
| noise_scale | No | ||
| noise_w_scale | No | ||
| volume | No |
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. It discloses that the tool plays speech through speakers and returns a success or error message, which covers basic behavior. However, it lacks details on potential side effects (e.g., audio output interruption), permissions, or error handling, leaving gaps in transparency.
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 well-structured and front-loaded with the core purpose, followed by a clear breakdown of parameters and returns. Every sentence adds value without redundancy, making it efficient and easy to parse for an agent.
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 complexity (6 parameters) and no annotations, the description does a good job covering parameters and basic behavior. With an output schema present, it doesn't need to detail return values. However, it could improve by addressing potential constraints like audio device requirements or usage limits.
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 description adds significant meaning beyond the input schema, which has 0% coverage. It explains each parameter's purpose (e.g., 'speaker_id: Voice speaker ID', 'length_scale: Speech speed control'), including default values and effects (e.g., 'lower = faster'), fully compensating for the schema's lack of descriptions.
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's purpose with a specific verb ('Convert text to speech and play it through the speakers'), identifying both the action and resource. It distinguishes itself by specifying the exact functionality without ambiguity, and since there are no sibling tools, no differentiation is needed.
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 implies usage for text-to-speech conversion but provides no explicit guidance on when to use this tool versus alternatives. With no sibling tools mentioned, there's no context for comparison, leaving the agent to infer usage based on the stated purpose alone.
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. Dates show when Glama detected each change.
1 tool update
- First observed
speak
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion or overlap between tools. The single 'speak' tool has a clearly defined and distinct purpose of converting text to speech.
The single tool name 'speak' follows a clear verb-based pattern that directly describes its function. With only one tool, consistency is inherently perfect as there are no other tools to compare against.
A single tool feels thin for a TTS server that could reasonably support additional functionality like listing available voices, checking synthesis status, or managing audio output. While the core functionality is present, the tool surface is minimal.
The server provides basic text-to-speech conversion but lacks complementary tools that would create a complete TTS workflow. There are no tools for voice management, synthesis monitoring, or audio file handling, leaving significant gaps in the domain coverage.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
AI voice generation: text-to-speech and voice cloning from any MCP client.
- ChamadeOAuthio.chamade
Voice and chat for AI agents — Discord, Teams, Meet, Slack, Zoom, Telegram, WhatsApp, NC Talk, SIP
Generate AI images, videos, music, SFX & speech in any AI assistant. Results appear inline in chat.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceIntegrates ElevenLabs Text-to-Speech capabilities with Cursor through the Model Context Protocol, allowing users to convert text to speech with selectable voices within the Cursor editor.1-
- AlicenseDqualityCmaintenanceProvides text-to-speech capabilities through the Model Context Protocol, allowing applications to easily integrate speech synthesis with customizable voices, adjustable speech speed, and cross-platform audio playback support.110MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI models to generate and play high-quality text-to-speech audio through your device's native audio system using Rime's voice synthesis API.18627-
- FlicenseNot gradedqualityDmaintenanceExposes a text-to-speech announcement tool for the CastleCall home PA system on Raspberry Pi. It enables users to broadcast voice messages using local Piper or cloud-based ElevenLabs providers through the Model Context Protocol.-