Skip to main content
Glama

VOICEVOX TTS MCP

英語 | 日本語

VOICEVOX を使用したテキスト読み上げ MCP サーバー

🎮 ブラウザデモを試す — ブラウザで VoicevoxClient を直接テスト

できること

  • AI アシスタントに話させる — Claude Desktop などの MCP クライアントからテキスト読み上げ

  • UI オーディオプレーヤー (MCP Apps) — インタラクティブなプレーヤーでチャット内で直接音声を再生 (ChatGPT / Claude Desktop / Claude Web など)

  • 複数キャラクターの会話 — 1 回の呼び出しでセグメントごとに話者を切り替え

  • スムーズな再生 — キュー管理、即時再生、プリフェッチ、ストリーミング

  • クロスプラットフォーム — Windows、macOS、Linux (WSL を含む) で動作

Related MCP server: voiceroid_daemon-mcp

UI オーディオプレーヤー (MCP Apps)

UI オーディオプレーヤー

voicevox_speak_player ツールは MCP Apps を使用して、チャット内にインタラクティブなオーディオプレーヤーを直接レンダリングします。標準の voicevox_speak ツールがサーバー上で音声を再生するのに対し、音声はクライアント側 (ブラウザ/アプリ) で再生されます — サーバーにオーディオデバイスは不要です。

特徴

  • クライアント側再生 — 音声はサーバーではなく Claude Desktop のチャット内で再生されます。リモート接続でも動作します。

  • 再生/一時停止コントロール — 会話に埋め込まれた完全な再生コントロール

  • 複数話者による対話 — トラックナビゲーション付きの 1 つのプレーヤーで複数の話者を順次再生

  • 話者切り替え — プレーヤー UI から直接任意のセグメントの声を変更

  • セグメント編集 — セグメントごとに速度、音量、イントネーション、ポーズ長、前後の無音を調整

  • アクセント句編集 — UI で直接アクセント位置とモーラのピッチを編集

  • セグメントの追加 / 削除 / 並べ替え — ドラッグアンドドロップでトラックを並べ替え、新しいセグメントをインラインで追加

  • WAV エクスポート — すべてのトラックを番号付き WAV ファイルとして保存し、出力フォルダーを自動的に開く

  • ユーザー辞書マネージャー — VOICEVOX ユーザー辞書の単語をプレビュー再生付きで追加、編集、削除

  • セッション間の状態復元 — プレーヤーの状態はサーバーに保持され、チャットを再度開くと以前のトラックが復元されます

環境によるエクスポート動作:

  • 保存して開く は常に WAV ファイルをエクスポートします。ファイルエクスプローラーを開くことができない場合でも、エクスポートは成功し、保存パスが UI に表示されます。

  • 出力フォルダーを選択 は Windows/macOS でネイティブのディレクトリピッカーを使用します。サポートされていない環境では、このアクションはデフォルトのエクスポートディレクトリにフォールバックします。

複数話者再生

トラックリスト

セグメント編集

複数話者プレーヤー

トラックリスト

セグメント編集

話者選択

辞書マネージャー

WAV エクスポート

話者選択

辞書マネージャー

WAV エクスポート

対応クライアント

クライアント

接続

備考

ChatGPT

HTTP (リモート)

VOICEVOX_PLAYER_DOMAIN が必要

Claude Desktop

stdio (ローカル)

そのまま動作

Claude Desktop

HTTP (mcp-remote 経由)

VOICEVOX_PLAYER_DOMAIN を設定しない

注: speak_player は MCP Apps をサポートするホストが必要です。MCP Apps をサポートしないホストでは、このツールは利用できず、代わりに speak (サーバー側再生) を使用できます。

プレーヤー MCP ツール

ツール

説明

voicevox_speak_player

新しいプレーヤーセッションを作成し、UI を表示します。viewUUID を返します。

voicevox_resynthesize_player

既存のプレーヤーのすべてのセグメントを更新します (呼び出しごとに新しい viewUUID)。

voicevox_get_player_state

AI チューニング用に現在のプレーヤー状態を読み取ります (ページング付き)。

voicevox_open_dictionary_ui

ユーザー辞書マネージャー UI を開きます。

クイックスタート

要件

  • Node.js 20.0.0 以上 (または Bun) または Docker

  • VOICEVOX Engine (実行中である必要があります。Docker Compose に含まれています)

  • ffplay (オプション、推奨 — Docker では不要)

FFplay のインストール

ffplay は FFmpeg に含まれる軽量プレーヤーで、標準入力からの再生をサポートしています。利用可能な場合、低遅延のストリーミング再生が自動的に有効になります。

💡 FFplay はオプションです。 ない場合は、一時ファイルベースの再生にフォールバックします (Windows: PowerShell、macOS: afplay、Linux: aplay など)。

  • 簡単セットアップ: 各 OS のワンライナーインストール (以下の手順を参照)

  • 必須: ffplay が PATH にあること (インストール後にターミナル/アプリを再起動)

