MCP TTS VOICEVOX について
MCP TTS VOICEVOX は、MCP クライアントでテキストを音声化するための VOICEVOX ベースのサーバーです。サーバー側での再生に加え、チャット内で再生や編集ができる MCP Apps プレーヤーを備えています。
主な機能
- 01テキストの音声合成
- 02チャット内の音声プレーヤー
- 03複数話者のセグメント会話
- 04キュー管理とストリーミング再生
- 05韻律編集と WAV 書き出し
- 06VOICEVOX ユーザー辞書の管理
活用シーン
- 01AI アシスタントの応答を読み上げ
- 02チャットで複数話者の会話を再生
- 03セグメントごとの速度や抑揚を調整
- 04WAV 音声の生成と書き出し
MCP 対応
音声合成、再生、話者や辞書の管理を行う MCP ツールを公開します。MCP Apps 対応クライアントでは、チャット内にプレーヤーを表示して音声を再生できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VOICEVOX TTS MCP
英語 | 日本語
VOICEVOX を使用するテキスト読み上げ MCP サーバー
🎮 ブラウザーのデモを試す — ブラウザーで VoicevoxClient を直接テストできます
できること
- AI アシスタントに話させる — Claude Desktop などの MCP クライアントからテキストを読み上げます
- UI オーディオプレーヤー(MCP Apps) — インタラクティブなプレーヤーで、チャット内で音声を直接再生します(ChatGPT / Claude Desktop / Claude Web など)
- 複数キャラクターの会話 — 1 回の呼び出しで、セグメントごとに話者を切り替えられます
- スムーズな再生 — キュー管理、即時再生、先読み、ストリーミングに対応します
- クロスプラットフォーム — Windows、macOS、Linux(WSL を含む)で動作します
UI オーディオプレーヤー(MCP Apps)

