mcpField
M
MCP TTS VOICEVOX

MCP TTS VOICEVOX

ローカル
kajidog.github.ioメディア・デザイン165 日前に更新

MCP TTS VOICEVOX について

MCP TTS VOICEVOX は、MCP クライアントでテキストを音声化するための VOICEVOX ベースのサーバーです。サーバー側での再生に加え、チャット内で再生や編集ができる MCP Apps プレーヤーを備えています。

主な機能

  1. 01テキストの音声合成
  2. 02チャット内の音声プレーヤー
  3. 03複数話者のセグメント会話
  4. 04キュー管理とストリーミング再生
  5. 05韻律編集と WAV 書き出し
  6. 06VOICEVOX ユーザー辞書の管理

活用シーン

  1. 01AI アシスタントの応答を読み上げ
  2. 02チャットで複数話者の会話を再生
  3. 03セグメントごとの速度や抑揚を調整
  4. 04WAV 音声の生成と書き出し

MCP 対応

音声合成、再生、話者や辞書の管理を行う MCP ツールを公開します。MCP Apps 対応クライアントでは、チャット内にプレーヤーを表示して音声を再生できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"tts-voicevox": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"compose"
]
}
}
}
起動コマンドdocker run -i --rm compose

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocicompose

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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)

UI オーディオプレーヤー

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 エクスポート
話者の選択辞書マネージャーWAV エクスポート
対応クライアント
クライアント接続備考
ChatGPTHTTP(リモート)VOICEVOX_PLAYER_DOMAIN が必要です
Claude Desktopstdio(ローカル)そのまま動作します
Claude DesktopHTTP(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_stateAI による調整用に、現在のプレーヤー状態をページ分割して読み取ります。
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(以下のいずれか)

  • 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 を自動検出し、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話者 ID1
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_playerUI オーディオプレーヤーで読み上げます(プレーヤー MCP ツールを参照)
voicevox_pingVOICEVOX 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_wordUUID で単語を削除します
voicevox_add_user_dictionary_words複数の単語を一度に追加します
voicevox_update_user_dictionary_words複数の単語を一度に更新します

--disable-tools / VOICEVOX_DISABLED_TOOLS でツールを個別に無効化するか、--disable-groups / VOICEVOX_DISABLED_GROUPS でグループ単位で無効化できます。


設定

環境変数
VOICEVOX の設定
変数説明デフォルト
VOICEVOX_URLEngine の URLhttp://localhost:50021
VOICEVOX_DEFAULT_SPEAKERデフォルトの話者 ID1
VOICEVOX_DEFAULT_SPEED_SCALE再生速度1.0
VOICEVOX_RETRY_COUNTAPI リクエストが失敗した場合の再試行回数(0 で無効)2
VOICEVOX_RETRY_DELAY_MS初回の再試行待機時間(ミリ秒、指数バックオフ)250
VOICEVOX_TIMEOUT_MS1 回の 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_IMMEDIATEimmediate オプションを制限します
VOICEVOX_RESTRICT_WAIT_FOR_STARTwaitForStart オプションを制限します
VOICEVOX_RESTRICT_WAIT_FOR_ENDwaitForEnd オプションを制限します
ツールの無効化
# 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 の組み込みグループ:

グループツール
playerspeak_player、resynthesize_player、get_player_state、open_dictionary_ui
dictionaryget_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
filesynthesize_file
appsspeak_player、resynthesize_player、open_dictionary_ui(MCP App UI ツール)
UI プレーヤーの設定
変数説明デフォルト
VOICEVOX_PLAYER_DOMAINUI プレーヤーのウィジェットのドメイン(ChatGPT では必須。例:https://your-app.onrender.com)(未設定)
VOICEVOX_AUTO_PLAYUI プレーヤーで音声を自動再生しますtrue
VOICEVOX_PLAYER_EXPORT_ENABLEDUI プレーヤーからのトラックのエクスポート(ダウンロード)を有効にします(無効にする場合は 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_MODEHTTP モードを有効にするfalse
MCP_HTTP_PORTHTTP ポート3000
MCP_HTTP_HOSTHTTP ホスト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-startwaitForStart を制限
--restrict-wait-for-endwaitForEnd を制限
--allowed-output-dirs <dirs>ファイル書き込みツールが書き込み可能なディレクトリ(カンマ区切り。未設定の場合は制限なし)
--disable-tools <tools>ツールを無効化(ツール名をカンマ区切りで指定)
--disable-groups <groups>ツールグループを無効化:player、dictionary、file、apps
--auto-play / --no-auto-playUI プレーヤーで自動再生
--player-export / --no-player-exportUI プレーヤーでトラックのエクスポート(ダウンロード)を有効/無効化
--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:無制限)
--httpHTTP モード
--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-KeyMCP_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 ホストへの接続

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_URLhttps://xxxx.ngrok-free.appVOICEVOX Engine の URL
MCP_HTTP_MODEtrueHTTP モードを有効にする
MCP_ALLOWED_HOSTSyour-app.onrender.comデプロイ先のホスト名
VOICEVOX_PLAYER_DOMAINhttps://your-app.onrender.comUI プレーヤーのウィジェットドメイン(ChatGPT では必須)
VOICEVOX_DISABLED_TOOLSspeakサーバー側の再生を無効にする(オーディオデバイスがない場合)
VOICEVOX_PLAYER_EXPORT_ENABLEDfalseエクスポート機能を無効にする(クラウドからファイルをダウンロードできません)
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必要なツール
Linuxaplay、paplay、play、ffplay のいずれか
macOSafplay(プリインストール済み)
WindowsPowerShell(プリインストール済み)
MCP クライアントに認識されない
  • パッケージのインストールを確認します:npm list -g @kajidog/mcp-tts-voicevox
  • 設定ファイル内の JSON 構文を確認します
  • クライアントを再起動します

パッケージ構成

パッケージ説明
@kajidog/mcp-tts-voicevoxMCP サーバー(apps/mcp-tts)
@kajidog/voicevox-client汎用 VOICEVOX クライアントライブラリ(単独でも使用できます)
@kajidog/mcp-coreMCP 共通インフラストラクチャ(設定スキーマ、HTTP/stdio ランチャー)。公開されていません — サーバーにバンドルされます
@kajidog/player-uiReact ベースのオーディオプレーヤー 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 lintlint を実行します(ワークスペース全体に対して 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:bunBun で開発サーバーを起動します
pnpm --filter @kajidog/mcp-tts-voicevox dev:bun:httpBun で HTTP 開発サーバーを起動します

ライセンス

ISC

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。