Skip to main content
Glama
mohemohe

voiceroid_daemon-mcp

by mohemohe

voiceroid_daemon-mcp

MCP (Model Context Protocol) server for VOICEROID2 text-to-speech via voiceroid_daemon.

Features

  • Text-to-speech generation with VOICEROID2 voices

  • Text-to-kana phonetic conversion

  • Customizable voice parameters (volume, speed, pitch, emphasis)

  • Audio playback support for macOS, Windows, and Linux

  • Basic authentication support

Related MCP server: Bouyomi-chan MCP Server

Prerequisites

  • Node.js 18 or higher

  • voiceroid_daemon running on your system

  • VOICEROID2 installed (for voiceroid_daemon)

Installation

# Clone the repository
git clone https://github.com/mohemohe/voiceroid_daemon-mcp.git
cd voiceroid_daemon-mcp

# Install dependencies
npm install

Configuration

Create a .env file in the project root (optional):

# voiceroid_daemon server URL (default: http://127.0.0.1:8080)
VOICEROID_DAEMON_URL=http://127.0.0.1:8080

# Basic authentication (if required)
VOICEROID_DAEMON_USERNAME=your_username
VOICEROID_DAEMON_PASSWORD=your_password

# Default voice parameters (optional)
VOICEROID_DEFAULT_VOLUME=1.0        # 0-2
VOICEROID_DEFAULT_SPEED=1.3         # 0.5-4
VOICEROID_DEFAULT_PITCH=1.0         # 0.5-2
VOICEROID_DEFAULT_EMPHASIS=1.1      # 0-2
VOICEROID_DEFAULT_PAUSE_MIDDLE=150  # 80-500
VOICEROID_DEFAULT_PAUSE_LONG=370    # 100-2000
VOICEROID_DEFAULT_PAUSE_SENTENCE=800 # 0-10000

Usage

Running the MCP Server

# Run directly with tsx (no build required)
npm start

# Or for development with auto-reload
npm run dev

Configuring with Claude Desktop

Add the following to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "voiceroid-daemon": {
      "command": "npx",
      "args": ["tsx", "/path/to/voiceroid_daemon-mcp/src/index.ts"],
      "env": {
        "VOICEROID_DAEMON_URL": "http://127.0.0.1:8080"
      }
    }
  }
}

Available Tools

test_connection

Test the connection to voiceroid_daemon server.

No parameters required

convert_text

Convert Japanese text to phonetic kana reading.

Parameters:

  • text (string, required): Text to convert to kana

speak_text

Generate and play speech audio from text.

Parameters:

  • text (string, required): Text to speak

  • kana (string, optional): Phonetic reading in kana

  • volume (number, optional): Voice volume (0-2, default: 1)

  • speed (number, optional): Speech speed (0.5-4, default: 1)

  • pitch (number, optional): Voice pitch (0.5-2, default: 1)

  • emphasis (number, optional): Emphasis level (0-2, default: 1)

Example Usage in Claude

Once configured, you can use the tools in Claude:

Use the test_connection tool to check if voiceroid_daemon is running.

Convert "こんにちは" to kana using the convert_text tool.

Use speak_text to say "こんにちは、今日はいい天気ですね" with speed 1.2.

Troubleshooting

Connection Failed

  1. Ensure voiceroid_daemon is running

  2. Check the URL in your configuration

  3. Verify firewall settings allow connections

  4. Test with curl: curl http://127.0.0.1:8080/

Audio Playback Issues

  • macOS: Uses afplay (built-in)

  • Windows: Uses PowerShell's Media.SoundPlayer

  • Linux: Requires aplay (usually part of alsa-utils)

Authentication Errors

If voiceroid_daemon requires authentication, ensure you've set:

  • VOICEROID_DAEMON_USERNAME

  • VOICEROID_DAEMON_PASSWORD

Development

# Type checking
npm run typecheck

# Linting
npm run lint

# Run in development mode
npm run dev

License

MIT

Available Tools

3 tools
convert_textB