インストール例:

  • Windows (いずれか)

  • macOS

    • Homebrew: brew install ffmpeg

  • Linux

    • Debian/Ubuntu: sudo apt-get update && sudo apt-get install -y ffmpeg

    • Fedora: sudo dnf install -y ffmpeg

    • Arch: sudo pacman -S ffmpeg

PATH 設定:

  • Windows: 環境変数に ...\ffmpeg\bin を追加し、PowerShell/ターミナルとエディター (Claude/VS Code など) を再起動

    • 確認: powershell -c "$env:Path" に ffmpeg のパスが含まれていること

  • macOS/Linux: 通常は自動検出されます。必要に応じて echo $PATH で確認し、シェルを再起動してください。

  • MCP クライアント (Claude Desktop/Code): PATH を再読み込みするためにアプリを再起動してください。

確認:

ffplay -version

バージョン情報が表示されればインストール完了です。CLI/MCP は ffplay を自動検出し、標準入力ストリーミング再生を使用します。

開始までの 3 ステップ

1. VOICEVOX Engine を起動

2. Claude Desktop の設定ファイルに追加

設定ファイルの場所:

  • 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"]
    }
  }
}

💡 Bun を使用する場合npxbunx に置き換えるだけです:

"command": "bunx", "args": ["@kajidog/mcp-tts-voicevox"]

3. Claude Desktop を再起動

これで完了です! Claude に「こんにちは」と頼むと、話してくれます!

Docker でクイックスタート

Docker Compose を使用すると、MCP サーバーと VOICEVOX Engine の両方を 1 つのコマンドで実行できます。Node.js や VOICEVOX のインストールは不要です。

1. コンテナを起動

docker compose up -d

これにより、VOICEVOX Engine と MCP サーバー (HTTP モード、ポート 3000) が起動します。

2. Claude Desktop の設定ファイルに追加 (mcp-remote を使用)

{
  "mcpServers": {
    "tts-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
    }
  }
}

3. Claude Desktop を再起動

セキュリティ (Docker): docker-compose.yml はポート 3000 を 認証なしで 公開します。MCP_ALLOWED_HOSTS はここでは防御策にはなりません — ブラウザ以外のクライアントは任意の Host ヘッダーを送信できるため、ポートに到達できる人は誰でもサーバーを使用できます。MCP_API_KEY を設定し (X-API-Key として送信)、またはポートを信頼できるネットワーク / localhost のみにバインドしてください。また、VOICEVOX_ALLOWED_OUTPUT_DIRS を設定して、ファイル書き込みツールが書き込める場所を制限することを検討してください。

制限事項 (Docker): Docker コンテナにはオーディオデバイスがないため、voicevox_speak ツール (サーバー側再生) はデフォルトで無効になっています。代わりに voicevox_speak_player を使用してください — これはクライアント側 (Claude Desktop 内) で音声を再生し、サーバーにオーディオデバイスがなくても動作します。詳細は UI オーディオプレーヤー を参照してください。


MCP ツール

voicevox_speak — テキスト読み上げ

Claude から呼び出せるメイン機能。

パラメータ

説明

デフォルト

text

読み上げるテキスト (複数セグメントは改行で区切る)

必須

phrases

インラインアクセント表記 (text より優先)

(未設定)

speaker

話者 ID

1

speedScale

再生速度

1.0

immediate

即時再生 (キューをクリア)

true

waitForStart

再生開始を待つ

false

waitForEnd

再生完了を待つ

false

immediate / waitForStart / waitForEnd は、対応する --restrict-* オプションが設定されている場合、ツールスキーマから消えます。

例:

// 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": "コン[ニ]チワ,セ[カ]イ" }

インラインアクセント表記

