
kajidog/mcp-tts-voicevox
Developer toolsVOICEVOX MCP Server (MCP Apps対応)
Overview
A text-to-speech MCP server using VOICEVOX 🎮 — Test VoicevoxClient directly in your browser - — Text-to-speech from MCP clients like Claude Desktop - — Play audio directly in the chat with an interactive player (ChatGPT / Claude Desktop / Claude Web etc.) - — Switch speakers per segment in a single call - — Queue management, immediate playback, prefetching, streaming - — Works on Windows, macOS, Linux (including WSL) The voicevox_speak_player tool uses MCP Apps to render an interactive audio player directly inside the chat. Unlike the standard voicevox_speak tool which plays audio on the server, — no audio device needed on the server. - — Audio plays in Claude Desktop's chat, not on the server. Works even over remote connections.
README
VOICEVOX TTS MCP
English | 日本語
A text-to-speech MCP server using VOICEVOX
🎮 Try the Browser Demo — Test VoicevoxClient directly in your browser
What You Can Do
- Make your AI assistant speak — Text-to-speech from MCP clients like Claude Desktop
- UI Audio Player (MCP Apps) — Play audio directly in the chat with an interactive player (ChatGPT / Claude Desktop / Claude Web etc.)
- Multi-character conversations — Switch speakers per segment in a single call
- Smooth playback — Queue management, immediate playback, prefetching, streaming
- Cross-platform — Works on Windows, macOS, Linux (including WSL)
UI Audio Player (MCP Apps)
The voicevox_speak_player tool uses MCP Apps to render an interactive audio player directly inside the chat. Unlike the standard voicevox_speak tool which plays audio on the server, audio is played on the client side (in the browser/app) — no audio device needed on the server.
Features
- Client-side playback — Audio plays in Claude Desktop’s chat, not on the server. Works even over remote connections.
- Play/Pause controls — Full playback controls embedded in the conversation
- Multi-speaker dialogue — Sequential playback of multiple speakers in one player with track navigation
- Speaker switching — Change the voice of any segment directly from the player UI
- Segment editing — Adjust speed, volume, intonation, pause length, and pre/post silence per segment
- Accent phrase editing — Edit accent positions and mora pitch directly in the UI
- Add / delete / reorder segments — Drag-and-drop track reordering; add new segments inline
- WAV export — Save all tracks as numbered WAV files and open the output folder automatically
- User dictionary manager — Add, edit, and delete VOICEVOX user dictionary words with preview playback
- Cross-session state restore — Player state is persisted on the server; reopening the chat restores previous tracks
Export behavior by environment:
Save and openalways exports WAV files. If opening the file explorer is not supported, export still succeeds and the save path is shown in the UI.Choose output folderuses a native directory picker on Windows/macOS. On unsupported environments, this action falls back to the default export directory.
| Multi-speaker playback | Track list | Segment editing |
|---|---|---|
| Speaker selection | Dictionary manager | WAV export |
|---|---|---|
Supported Clients
| Client | Connection | Notes |
|---|---|---|
| ChatGPT | HTTP (remote) | Requires VOICEVOX_PLAYER_DOMAIN |
| Claude Desktop | stdio (local) | Works out of the box |
| Claude Desktop | HTTP (via mcp-remote) | Do not set VOICEVOX_PLAYER_DOMAIN |
Note:
speak_playerrequires a host that supports MCP Apps. In hosts without MCP Apps support, the tool is not available andspeak(server-side playback) can be used instead.
Player MCP Tools
| Tool | Description |
|---|---|
voicevox_speak_player |
Create a new player session and display the UI. Returns viewUUID. |
voicevox_resynthesize_player |
Update all segments for an existing player (new viewUUID each call). |
voicevox_get_player_state |
Read the current player state (paginated) for AI tuning. |
voicevox_open_dictionary_ui |
Open the user dictionary manager UI. |
Quick Start
Requirements
- Node.js 24.0.0 or higher (or Bun) or Docker
- VOICEVOX Engine (must be running; included in Docker Compose)
- ffplay (optional, recommended — not needed with Docker)
Installing FFplay
ffplay is a lightweight player included with FFmpeg that supports playback from stdin. When available, it automatically enables low-latency streaming playback.
💡 FFplay is optional. Without it, playback falls back to temp file-based playback (Windows: PowerShell, macOS: afplay, Linux: aplay, etc.).
- Easy setup: One-liner installation for each OS (see steps below)
- Required:
ffplaymust be in PATH (restart terminal/apps after installation)
3 Steps to Get Started
1. Start VOICEVOX Engine
2. Add to Claude Desktop config file
Config file location:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "@kajidog/mcp-tts-voicevox"]
}
}
}
💡 If using Bun, just replace
npxwithbunx:"command": "bunx", "args": ["@kajidog/mcp-tts-voicevox"]
3. Restart Claude Desktop
That’s it! Ask Claude to “say hello” and it will speak!
Quick Start with Docker
You can run both the MCP server and VOICEVOX Engine with a single command using Docker Compose. No Node.js or VOICEVOX installation required.
1. Start the containers
docker compose up -d
This starts the VOICEVOX Engine and the MCP server (HTTP mode on port 3000).
2. Add to Claude Desktop config file (using mcp-remote)
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}
3. Restart Claude Desktop
Security (Docker):
docker-compose.ymlpublishes port 3000 without authentication.MCP_ALLOWED_HOSTSis not a defense here — non-browser clients can send anyHostheader they like — so anyone who can reach the port can use the server. SetMCP_API_KEY(and send it asX-API-Key), or keep the port bound to a trusted network / localhost only. Consider also settingVOICEVOX_ALLOWED_OUTPUT_DIRSto limit where file-writing tools may write.
Limitations (Docker): The Docker container has no audio device, so the
voicevox_speaktool (server-side playback) is disabled by default. Usevoicevox_speak_playerinstead — it plays audio on the client side (in Claude Desktop) and works without any audio device on the server. See UI Audio Player for details.
MCP Tools
voicevox_speak — Text-to-Speech
The main feature callable from Claude.
| Parameter | Description | Default |
|---|---|---|
text |
Text to speak (multiple segments separated by newlines) | Required |
phrases |
Inline accent notation (takes priority over text) |
(unset) |
speaker |
Speaker ID | 1 |
speedScale |
Playback speed | 1.0 |
immediate |
Immediate playback (clears queue) | true |
waitForStart |
Wait for playback to start | false |
waitForEnd |
Wait for playback completion | false |
immediate/waitForStart/waitForEnddisappear from the tool schema when the matching--restrict-*option is set.
Examples:
// Simple text
{ "text": "Hello" }
// Specify speaker
{ "text": "Hello", "speaker": 3 }
// Different speakers per segment
{ "text": "1:Hello\n3:Nice weather today" }
// Wait for completion (synchronous processing)
{ "text": "Wait for this to finish before continuing", "waitForEnd": true }
// Control the accent with inline notation (`,` separates phrases, `[` marks the accent)
{ "text": "こんにちは世界", "phrases": "コン[ニ]チワ,セ[カ]イ" }
Inline Accent Notation
phrases (and the pronunciation field of the user dictionary tools) accepts katakana with an inline accent marker:
,separates accent phrases —コン[ニ]チワ,セ[カ]イ[marks where the pitch drops after;コン[ニ]チワmeans the accent falls onニ- Omitting the brackets for a phrase keeps VOICEVOX’s own accent estimation for it
text stays required even when phrases is given — pass the plain text there and the notation is what gets spoken.
voicevox_get_accent_phrases returns the same notation for a given text, so you can read the estimated accent, tweak the bracket, and feed it back into phrases.
Configuration
Troubleshooting
Package Structure
| Package | Description |
|---|---|
@kajidog/mcp-tts-voicevox |
MCP server (apps/mcp-tts) |
@kajidog/voicevox-client |
General-purpose VOICEVOX client library (can be used independently) |
@kajidog/mcp-core |
Shared MCP infrastructure (config schema, HTTP/stdio launcher). Not published — bundled into the server |
@kajidog/player-ui |
React-based audio player UI, bundled into a single HTML file. Not published |
License
ISC
Install
npx -y @kajidog/mcp-tts-voicevoxConfiguration
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "@kajidog/mcp-tts-voicevox"]
}
}
}