Convert text to phonetic kana reading

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to convert to kana

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the conversion action but lacks details on traits like rate limits, error handling, or output format (e.g., whether it returns a string or structured data). This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It is appropriately sized for a simple tool with one parameter, making it easy to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a conversion tool. It doesn't explain what the output looks like (e.g., kana format, potential errors), nor does it address behavioral aspects like performance or limitations. For a tool with no structured support, more context is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'text' parameter clearly documented. The description adds no additional meaning beyond what the schema provides, such as examples or constraints on the text input. However, with high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('convert') and target resource ('text to phonetic kana reading'), with precise differentiation from sibling tools like 'speak_text' (which likely produces audio) and 'test_connection' (which is unrelated). It uses a verb+resource structure that leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives. While it implicitly suggests usage for text-to-kana conversion, it doesn't mention scenarios where it might be preferred over other methods or tools, nor does it specify prerequisites or exclusions. The description assumes context without explicit direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

speak_textC

Generate speech audio from text and play it

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to speak
kanaNoOptional phonetic reading in kana
volumeNoVoice volume (0-2, default: 1)
speedNoSpeech speed (0.5-4, default: 1)
pitchNoVoice pitch (0.5-2, default: 1)
emphasisNoEmphasis level (0-2, default: 1)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'play it' which implies an audio output action, but fails to describe critical behaviors like whether this is a read-only or mutative operation, potential side effects (e.g., audio playback on the system), error handling, or performance characteristics. This is inadequate for a tool with audio generation and playback.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just one sentence that efficiently conveys the core functionality. It's front-loaded with the essential action ('Generate speech audio from text') and includes the additional behavior ('and play it') without any wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that generates and plays audio with 6 parameters and no output schema, the description is insufficient. It lacks information about the audio format, playback mechanism, error conditions, or what happens on success. With no annotations to provide behavioral context, this leaves significant gaps for the agent to understand the tool's full behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, providing clear documentation for all 6 parameters including ranges and defaults. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 ('Generate speech audio from text') and resource ('speech audio'), making it immediately understandable. However, it doesn't distinguish itself from sibling tools like 'convert_text' which might have overlapping functionality, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'convert_text' or 'test_connection'. It lacks context about prerequisites, limitations, or scenarios where this tool is preferred, leaving the agent with minimal usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_connectionB

Test connection to voiceroid_daemon server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions testing connection but doesn't disclose behavioral traits like what constitutes a successful test, error conditions, timeout behavior, or whether this performs any network operations. For a connection-testing tool with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with zero waste—it directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate but lacks details on what the test entails or expected outcomes. It covers the basic purpose but doesn't provide enough context for an agent to fully understand the tool's behavior without additional inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (empty schema). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for tools with no parameters, as it appropriately doesn't discuss nonexistent inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as testing connection to a specific server (voiceroid_daemon), using a specific verb ('Test connection') and resource ('voiceroid_daemon server'). However, it doesn't explicitly differentiate from sibling tools (convert_text, speak_text), which are presumably for different operations rather than connection testing alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (testing server connection), but doesn't provide explicit guidance on when to use this tool versus alternatives or prerequisites. Given the sibling tools are for text conversion and speaking, the context suggests this is for connectivity verification before using those tools, but this isn't stated.

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.

  1. 3 tool updatesv1.0.0
    • First observedconvert_text
    • First observedspeak_text
    • First observedtest_connection

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: convert_text handles phonetic conversion, speak_text handles speech generation and playback, and test_connection handles server connectivity testing. An agent can easily distinguish between these three functions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case naming: convert_text, speak_text, and test_connection. The naming is predictable and readable throughout the set.

Tool Count4/5

Three tools is reasonable for a voiceroid daemon server, covering core text-to-speech operations and connectivity. It's slightly minimal but functional for the apparent scope, lacking only minor enhancements like configuration or status tools.

Completeness4/5

The toolset covers essential text-to-speech workflows: phonetic conversion, speech generation/playback, and server connectivity. Minor gaps exist, such as no tools for managing voice parameters, listing available voices, or controlling playback (e.g., stop/pause), but core functionality is present.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers