botnoi-voice-mcp
v1.0.3
Published
MCP server for Botnoi Voice Text-to-Speech API
Readme
Botnoi Voice MCP 🇹🇭🗣️
A Model Context Protocol (MCP) server for Text-to-Speech generation (Thai, English, and other regional languages) via the Botnoi Voice API. Designed to empower AI assistants (e.g., Claude 3.5 Sonnet, Cursor) to seamlessly synthesize speech and discover available voices dynamically.
🌟 Features
- 🎙️ Generate Speech (
generate_speech): Allows the AI to convert text immediately to audio and download it as an.mp3file. - 🔍 List & Filter Voices (
list_voices): Smartly search and filter through the Botnoi Voice library. Examples: search for "Thai female teen voice" or "Male news anchor voice".
🚀 Installation
You can use the server directly via npx (no installation required) or install it globally:
# Global installation
npm install -g botnoi-voice-mcp🔑 Configuration
A Botnoi Voice API Key is required. You can register and obtain one from the Botnoi Voice Dashboard.
Set your API key as an environment variable named BOTNOI_API_KEY.
Example Configuration for Claude Desktop
Add the server to your Claude Desktop configuration file (e.g., on Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"botnoi-voice": {
"command": "npx",
"args": ["-y", "botnoi-voice-mcp"],
"env": {
"BOTNOI_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}🛠️ Available Tools
list_voices
Discover and search the available voice models inside the Botnoi Voice library.
language(optional): Filter by language (e.g.,'th','en','ja').gender(optional): Filter by gender (e.g.,'Female','Male').age_style(optional): Filter by age group (e.g.,'วัยเด็ก'(Child),'วัยรุ่น'(Teen),'วัยผู้ใหญ่'(Adult)).
generate_speech
Convert specified text into a speech output.
text(required): The text to be synthesized into speech.speaker(optional): The Voice ID (e.g.,"1"). Defaults to a basic voice.language(optional): Language code (e.g.,"th").speed(optional): Speech speed ranging from 0.5 to 2.0.
⚠️ Important Note for Developers
If you are a developer extending this MCP, note that
list_voicescurrently reads directly from a static local JSON response file. If you publish this to NPM, please ensure the.jsonfile is correctly bundled in your build output (dist/) and referenced via__dirname, or fallback to making a live HTTPfetchto ensure it works across all user environments!
📝 License
MIT
