Synthesis is asynchronous and queued, which is what makes voice output usable during a working session rather than a novelty. The per-session and unused-voice tools are the thoughtful part: run several agents at once and each one sounds like a different speaker.
An MCP server that sends text to a locally running VOICEVOX engine and plays the synthesized audio, with a playback queue you can inspect and clear.
- Text synthesized and played asynchronously, so a long line does not block the conversation
- The available voices listed, with playback speed and default voice set by configuration
- The playback queue's state readable, and clearable when the backlog is no longer wanted
- Voice ids currently in use across all processes, so two sessions do not end up sounding identical
- A random unused voice on request, and a per-session voice that stays fixed for the length of that session
- Playback handled per platform: afplay on macOS, pw-play or paplay on Linux, PowerShell on Windows
Node.js 18 or newer, and VOICEVOX installed and running — the server talks to it at the local address in VOICEVOX_URL, which the shipped configuration already fills in. DEFAULT_VOICE_ID and DEFAULT_SPEED set the starting voice and rate. Linux additionally needs PipeWire's pw-play or PulseAudio's paplay; macOS and Windows need nothing extra.
One command — npx -y @arrow2nd/vv-mcp