phrases (およびユーザー辞書ツールの発音フィールド) は、インラインアクセントマーカー付きのカタカナを受け入れます:

  • , はアクセント句を区切ります — コン[ニ]チワ,セ[カ]イ

  • [ はピッチが下がる位置を示します。コン[ニ]チワ はアクセントが に下がることを意味します

  • 句の角括弧を省略すると、その句には VOICEVOX 独自のアクセント推定が使用されます

phrases が指定されている場合でも text は必須です — そこにプレーンテキストを渡し、表記が読み上げられます。

voicevox_get_accent_phrases は、指定されたテキストに対して同じ表記を返すため、推定されたアクセントを読み取り、角括弧を調整して phrases にフィードバックできます。

ツール

説明

voicevox_speak_player

UI オーディオプレーヤーで読み上げ ( プレーヤー MCP ツール を参照)

voicevox_ping

VOICEVOX Engine の接続を確認

voicevox_get_speakers

利用可能な話者のリストを取得

voicevox_stop_speaker

再生を停止し、キューをクリア

voicevox_synthesize_file

音声ファイルを生成

ユーザー辞書ツール (グループ dictionary):

ツール

説明

voicevox_get_accent_phrases

テキストの読みとアクセント位置をインライン表記で取得

voicevox_get_user_dictionary

ユーザー辞書の単語を一覧表示 (フィルター + ページング)

voicevox_add_user_dictionary_word

単語を追加 (発音はインラインアクセント表記を受け付け)

voicevox_update_user_dictionary_word

単語を更新 (省略したフィールドは値を保持)

voicevox_delete_user_dictionary_word

UUID で単語を削除

voicevox_add_user_dictionary_words

複数の単語を一度に追加

voicevox_update_user_dictionary_words

複数の単語を一度に更新

任意のツールは、--disable-tools / VOICEVOX_DISABLED_TOOLS で個別に、または --disable-groups / VOICEVOX_DISABLED_GROUPS でグループ単位で無効にできます。


設定

VOICEVOX 設定

変数

説明

デフォルト

VOICEVOX_URL

エンジンURL

http://localhost:50021

VOICEVOX_DEFAULT_SPEAKER

デフォルトの話者ID

1

VOICEVOX_DEFAULT_SPEED_SCALE

再生速度

1.0

VOICEVOX_RETRY_COUNT

失敗したAPIリクエストの再試行回数(0で無効)

2

VOICEVOX_RETRY_DELAY_MS

初回再試行遅延(ミリ秒、指数バックオフ)

250

VOICEVOX_TIMEOUT_MS

単一のVOICEVOX APIリクエストのタイムアウト(ミリ秒)。長いテキストや遅いエンジンの場合は引き上げてください

30000

再生オプション

変数

説明

デフォルト

VOICEVOX_USE_STREAMING

ストリーミング再生(ffplayが必要)

false

VOICEVOX_DEFAULT_POST_PHONEME_LENGTH

セグメントごとの末尾の無音時間(秒)。キューされたセグメント間のポーズを長くするには増やします(ストリーミング再生時に音声の末尾が切れるのも防ぎます)

エンジンデフォルト

VOICEVOX_DEFAULT_IMMEDIATE

即時再生

true

VOICEVOX_DEFAULT_WAIT_FOR_START

再生開始を待つ

false

VOICEVOX_DEFAULT_WAIT_FOR_END

再生終了を待つ

false

制限設定

AIが特定のオプションを指定することを制限します。

変数

説明

VOICEVOX_RESTRICT_IMMEDIATE

immediateオプションを制限

VOICEVOX_RESTRICT_WAIT_FOR_START

waitForStartオプションを制限

VOICEVOX_RESTRICT_WAIT_FOR_END

waitForEndオプションを制限

ツールの無効化

# Disable individual tools
export VOICEVOX_DISABLED_TOOLS=speak_player,synthesize_file

# Disable a built-in group of tools
export VOICEVOX_DISABLED_GROUPS=player

# Combine groups and individual tools
export VOICEVOX_DISABLED_GROUPS=dictionary
export VOICEVOX_DISABLED_TOOLS=synthesize_file

VOICEVOX_DISABLED_GROUPS / --disable-groupsの組み込みグループ:

グループ

ツール

player

speak_player, resynthesize_player, get_player_state, open_dictionary_ui

dictionary

get_accent_phrases, get_user_dictionary, add_user_dictionary_word, update_user_dictionary_word, delete_user_dictionary_word, add_user_dictionary_words, update_user_dictionary_words

file

synthesize_file

apps

speak_player, resynthesize_player, open_dictionary_ui(MCPアプリUIツール)

UIプレイヤー設定

変数

説明

デフォルト

VOICEVOX_PLAYER_DOMAIN

UIプレイヤーのウィジェットドメイン(ChatGPTで必要、例:https://your-app.onrender.com

(未設定)

VOICEVOX_AUTO_PLAY

UIプレイヤーで音声を自動再生

true

VOICEVOX_PLAYER_EXPORT_ENABLED

UIプレイヤーからのトラック書き出し(ダウンロード)を有効にする(無効にするにはfalse

true

VOICEVOX_PLAYER_EXPORT_DIR

書き出したトラックのデフォルト出力ディレクトリ(フォルダピッカーが利用できない場合のフォールバックとしても使用)

./voicevox-player-exports

VOICEVOX_PLAYER_CACHE_DIR

プレイヤーキャッシュファイル(*.txt)とデフォルトのプレイヤー状態ファイルのディレクトリ

./.voicevox-player-cache

VOICEVOX_PLAYER_AUDIO_CACHE_ENABLED

ディスク上の永続的なオーディオキャッシュを有効にする(falseでディスクキャッシュの読み書きを無効化)

true

VOICEVOX_PLAYER_AUDIO_CACHE_TTL_DAYS

オーディオキャッシュの保持日数(0:ディスクキャッシュ無効、-1:TTLクリーンアップなし)

30

VOICEVOX_PLAYER_AUDIO_CACHE_MAX_MB

オーディオキャッシュのサイズ上限(MB)(0:ディスクキャッシュ無効、-1:無制限)

512

VOICEVOX_PLAYER_STATE_FILE

永続化されたプレイヤー状態JSONのパス

<VOICEVOX_PLAYER_CACHE_DIR>/player-state.json

ファイル出力設定

変数

説明

デフォルト

VOICEVOX_ALLOWED_OUTPUT_DIRS

ファイル書き込みツール(voicevox_synthesize_file、プレイヤートラック書き出し)が書き込み可能なカンマ区切りのディレクトリ。これらの外のパスはエラーで拒否されます。未設定の場合は制限なしを意味します — サーバーをHTTPで公開する場合は設定を推奨

(未設定)

サーバー設定

変数

説明

デフォルト

MCP_HTTP_MODE

HTTPモードを有効にする

false

MCP_HTTP_PORT

HTTPポート

3000

MCP_HTTP_HOST

HTTPホスト

0.0.0.0

MCP_ALLOWED_HOSTS

許可ホスト(カンマ区切り)

localhost,127.0.0.1,[::1]

MCP_ALLOWED_ORIGINS

許可オリジン(カンマ区切り)

http://localhost,http://127.0.0.1,...

MCP_API_KEY

/mcpに必要なAPIキー(X-API-KeyまたはAuthorization: Bearerで送信)

(未設定)

コマンドライン引数は環境変数より優先されます。 完全かつ最新のオプション一覧は、常にnpx @kajidog/mcp-tts-voicevox --helpで確認できます。

# Basic settings
npx @kajidog/mcp-tts-voicevox --url http://192.168.1.100:50021 --speaker 3 --speed 1.2

# HTTP mode
npx @kajidog/mcp-tts-voicevox --http --port 8080

# With restrictions
npx @kajidog/mcp-tts-voicevox --restrict-immediate --restrict-wait-for-end

# Disable individual tools
npx @kajidog/mcp-tts-voicevox --disable-tools speak_player,synthesize_file

# Disable a tool group
npx @kajidog/mcp-tts-voicevox --disable-groups player

引数

説明

--help, -h

ヘルプを表示

--version, -v

バージョンを表示

--init

デフォルト設定で .voicevoxrc.json を生成

--config <path>

設定ファイルのパス

--url <value>

VOICEVOX Engine の URL

--speaker <value>

デフォルトの話者 ID

--speed <value>

再生速度

--use-streaming / --no-use-streaming

ストリーミング再生

--post-phoneme-length <sec>

セグメントごとの末尾無音(キューされたセグメント間のポーズ)

--immediate / --no-immediate

即時再生

--wait-for-start / --no-wait-for-start

開始待機

--wait-for-end / --no-wait-for-end

終了待機

--restrict-immediate

即時再生を制限

--restrict-wait-for-start

waitForStart を制限

--restrict-wait-for-end

waitForEnd を制限

--allowed-output-dirs <dirs>

ファイル書き込みツールが書き込み可能なディレクトリ(カンマ区切り。未設定 = 制限なし)

--disable-tools <tools>

ツールを無効化(カンマ区切りのツール名)

--disable-groups <groups>

ツールグループを無効化: playerdictionaryfileapps

--auto-play / --no-auto-play

UI プレイヤーでの自動再生

--player-export / --no-player-export

UI プレイヤーでのトラック書き出し(ダウンロード)の有効/無効

--player-export-dir <dir>

書き出したトラックのデフォルト出力ディレクトリ

--player-cache-dir <dir>

プレイヤーのキャッシュディレクトリ

--player-state-file <path>

永続化されたプレイヤー状態のファイルパス

--player-audio-cache / --no-player-audio-cache

プレイヤーのディスク音声キャッシュの有効/無効

--player-audio-cache-ttl-days <days>

音声キャッシュの保持日数(0: 無効、-1: TTL クリーンアップなし)

--player-audio-cache-max-mb <mb>

音声キャッシュのサイズ上限(MB)(0: 無効、-1: 無制限)

--http

HTTP モード

--port <value>

HTTP ポート

--host <value>

HTTP ホスト

--allowed-hosts <hosts>

許可するホスト(カンマ区切り)

--allowed-origins <origins>

許可するオリジン(カンマ区切り)

--api-key <key>

/mcp に必要な API キー

環境変数や CLI 引数の代わりに(またはそれらに加えて)JSON 設定ファイルを使用できます。設定項目が多い場合に便利です。

優先順位: CLI 引数 > 環境変数 > 設定ファイル > デフォルト値

設定ファイルの生成

npx @kajidog/mcp-tts-voicevox --init

これにより、現在のディレクトリにすべてのデフォルト設定を含む .voicevoxrc.json が作成されます。必要に応じて編集してください。

カスタム設定ファイルパスの使用

npx @kajidog/mcp-tts-voicevox --config ./my-config.json

または環境変数を使用:

VOICEVOX_CONFIG=./my-config.json npx @kajidog/mcp-tts-voicevox

.voicevoxrc.json の例

{
  "url": "http://192.168.1.50:50021",
  "speaker": 3,
  "speed": 1.2,
  "http": true,
  "port": 8080,
  "disable-tools": ["synthesize_file"],
  "disable-groups": ["dictionary"]
}

キーは kebab-case(use-streaming)、camelCase(useStreaming)、または内部キー名(defaultSpeaker)で記述できます。現在のディレクトリに .voicevoxrc.json が存在する場合、自動的に読み込まれます。

リモート接続用:

サーバーを起動:

# Linux/macOS
MCP_HTTP_MODE=true MCP_HTTP_PORT=3000 npx @kajidog/mcp-tts-voicevox

# Windows PowerShell
$env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevox

Claude Desktop 設定(mcp-remote 使用):

{
  "mcpServers": {
    "tts-mcp-proxy": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
    }
  }
}

プロジェクトごとの話者設定

Claude Code では、.mcp.json のカスタムヘッダーを使用して、プロジェクトごとに異なるデフォルト話者を設定できます:

ヘッダー

説明

X-Voicevox-Speaker

このプロジェクトのデフォルト話者 ID

X-API-Key

MCP_API_KEY 設定時の API キー

.mcp.json の例:

{
  "mcpServers": {
    "tts": {
      "type": "http",
      "url": "http://localhost:3000/mcp",
      "headers": {
        "X-Voicevox-Speaker": "113",
        "X-API-Key": "your-api-key"
      }
    }
  }
}

これにより、各プロジェクトで異なる音声キャラクターを自動的に使用できます。

優先順位:

  1. ツール呼び出しの明示的な speaker パラメータ(最優先)

  2. X-Voicevox-Speaker ヘッダーによるプロジェクトのデフォルト

  3. グローバルの VOICEVOX_DEFAULT_SPEAKER 設定(最下位)

WSL から Windows 上で動作する MCP サーバーへの接続:

1. WSL から Windows ホストの IP を取得

# Method 1: From default gateway
ip route show | grep -oP 'default via \K[\d.]+'
# Usually in the format 172.x.x.1

# Method 2: From /etc/resolv.conf (WSL2)
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'

2. Windows でサーバーを起動

WSL からのアクセスを許可するには、WSL ゲートウェイ IP を MCP_ALLOWED_HOSTS に追加します:

$env:MCP_HTTP_MODE='true'
$env:MCP_ALLOWED_HOSTS='localhost,127.0.0.1,172.29.176.1'
npx @kajidog/mcp-tts-voicevox

または CLI 引数を使用:

npx @kajidog/mcp-tts-voicevox --http --allowed-hosts "localhost,127.0.0.1,172.29.176.1"

3. WSL の設定(.mcp.json)

{
  "mcpServers": {
    "tts": {
      "type": "http",
      "url": "http://172.29.176.1:3000/mcp"
    }
  }
}

⚠️ WSL 内では、localhost は WSL 自体を指します。Windows ホストにアクセスするには WSL ゲートウェイ IP を使用してください。

ChatGPT で使用するには、VOICEVOX Engine にアクセスできる MCP サーバーを HTTP モードでクラウドにデプロイします。

1. クラウドへのデプロイ

Docker を使用して Render、Railway などにデプロイします(Dockerfile 同梱)。

2. VOICEVOX Engine のセットアップ

VOICEVOX Engine をローカルで実行し、ngrok で公開するか、MCP サーバーと一緒にデプロイします。

3. 環境変数の設定

変数

説明

VOICEVOX_URL

https://xxxx.ngrok-free.app

VOICEVOX Engine の URL

MCP_HTTP_MODE

true

HTTP モードを有効化

MCP_ALLOWED_HOSTS

your-app.onrender.com

デプロイしたホスト名

VOICEVOX_PLAYER_DOMAIN

https://your-app.onrender.com

UI プレイヤー用のウィジェットドメイン(ChatGPT で必須)

VOICEVOX_DISABLED_TOOLS

speak

サーバー側の再生を無効化(オーディオデバイスなし)

VOICEVOX_PLAYER_EXPORT_ENABLED

false

書き出し機能を無効化(クラウドからファイルをダウンロード不可)

4. ChatGPT にコネクターを追加

ChatGPT の設定 → コネクター → MCP サーバー URL を追加(https://your-app.onrender.com/mcp)。

基本的な手順は ChatGPT と同じですが、VOICEVOX_PLAYER_DOMAIN の値が異なります。

Claude Web では、ui.domainハッシュベースの専用ドメインである必要があります。次のコマンドで計算します:

node -e "console.log(require('crypto').createHash('sha256').update('Your MCP server URL').digest('hex').slice(0,32)+'.claudemcpcontent.com')"

例: MCP サーバーの URL が https://your-app.onrender.com/mcp の場合:

node -e "console.log(require('crypto').createHash('sha256').update('https://your-app.onrender.com/mcp').digest('hex').slice(0,32)+'.claudemcpcontent.com')"
# Example output: 48fb73a6...claudemcpcontent.com

この出力値を VOICEVOX_PLAYER_DOMAIN として設定します。

: ChatGPT と Claude Web では異なる VOICEVOX_PLAYER_DOMAIN 値が必要なため、1 つのインスタンスで両方のクライアントに同時に対応することはできません。それぞれに別々のインスタンスをデプロイするか、対象クライアントに応じて環境変数を切り替えてください。


トラブルシューティング

1. VOICEVOX Engine が起動しているか確認

curl http://localhost:50021/speakers

2. プラットフォーム別の再生ツールを確認

OS

必要なツール

Linux

aplaypaplayplayffplay のいずれか

macOS

afplay(プリインストール済み)

Windows

PowerShell(プリインストール済み)

  • パッケージのインストールを確認: npm list -g @kajidog/mcp-tts-voicevox

  • 設定ファイルの JSON 構文を確認

  • クライアントを再起動


パッケージ構成

パッケージ

説明

@kajidog/mcp-tts-voicevox

MCP サーバー(apps/mcp-tts

@kajidog/voicevox-client

汎用 VOICEVOX クライアントライブラリ(単独で使用可能)

@kajidog/mcp-core

共有 MCP 基盤(設定スキーマ、HTTP/stdio ランチャー)。未公開 — サーバーにバンドルされる

@kajidog/player-ui

React ベースのオーディオプレイヤー UI。単一の HTML ファイルにバンドルされる。未公開


セットアップ

git clone https://github.com/kajidog/mcp-tts-voicevox.git
cd mcp-tts-voicevox
pnpm install

コマンド

パッケージマネージャーは pnpm です(npm / yarn はサポートされていません)。

Command

Description

pnpm build

すべてのパッケージをビルド

pnpm test

テストを実行

pnpm lint

リントを実行(ワークスペース全体に対して単一のBiomeパス)

pnpm typecheck

すべてのパッケージを型チェック

pnpm changeset

ユーザー向けの変更に対するchangesetを追加

開発サーバーはサーバーパッケージにあるため、フィルターを付けて実行します:

Command

Description

pnpm --filter @kajidog/mcp-tts-voicevox dev

開発サーバーを起動(stdio)

pnpm --filter @kajidog/mcp-tts-voicevox dev:http

HTTPモードで開発サーバーを起動

pnpm --filter @kajidog/mcp-tts-voicevox dev:bun

Bunで開発サーバーを起動

pnpm --filter @kajidog/mcp-tts-voicevox dev:bun:http

BunでHTTP開発サーバーを起動


ライセンス

ISC

Available Tools

7 tools
generate_queryGenerate QueryC

Generate a query for voice synthesis

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText for voice synthesis
speakerNoDefault speaker ID (optional)
speedScaleNoPlayback speed (optional, default from environment)

TDQS

C2.7/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. 'Generate a query' suggests this creates some intermediate representation, but doesn't disclose what happens next - does it return a query ID for later use? Does it validate parameters? Is it read-only or has side effects? The description lacks behavioral context about permissions, rate limits, or what 'query' means operationally.

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 with zero wasted words. It's appropriately sized for a tool with good schema coverage and gets straight to the point without unnecessary elaboration. Every word earns its place in conveying the core purpose.

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 with no annotations and no output schema, the description is insufficient. It doesn't explain what the generated query is used for, what format it returns, or how it differs from actual synthesis tools. Given the complexity of voice synthesis workflows and multiple sibling tools, more context about this tool's role in the ecosystem is needed.

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?

Schema description coverage is 100%, so the schema already documents all three parameters (text, speaker, speedScale) with their descriptions. The tool description adds no additional parameter semantics beyond what's in the schema. The baseline score of 3 reflects adequate but minimal value addition given the comprehensive schema coverage.

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

Purpose3/5

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

The description states 'Generate a query for voice synthesis' which provides a basic purpose (verb: generate, resource: query for voice synthesis). However, it's vague about what the query actually does - is it for previewing, testing, or preparing synthesis? It doesn't distinguish from sibling tools like 'synthesize_file' or 'speak' which also relate to voice synthesis.

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. With sibling tools like 'synthesize_file' and 'speak' that also handle voice synthesis, there's no indication whether this tool is for preparation, testing, or a different phase of the synthesis workflow. No context about prerequisites or exclusions is provided.

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

get_speaker_detailGet Speaker DetailC

Get detail of a speaker by id

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesSpeaker UUID (speaker uuid)

TDQS

C2.9/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 the full burden of behavioral disclosure. It mentions 'Get detail' but doesn't specify if this is a read-only operation, what permissions are needed, error handling, or response format. This leaves significant gaps for a tool that likely interacts with a speaker database.

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 with no wasted words. It's front-loaded with the core action ('Get detail'), making it easy to scan 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 no annotations and no output schema, the description is incomplete. It doesn't explain what 'detail' includes (e.g., speaker attributes, capabilities), potential errors, or how this fits with sibling tools like 'synthesize_file'. For a tool with one parameter but unknown behavioral traits, more context is needed.

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?

Schema description coverage is 100%, with the parameter 'uuid' documented as 'Speaker UUID (speaker uuid)'. The description adds no additional meaning beyond this, such as format examples or where to obtain the UUID. Baseline 3 is appropriate since 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 verb ('Get detail') and resource ('speaker'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_speakers' (which likely lists speakers) or explain what 'detail' entails beyond the ID lookup.

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. For example, it doesn't clarify if this should be used after 'get_speakers' to fetch more information or in what contexts (e.g., before synthesis). The description only states the basic function without context.

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

get_speakersGet SpeakersC

Get a list of available speakers

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 states the tool retrieves a list, implying a read-only operation, but doesn't cover aspects like whether it requires authentication, has rate limits, returns paginated results, or what format the list is in. For a tool with zero annotation coverage, this is a significant gap 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.

Conciseness5/5

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

The description is a single, efficient sentence ('Get a list of available speakers') that is front-loaded and wastes no words. It directly states the tool's purpose without unnecessary elaboration, making it highly concise and well-structured for its simplicity.

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 tool's complexity (simple list retrieval) but lack of annotations and output schema, the description is incomplete. It doesn't explain what the list contains, how it's formatted, or any behavioral traits. For a tool with no structured data beyond the input schema, more context is needed to be fully helpful to an agent.

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 input schema has 0 parameters with 100% coverage, so the schema fully documents the lack of inputs. The description doesn't add parameter details beyond this, which is appropriate. Since there are no parameters, the baseline is 4, as the description doesn't need to compensate for any gaps.

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

Purpose3/5

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

The description states the tool's purpose ('Get a list of available speakers'), which is clear but vague. It specifies the verb ('Get') and resource ('speakers'), but doesn't distinguish it from sibling tools like 'get_speaker_detail' or explain what 'available' means in this context. This is adequate but has clear gaps in specificity.

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. It doesn't mention sibling tools like 'get_speaker_detail' for detailed information or 'synthesize_file' for synthesis operations, nor does it specify prerequisites or contexts for usage. This leaves the agent without explicit or implied usage instructions.

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

ping_voicevoxPing VOICEVOXB

Check if VOICEVOX Engine is running and reachable

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 the full burden of behavioral disclosure. It states the tool checks if the engine is 'running and reachable,' implying a read-only, non-destructive operation, but doesn't detail what happens on failure (e.g., error responses), latency, or any side effects. For a tool with zero annotation coverage, this leaves gaps in understanding its behavior.

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: 'Check if VOICEVOX Engine is running and reachable.' It is front-loaded with the core purpose, has no wasted words, and is appropriately sized for a simple tool. Every part of the sentence earns its place by conveying essential information.

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 low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks details on usage context, error handling, or return values. Without an output schema, it doesn't explain what 'check' returns (e.g., status, boolean), leaving some gaps for an agent to understand fully.

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 the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, so it naturally adds no value beyond the schema. A baseline score of 4 is appropriate for zero-parameter tools, as there's no parameter information to compensate for.

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: 'Check if VOICEVOX Engine is running and reachable.' It uses a specific verb ('Check') and identifies the target resource ('VOICEVOX Engine'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'get_speakers' or 'synthesize_file', which serve different purposes but also interact with VOICEVOX.

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. The description doesn't mention prerequisites (e.g., before using other tools), exclusions, or contextual cues. For example, it doesn't specify if this should be called first to verify connectivity before invoking 'speak' or 'synthesize_file'.

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

speakSpeakA

Convert text to speech and play it. Text is split by line breaks (\n) into separate speech units. Each line is processed as an independent audio segment.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText split by line breaks (\n). IMPORTANT: Each line = one speech unit (processed and played separately). Keep the FIRST LINE SHORT for quick playback start - audio begins as soon as the first line is synthesized. Example: "Hi!\nThis is a longer explanation that follows." Optional speaker prefix per line: "1:Hello\n2:World"
queryNoVoice synthesis query
speakerNoDefault speaker ID (optional)
speedScaleNoPlayback speed (optional, default from environment)
immediateNoIf true, stops current playback and plays new audio immediately. If false, waits for current playback to finish. Default depends on environment variable.
waitForStartNoWait for playback to start (optional, default: false)
waitForEndNoWait for playback to end (optional, default: false)

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: text is split by line breaks into separate speech units, each line processed independently, and the first line should be short for quick playback start. It doesn't mention error handling, rate limits, or authentication needs, but covers core playback behavior adequately.

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 front-loaded with the core purpose in the first sentence, followed by specific behavioral details in the second. Both sentences earn their place by providing essential information without redundancy. It's appropriately sized for the tool's complexity.

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

Completeness4/5

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

Given no annotations and no output schema, the description does well to cover the main behavior and text processing logic. However, it doesn't address potential side effects (e.g., interrupting current playback, which is hinted at in the 'immediate' parameter schema), error cases, or what the tool returns. For a 7-parameter tool with mutation implications, it's good but not fully complete.

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?

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds minimal parameter semantics beyond the schema—it mentions line break processing and first line optimization, which relates to the 'text' parameter but doesn't significantly enhance understanding of parameters like 'query' or 'speaker'. Baseline 3 is appropriate given high schema coverage.

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 text to speech and play it') and resource (audio output), distinguishing it from siblings like 'synthesize_file' (file output) and 'stop_speaker' (playback control). It explicitly mentions text processing by line breaks, which adds specificity beyond the basic function.

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 for text-to-speech playback but doesn't explicitly state when to use this tool versus alternatives like 'synthesize_file' (for file output) or 'generate_query' (possibly for query generation). It provides some context about line break processing but lacks explicit guidance on tool selection scenarios.

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

stop_speakerStop SpeakerA

Stop current audio playback

ParametersJSON Schema
NameRequiredDescriptionDefault
random_stringYesDummy parameter for no-parameter tools

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It does not disclose behavioral traits like whether this requires specific permissions, what happens if no audio is playing, error conditions, or side effects. The description is minimal and lacks necessary context for safe invocation.

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 wasted words. It is perfectly front-loaded and appropriately sized for a simple action tool.

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 no annotations and no output schema, the description is incomplete for a mutation tool. It does not explain what happens after stopping playback (e.g., success/failure response, state changes) or error handling, leaving significant gaps for the agent.

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 meaningful parameters (only a dummy parameter with 100% schema coverage). The description correctly omits parameter details since none are needed for the core functionality, adding appropriate value beyond the schema.

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 'Stop current audio playback' clearly states the specific action (stop) and resource (current audio playback). It distinguishes from siblings like 'speak' or 'synthesize_file' which initiate playback rather than stop it.

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 when audio is currently playing, but does not explicitly state when to use this tool versus alternatives or provide any exclusions. It lacks guidance on prerequisites or timing considerations.

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

synthesize_fileSynthesize FileC

Generate an audio file and return its absolute path

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoText for voice synthesis (if both query and text provided, query takes precedence)
queryNoVoice synthesis query
outputYesOutput path for the audio file
speakerNoDefault speaker ID (optional)
speedScaleNoPlayback speed (optional, default from environment)

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 generating a file and returning a path, but lacks details on permissions, side effects (e.g., file system changes), rate limits, error handling, or audio format specifics. This is inadequate for a tool that creates files, as it doesn't clarify behavioral traits beyond the basic operation.

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 action and return value. Every word earns its place, with no redundancy or unnecessary elaboration, making it easy to parse 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 complexity of a file-generation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, error cases, or audio specifics, and lacks usage context. This leaves significant gaps for an AI agent to understand how to invoke it correctly in various scenarios.

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?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly (e.g., precedence rules for text vs. query, optional defaults). The description adds no additional parameter semantics beyond what the schema provides, such as explaining the audio generation process or file format details. Baseline 3 is appropriate when 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 action ('Generate an audio file') and the resource ('audio file'), and specifies the return value ('return its absolute path'). It distinguishes from siblings like 'speak' (which might stream audio) and 'generate_query' (which likely creates queries rather than files). However, it doesn't explicitly differentiate from all siblings (e.g., 'stop_speaker' is clearly different).

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. The description doesn't mention prerequisites, context, or comparisons to siblings like 'speak' (which might be for immediate playback) or 'generate_query' (which might be for query generation without file creation).

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. 7 tool updatesv0.3.1
    • First observedgenerate_query
    • First observedget_speaker_detail
    • First observedget_speakers
    • First observedping_voicevox
    • First observedspeak
    • First observedstop_speaker
    • First observedsynthesize_file

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: generate_query creates synthesis queries, get_speaker_detail and get_speakers handle speaker metadata, ping_voicevox checks engine status, speak plays audio, stop_speaker stops playback, and synthesize_file creates files. The descriptions make it easy to distinguish between query generation, metadata retrieval, status checking, real-time playback control, and file synthesis.

Naming Consistency4/5

The naming is mostly consistent with a verb_noun pattern (e.g., get_speakers, stop_speaker, synthesize_file), but there are minor deviations: generate_query uses 'generate' instead of a more specific verb like 'create', and ping_voicevox uses 'ping' as a verb which is less conventional but still understandable. All tools use snake_case consistently.

Tool Count5/5

With 7 tools, this server is well-scoped for a TTS system. It covers essential operations like checking engine status, retrieving speaker information, generating queries, real-time speech playback with control, and file synthesis. Each tool earns its place without feeling excessive or insufficient for the domain.

Completeness5/5

The tool set provides complete coverage for a TTS domain: it includes status checking (ping_voicevox), metadata retrieval (get_speakers, get_speaker_detail), query preparation (generate_query), real-time audio handling (speak, stop_speaker), and file output (synthesize_file). There are no obvious gaps—agents can perform the full lifecycle from setup to synthesis and playback control.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kajidog/mcp-tts-voicevox'

If you have feedback or need assistance with the MCP directory API, please join our Discord server