voicevox_speak_player ツールは MCP Apps を使用して、チャット内にインタラクティブなオーディオプレーヤーを直接表示します。サーバー上で音声を再生する標準の voicevox_speak ツールとは異なり、音声はクライアント側(ブラウザー/アプリ内)で再生されるため、サーバーにオーディオデバイスは必要ありません。
機能
- クライアント側での再生 — 音声はサーバー上ではなく、Claude Desktop のチャット内で再生されます。リモート接続でも動作します。
- 再生/一時停止コントロール — 会話に埋め込まれたすべての再生コントロール
- 複数話者の会話 — トラックナビゲーション付きの 1 つのプレーヤーで、複数の話者を順番に再生します
- 話者の切り替え — プレーヤー UI から各セグメントの音声を直接変更できます
- セグメントの編集 — セグメントごとに速度、音量、抑揚、ポーズの長さ、前後の無音部分を調整できます
- アクセント句の編集 — UI からアクセント位置とモーラのピッチを直接編集できます
- セグメントの追加/削除/並べ替え — トラックをドラッグ&ドロップで並べ替え、新しいセグメントをその場で追加できます
- WAV エクスポート — すべてのトラックを連番の WAV ファイルとして保存し、出力フォルダーを自動的に開きます
- ユーザー辞書マネージャー — プレビュー再生を使用して、VOICEVOX のユーザー辞書の単語を追加、編集、削除できます
- セッションをまたいだ状態の復元 — プレーヤーの状態はサーバーに保存されます。チャットを再び開くと、以前のトラックが復元されます
環境ごとのエクスポート動作:
Save and openは常に WAV ファイルをエクスポートします。ファイルエクスプローラーを開く機能がサポートされていない場合でも、エクスポートは成功し、保存先のパスが UI に表示されます。Choose output folderは Windows/macOS でネイティブのディレクトリ選択ダイアログを使用します。サポートされていない環境では、この操作はデフォルトのエクスポートディレクトリにフォールバックします。
| 複数話者の再生 | トラックリスト | セグメントの編集 |
|---|---|---|
![]() | ![]() | ![]() |
| 話者の選択 | 辞書マネージャー | 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 24.0.0 以上(または Bun)、あるいは Docker
- VOICEVOX Engine(起動している必要があります。Docker Compose に含まれています)
- ffplay(任意。推奨。Docker の場合は不要)
FFplay のインストール
ffplay は、stdin からの再生に対応した FFmpeg に含まれる軽量プレーヤーです。利用可能な場合は、低遅延のストリーミング再生が自動的に有効になります。
💡 FFplay は任意です。 インストールしない場合、再生は一時ファイルを使った方式に切り替わります(Windows:PowerShell、macOS:afplay、Linux:aplay など)。
- 簡単なセットアップ:OS ごとのワンライナーによるインストール(以下の手順を参照)
- 必須条件:
ffplayが PATH に含まれていること(インストール後にターミナルやアプリを再起動してください)
FFplay のインストールと PATH の設定
インストール例:
-
Windows(以下のいずれか)
- Winget:
winget install --id=Gyan.FFmpeg -e - Chocolatey:
choco install ffmpeg - Scoop:
scoop install ffmpeg - 公式ビルド:https://www.gyan.dev/ffmpeg/builds/ または https://github.com/BtbN/FFmpeg-Builds からダウンロードし、
binフォルダーを PATH に追加します
- Winget:
-
macOS
- Homebrew:
brew install ffmpeg
- Homebrew:
-
Linux
- Debian/Ubuntu:
sudo apt-get update && sudo apt-get install -y ffmpeg - Fedora:
sudo dnf install -y ffmpeg - Arch:
sudo pacman -S ffmpeg
- Debian/Ubuntu:
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 を自動検出し、stdin ストリーミング再生を使用します。
はじめるための 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 を使用する場合は、
npxをbunxに置き換えてください:"command": "bunx", "args": ["@kajidog/mcp-tts-voicevox"]
3. Claude Desktop を再起動します
これで完了です!Claude に「こんにちはと言って」と頼むと、音声で話します!
Docker ですぐに始める
Docker Compose を使えば、1 つのコマンドで MCP サーバーと VOICEVOX Engine の両方を実行できます。Node.js や VOICEVOX のインストールは不要です。
1. コンテナーを起動します
docker compose up -d
VOICEVOX Engine と MCP サーバー(ポート 3000 の HTTP モード)が起動します。
2. mcp-remote を使って Claude Desktop の設定ファイルに追加します
{
"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 |
対応する
--restrict-*オプションを設定すると、immediate/waitForStart/waitForEndはツールスキーマから削除されます。
使用例:
// 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 は必須です。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 | Engine の 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 | 1 回の 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 App 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> | ツールグループを無効化:player、dictionary、file、apps |
--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 キー |
設定ファイル(.voicevoxrc.json)
環境変数や 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 がある場合、自動的に読み込まれます。
HTTP モード
リモート接続の場合:
サーバーを起動:
# 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"
}
}
}
}
これにより、プロジェクトごとに異なる音声キャラクターを自動的に使用できます。
優先順位:
- ツール呼び出しで明示的に指定された
speakerパラメーター(最優先) X-Voicevox-Speakerヘッダーで指定されたプロジェクトのデフォルト- グローバル設定
VOICEVOX_DEFAULT_SPEAKER(最下位)
WSL から Windows ホストへの接続
Windows 上で実行されている MCP サーバーに WSL から接続します。
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 での使用
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)。
Claude Web での使用
基本的な手順は 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 | aplay、paplay、play、ffplay のいずれか |
| macOS | afplay(プリインストール済み) |
| Windows | PowerShell(プリインストール済み) |
MCP クライアントに認識されない
- パッケージのインストールを確認します:
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 はサポートされていません)。
| コマンド | 説明 |
|---|---|
pnpm build | すべてのパッケージをビルドします |
pnpm test | テストを実行します |
pnpm lint | lint を実行します(ワークスペース全体に対して Biome を 1 回実行します) |
pnpm typecheck | すべてのパッケージの型をチェックします |
pnpm changeset | ユーザー向けの変更用に changeset を追加します |
開発サーバーはサーバーパッケージ内にあるため、フィルターを指定して実行してください。
| コマンド | 説明 |
|---|---|
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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。





