@kajidog/mcp-tts-voicevox 0.7.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +629 -0
- package/dist/index.js +2009 -1401
- package/dist/index.js.map +1 -1
- package/dist/mcp-app.html +74 -61
- package/dist/stdio.js +1915 -1333
- package/dist/stdio.js.map +1 -1
- package/package.json +5 -5
package/README.ja.md
ADDED
|
@@ -0,0 +1,629 @@
|
|
|
1
|
+
# VOICEVOX TTS MCP
|
|
2
|
+
|
|
3
|
+
[English](README.md) | **日本語**
|
|
4
|
+
|
|
5
|
+
VOICEVOX を使用した MCP テキスト読み上げサーバー
|
|
6
|
+
|
|
7
|
+
> 🎮 **[ブラウザデモを試す](https://kajidog.github.io/mcp-tts-voicevox/)** — VoicevoxClient をブラウザで直接テスト
|
|
8
|
+
|
|
9
|
+
## 何ができるか
|
|
10
|
+
|
|
11
|
+
- **AI アシスタントに喋らせる** — Claude Desktop などの MCP クライアントからテキストを読み上げ
|
|
12
|
+
- **UI オーディオプレーヤー(MCP Apps)** — チャット内で直接音声を再生できるインタラクティブプレーヤー(ChatGPT / Claude Desktop / Claude Web版 などが対応)
|
|
13
|
+
- **複数キャラクターの会話** — 1 回の呼び出しでセグメントごとに話者を切り替え可能
|
|
14
|
+
- **スムーズな再生** — キュー管理、即時再生、先読み、ストリーミング再生
|
|
15
|
+
- **クロスプラットフォーム** — Windows, macOS, Linux(WSL 含む)で動作
|
|
16
|
+
|
|
17
|
+
## UI オーディオプレーヤー(MCP Apps)
|
|
18
|
+
|
|
19
|
+

|
|
20
|
+
|
|
21
|
+
`voicevox_speak_player` ツールは [MCP Apps](https://github.com/modelcontextprotocol/ext-apps) を使用して、チャット内にインタラクティブなオーディオプレーヤーを表示します。通常の `voicevox_speak` ツールがサーバー側で音声を再生するのに対し、**音声はクライアント側(ブラウザ/アプリ内)で再生されます** — サーバーに音声デバイスは不要です。
|
|
22
|
+
|
|
23
|
+
### 特徴
|
|
24
|
+
|
|
25
|
+
- **クライアント側再生** — 音声はサーバーではなく Claude Desktop のチャット内で再生。リモート接続でも動作します。
|
|
26
|
+
- **再生コントロール** — 再生/一時停止などの操作が会話内に埋め込まれます
|
|
27
|
+
- **マルチスピーカー対話** — 複数話者の会話を1つのプレーヤーでトラック切り替えしながら順次再生
|
|
28
|
+
- **スピーカー変更** — プレーヤー UI から直接、任意のセグメントの声を変更可能
|
|
29
|
+
- **セグメント編集** — 速度・音量・抑揚・間の長さ・前後無音をセグメントごとに調整
|
|
30
|
+
- **アクセント句編集** — アクセント位置・モーラピッチを UI 上で直接編集
|
|
31
|
+
- **トラックの追加 / 削除 / 並び替え** — ドラッグ&ドロップによる並び替え、インラインでセグメント追加
|
|
32
|
+
- **WAV エクスポート** — 全トラックを番号付き WAV ファイルとして保存し、保存先フォルダを自動で開く
|
|
33
|
+
- **ユーザー辞書管理** — VOICEVOX ユーザー辞書の追加・編集・削除とプレビュー再生
|
|
34
|
+
- **セッション横断の状態復元** — プレーヤー状態はサーバー側に永続化され、チャットを開き直しても復元されます
|
|
35
|
+
|
|
36
|
+
エクスポートの環境差分:
|
|
37
|
+
- `保存して開く` は常に WAV 保存を実行します。ファイラー起動に非対応の環境でも保存は成功し、保存先パスを UI に表示します。
|
|
38
|
+
- `保存先を指定` は Windows/macOS ではネイティブのフォルダ選択ダイアログを使用します。非対応環境では既定の保存先にフォールバックします。
|
|
39
|
+
|
|
40
|
+
| 再生プレーヤー | トラックリスト | セグメント編集 |
|
|
41
|
+
|:---:|:---:|:---:|
|
|
42
|
+
|  |  |  |
|
|
43
|
+
|
|
44
|
+
| スピーカー変更 | ユーザー辞書 | WAV エクスポート |
|
|
45
|
+
|:---:|:---:|:---:|
|
|
46
|
+
|  |  |  |
|
|
47
|
+
|
|
48
|
+
### 対応クライアント
|
|
49
|
+
|
|
50
|
+
| クライアント | 接続方式 | 備考 |
|
|
51
|
+
|------------|---------|------|
|
|
52
|
+
| **ChatGPT** | HTTP(リモート) | `VOICEVOX_PLAYER_DOMAIN` の設定が必要 |
|
|
53
|
+
| **Claude Desktop** | stdio(ローカル) | そのまま動作 |
|
|
54
|
+
| **Claude Desktop** | HTTP(mcp-remote 経由) | `VOICEVOX_PLAYER_DOMAIN` は設定しないこと |
|
|
55
|
+
|
|
56
|
+
> **注意:** `speak_player` は MCP Apps 対応ホストが必要です。MCP Apps 非対応のホストでは利用できないため、代わりに `speak`(サーバー側再生)を使用してください。
|
|
57
|
+
|
|
58
|
+
### プレーヤー MCP ツール一覧
|
|
59
|
+
|
|
60
|
+
| ツール | 説明 |
|
|
61
|
+
|--------|------|
|
|
62
|
+
| `speak_player` | 新しいプレーヤーセッションを作成して UI を表示。`viewUUID` を返します。 |
|
|
63
|
+
| `resynthesize_player` | 既存プレーヤーの全セグメントを更新します(毎回新しい `viewUUID` を生成)。 |
|
|
64
|
+
| `get_player_state` | AI チューニング用にプレーヤーの現在状態をページ単位で取得します(読み取り専用)。 |
|
|
65
|
+
| `open_dictionary_ui` | ユーザー辞書管理 UI を開きます。 |
|
|
66
|
+
|
|
67
|
+
## クイックスタート
|
|
68
|
+
|
|
69
|
+
### 必要なもの
|
|
70
|
+
|
|
71
|
+
- Node.js 18.0.0 以上(または Bun)**または Docker**
|
|
72
|
+
- [VOICEVOX Engine](https://voicevox.hiroshiba.jp/)(起動しておく。Docker Compose に含まれています)
|
|
73
|
+
- ffplay(任意・推奨。Docker の場合は不要)
|
|
74
|
+
|
|
75
|
+
#### FFplay の導入
|
|
76
|
+
|
|
77
|
+
ffplay は FFmpeg に同梱される小型プレイヤーで、標準入力からの再生に対応します。導入済みの環境では、低遅延で安定したストリーミング再生を自動的に使用します。
|
|
78
|
+
|
|
79
|
+
> 💡 **ffplay がなくても動作します。** その場合は一時ファイル経由の再生(Windows: PowerShell、macOS: afplay、Linux: aplay 等)にフォールバックします。
|
|
80
|
+
|
|
81
|
+
- 導入は簡単: 各 OS でワンライナーのセットアップ(下記手順)
|
|
82
|
+
- 必須事項: `ffplay` に PATH が通っている必要があります(導入後に端末/アプリ再起動)
|
|
83
|
+
|
|
84
|
+
<details>
|
|
85
|
+
<summary>FFplay の導入手順と PATH 反映</summary>
|
|
86
|
+
|
|
87
|
+
インストール例:
|
|
88
|
+
|
|
89
|
+
- Windows(いずれか)
|
|
90
|
+
- Winget: `winget install --id=Gyan.FFmpeg -e`
|
|
91
|
+
- Chocolatey: `choco install ffmpeg`
|
|
92
|
+
- Scoop: `scoop install ffmpeg`
|
|
93
|
+
- 公式ビルド(例): https://www.gyan.dev/ffmpeg/builds/ または https://github.com/BtbN/FFmpeg-Builds から zip を取得し、`bin` フォルダを PATH に追加
|
|
94
|
+
|
|
95
|
+
- macOS
|
|
96
|
+
- Homebrew: `brew install ffmpeg`
|
|
97
|
+
|
|
98
|
+
- Linux
|
|
99
|
+
- Debian/Ubuntu: `sudo apt-get update && sudo apt-get install -y ffmpeg`
|
|
100
|
+
- Fedora: `sudo dnf install -y ffmpeg`
|
|
101
|
+
- Arch: `sudo pacman -S ffmpeg`
|
|
102
|
+
|
|
103
|
+
PATH の反映:
|
|
104
|
+
|
|
105
|
+
- Windows: 環境変数に `...\ffmpeg\bin` を追加後、PowerShell/端末・エディタ(Claude/VS Code 等)を再起動。
|
|
106
|
+
- 反映確認: `powershell -c "$env:Path"` に ffmpeg のパスが含まれること
|
|
107
|
+
- macOS/Linux: 通常は自動反映。必要に応じて `echo $PATH` で確認し、シェルを再起動。
|
|
108
|
+
- MCP クライアント(Claude Desktop/Code): アプリ側のプロセス再起動で PATH を再読込します。
|
|
109
|
+
|
|
110
|
+
動作確認:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
ffplay -version
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
バージョン情報が表示されれば導入完了です。CLI/MCP は自動的に ffplay を検出して標準入力ストリーミング再生を使用します。
|
|
117
|
+
|
|
118
|
+
</details>
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
### 3 ステップで開始
|
|
122
|
+
|
|
123
|
+
**1. VOICEVOX Engine を起動**
|
|
124
|
+
|
|
125
|
+
**2. Claude Desktop の設定ファイルに追加**
|
|
126
|
+
|
|
127
|
+
設定ファイルの場所:
|
|
128
|
+
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
129
|
+
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"mcpServers": {
|
|
134
|
+
"tts-mcp": {
|
|
135
|
+
"command": "npx",
|
|
136
|
+
"args": ["-y", "@kajidog/mcp-tts-voicevox"]
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
> 💡 Bun を使う場合は `npx` を `bunx` に置き換えるだけでOK:
|
|
143
|
+
> ```json
|
|
144
|
+
> "command": "bunx", "args": ["@kajidog/mcp-tts-voicevox"]
|
|
145
|
+
> ```
|
|
146
|
+
|
|
147
|
+
**3. Claude Desktop を再起動**
|
|
148
|
+
|
|
149
|
+
これだけで Claude に「〇〇と喋って」と頼めば喋ってくれます!
|
|
150
|
+
|
|
151
|
+
### Docker でクイックスタート
|
|
152
|
+
|
|
153
|
+
Docker Compose を使えば、MCP サーバーと VOICEVOX Engine をまとめて起動できます。Node.js や VOICEVOX のインストールは不要です。
|
|
154
|
+
|
|
155
|
+
**1. コンテナを起動**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
docker compose up -d
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
VOICEVOX Engine と MCP サーバー(HTTP モード、ポート 3000)が起動します。
|
|
162
|
+
|
|
163
|
+
**2. Claude Desktop の設定ファイルに追加(mcp-remote 使用)**
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"mcpServers": {
|
|
168
|
+
"tts-mcp": {
|
|
169
|
+
"command": "npx",
|
|
170
|
+
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**3. Claude Desktop を再起動**
|
|
177
|
+
|
|
178
|
+
> **制限事項(Docker):** Docker コンテナには音声デバイスがないため、`voicevox_speak` ツール(サーバー側再生)はデフォルトで無効化されています。代わりに `voicevox_speak_player` を使用してください。`voicevox_speak_player` はクライアント側(Claude Desktop 内)で音声を再生するため、サーバーに音声デバイスがなくても動作します。詳細は [UI オーディオプレーヤー](#ui-オーディオプレーヤーmcp-apps) をご覧ください。
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## MCP ツール
|
|
183
|
+
|
|
184
|
+
### `voicevox_speak` — テキスト読み上げ
|
|
185
|
+
|
|
186
|
+
Claude から呼び出せるメインの機能です。
|
|
187
|
+
|
|
188
|
+
| パラメータ | 説明 | デフォルト |
|
|
189
|
+
|-----------|------|-----------|
|
|
190
|
+
| `text` | 読み上げるテキスト(改行で複数セグメント) | 必須 |
|
|
191
|
+
| `speaker` | 話者 ID | 1 |
|
|
192
|
+
| `speedScale` | 再生速度 | 1.0 |
|
|
193
|
+
| `immediate` | 即時再生(キューをクリア) | true |
|
|
194
|
+
| `waitForEnd` | 再生完了まで待機 | false |
|
|
195
|
+
|
|
196
|
+
**使用例:**
|
|
197
|
+
|
|
198
|
+
```javascript
|
|
199
|
+
// シンプルなテキスト
|
|
200
|
+
{ "text": "こんにちは" }
|
|
201
|
+
|
|
202
|
+
// 話者を指定
|
|
203
|
+
{ "text": "こんにちは", "speaker": 3 }
|
|
204
|
+
|
|
205
|
+
// セグメントごとに話者を変更
|
|
206
|
+
{ "text": "1:こんにちは\n3:今日はいい天気ですね" }
|
|
207
|
+
|
|
208
|
+
// 再生完了まで待機(同期処理)
|
|
209
|
+
{ "text": "このメッセージを読み終えてから次へ", "waitForEnd": true }
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
<details>
|
|
213
|
+
<summary>その他のツール</summary>
|
|
214
|
+
|
|
215
|
+
| ツール | 説明 |
|
|
216
|
+
|--------|------|
|
|
217
|
+
| `voicevox_speak_player` | UI 音声プレイヤー付き読み上げ(`--disable-tools` で無効化可) |
|
|
218
|
+
| `voicevox_ping` | VOICEVOX Engine への接続確認 |
|
|
219
|
+
| `voicevox_get_speakers` | 利用可能な話者一覧を取得 |
|
|
220
|
+
| `voicevox_stop_speaker` | 再生停止とキューのクリア |
|
|
221
|
+
| `voicevox_synthesize_file` | 音声ファイルを生成 |
|
|
222
|
+
|
|
223
|
+
</details>
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 設定
|
|
228
|
+
|
|
229
|
+
<details>
|
|
230
|
+
<summary><b>環境変数で設定</b></summary>
|
|
231
|
+
|
|
232
|
+
### VOICEVOX 設定
|
|
233
|
+
|
|
234
|
+
| 環境変数 | 説明 | デフォルト |
|
|
235
|
+
|---------|------|-----------|
|
|
236
|
+
| `VOICEVOX_URL` | Engine の URL | `http://localhost:50021` |
|
|
237
|
+
| `VOICEVOX_DEFAULT_SPEAKER` | デフォルト話者 ID | `1` |
|
|
238
|
+
| `VOICEVOX_DEFAULT_SPEED_SCALE` | 再生速度 | `1.0` |
|
|
239
|
+
|
|
240
|
+
### 再生オプション
|
|
241
|
+
|
|
242
|
+
| 環境変数 | 説明 | デフォルト |
|
|
243
|
+
|---------|------|-----------|
|
|
244
|
+
| `VOICEVOX_USE_STREAMING` | ストリーミング再生(`ffplay` 必要) | `false` |
|
|
245
|
+
| `VOICEVOX_DEFAULT_IMMEDIATE` | 即時再生 | `true` |
|
|
246
|
+
| `VOICEVOX_DEFAULT_WAIT_FOR_START` | 再生開始まで待機 | `false` |
|
|
247
|
+
| `VOICEVOX_DEFAULT_WAIT_FOR_END` | 再生完了まで待機 | `false` |
|
|
248
|
+
|
|
249
|
+
### 制限設定
|
|
250
|
+
|
|
251
|
+
AI が特定のオプションを指定できないように制限できます。
|
|
252
|
+
|
|
253
|
+
| 環境変数 | 説明 |
|
|
254
|
+
|---------|------|
|
|
255
|
+
| `VOICEVOX_RESTRICT_IMMEDIATE` | `immediate` オプションを制限 |
|
|
256
|
+
| `VOICEVOX_RESTRICT_WAIT_FOR_START` | `waitForStart` オプションを制限 |
|
|
257
|
+
| `VOICEVOX_RESTRICT_WAIT_FOR_END` | `waitForEnd` オプションを制限 |
|
|
258
|
+
|
|
259
|
+
### ツールの無効化
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# 不要なツールを無効化
|
|
263
|
+
export VOICEVOX_DISABLED_TOOLS=speak_player,synthesize_file
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### UI プレイヤー設定
|
|
267
|
+
|
|
268
|
+
| 環境変数 | 説明 | デフォルト |
|
|
269
|
+
|---------|------|-----------|
|
|
270
|
+
| `VOICEVOX_PLAYER_DOMAIN` | UI プレーヤーのウィジェットドメイン(ChatGPT 使用時に必要。例: `https://your-app.onrender.com`) | _(未設定)_ |
|
|
271
|
+
| `VOICEVOX_AUTO_PLAY` | UI プレイヤーで自動再生 | `true` |
|
|
272
|
+
| `VOICEVOX_PLAYER_EXPORT_ENABLED` | UI プレイヤーからのトラック書き出し(ダウンロード)を有効化(`false` で無効化) | `true` |
|
|
273
|
+
| `VOICEVOX_PLAYER_EXPORT_DIR` | トラック書き出し先のデフォルトディレクトリ(フォルダ選択非対応環境でのフォールバック先としても使用) | `./voicevox-player-exports` |
|
|
274
|
+
| `VOICEVOX_PLAYER_CACHE_DIR` | プレーヤーのキャッシュファイル(`*.txt`)と状態ファイルの既定保存先 | `./.voicevox-player-cache` |
|
|
275
|
+
| `VOICEVOX_PLAYER_AUDIO_CACHE_ENABLED` | 音声キャッシュのディスク永続化を有効化(`false` でディスク保存/読み込みを無効化) | `true` |
|
|
276
|
+
| `VOICEVOX_PLAYER_AUDIO_CACHE_TTL_DAYS` | 音声キャッシュ保持日数(`0`: ディスクキャッシュ無効、`-1`: 期限削除なし) | `30` |
|
|
277
|
+
| `VOICEVOX_PLAYER_AUDIO_CACHE_MAX_MB` | 音声キャッシュ上限サイズ MB(`0`: ディスクキャッシュ無効、`-1`: 無制限) | `512` |
|
|
278
|
+
| `VOICEVOX_PLAYER_STATE_FILE` | プレーヤー状態 JSON の保存パス | `<VOICEVOX_PLAYER_CACHE_DIR>/player-state.json` |
|
|
279
|
+
|
|
280
|
+
### サーバー設定
|
|
281
|
+
|
|
282
|
+
| 環境変数 | 説明 | デフォルト |
|
|
283
|
+
|---------|------|-----------|
|
|
284
|
+
| `MCP_HTTP_MODE` | HTTP モードを有効化 | `false` |
|
|
285
|
+
| `MCP_HTTP_PORT` | HTTP ポート | `3000` |
|
|
286
|
+
| `MCP_HTTP_HOST` | HTTP ホスト | `0.0.0.0` |
|
|
287
|
+
| `MCP_ALLOWED_HOSTS` | 許可するホスト(カンマ区切り) | `localhost,127.0.0.1,[::1]` |
|
|
288
|
+
| `MCP_ALLOWED_ORIGINS` | 許可するオリジン(カンマ区切り) | `http://localhost,http://127.0.0.1,...` |
|
|
289
|
+
| `MCP_API_KEY` | `/mcp` に必須の API キー(`X-API-Key` または `Authorization: Bearer` で送信) | _(未設定)_ |
|
|
290
|
+
|
|
291
|
+
</details>
|
|
292
|
+
|
|
293
|
+
<details>
|
|
294
|
+
<summary><b>コマンドライン引数で設定</b></summary>
|
|
295
|
+
|
|
296
|
+
コマンドライン引数は環境変数より優先されます。
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# 基本設定
|
|
300
|
+
npx @kajidog/mcp-tts-voicevox --url http://192.168.1.100:50021 --speaker 3 --speed 1.2
|
|
301
|
+
|
|
302
|
+
# HTTP モード
|
|
303
|
+
npx @kajidog/mcp-tts-voicevox --http --port 8080
|
|
304
|
+
|
|
305
|
+
# 制限付き
|
|
306
|
+
npx @kajidog/mcp-tts-voicevox --restrict-immediate --restrict-wait-for-end
|
|
307
|
+
|
|
308
|
+
# ツール無効化
|
|
309
|
+
npx @kajidog/mcp-tts-voicevox --disable-tools speak_player,synthesize_file
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
| 引数 | 説明 |
|
|
313
|
+
|------|------|
|
|
314
|
+
| `--help`, `-h` | ヘルプを表示 |
|
|
315
|
+
| `--version`, `-v` | バージョンを表示 |
|
|
316
|
+
| `--init` | デフォルト設定の `.voicevoxrc.json` を生成 |
|
|
317
|
+
| `--config <path>` | 設定ファイルのパス |
|
|
318
|
+
| `--url <value>` | VOICEVOX Engine URL |
|
|
319
|
+
| `--speaker <value>` | デフォルト話者 ID |
|
|
320
|
+
| `--speed <value>` | 再生速度 |
|
|
321
|
+
| `--use-streaming` / `--no-use-streaming` | ストリーミング再生 |
|
|
322
|
+
| `--immediate` / `--no-immediate` | 即時再生 |
|
|
323
|
+
| `--wait-for-start` / `--no-wait-for-start` | 再生開始待機 |
|
|
324
|
+
| `--wait-for-end` / `--no-wait-for-end` | 再生完了待機 |
|
|
325
|
+
| `--restrict-immediate` | immediate を制限 |
|
|
326
|
+
| `--restrict-wait-for-start` | waitForStart を制限 |
|
|
327
|
+
| `--restrict-wait-for-end` | waitForEnd を制限 |
|
|
328
|
+
| `--disable-tools <tools>` | ツールを無効化 |
|
|
329
|
+
| `--auto-play` / `--no-auto-play` | UI プレイヤーで自動再生 |
|
|
330
|
+
| `--player-export` / `--no-player-export` | UI プレイヤーのトラック書き出し(ダウンロード)の有効/無効 |
|
|
331
|
+
| `--player-export-dir <dir>` | トラック書き出し先のデフォルトディレクトリ |
|
|
332
|
+
| `--player-cache-dir <dir>` | プレーヤーキャッシュディレクトリ |
|
|
333
|
+
| `--player-state-file <path>` | プレーヤー状態ファイルの保存パス |
|
|
334
|
+
| `--player-audio-cache` / `--no-player-audio-cache` | プレーヤー音声のディスクキャッシュ有効/無効 |
|
|
335
|
+
| `--player-audio-cache-ttl-days <days>` | 音声キャッシュ保持日数(`0`: 無効、`-1`: 期限削除なし) |
|
|
336
|
+
| `--player-audio-cache-max-mb <mb>` | 音声キャッシュ上限サイズMB(`0`: 無効、`-1`: 無制限) |
|
|
337
|
+
| `--http` | HTTP モード |
|
|
338
|
+
| `--port <value>` | HTTP ポート |
|
|
339
|
+
| `--host <value>` | HTTP ホスト |
|
|
340
|
+
| `--allowed-hosts <hosts>` | 許可するホスト(カンマ区切り) |
|
|
341
|
+
| `--allowed-origins <origins>` | 許可するオリジン(カンマ区切り) |
|
|
342
|
+
| `--api-key <key>` | `/mcp` に必須の API キー |
|
|
343
|
+
|
|
344
|
+
</details>
|
|
345
|
+
|
|
346
|
+
<details>
|
|
347
|
+
<summary><b>設定ファイル (.voicevoxrc.json)</b></summary>
|
|
348
|
+
|
|
349
|
+
環境変数やコマンドライン引数の代わりに(または併用して)JSON 設定ファイルを使用できます。多くの設定がある場合に便利です。
|
|
350
|
+
|
|
351
|
+
**優先順位:** CLI引数 > 環境変数 > 設定ファイル > デフォルト値
|
|
352
|
+
|
|
353
|
+
### 設定ファイルを生成
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
npx @kajidog/mcp-tts-voicevox --init
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
カレントディレクトリにデフォルト設定の `.voicevoxrc.json` を生成します。必要に応じて編集してください。
|
|
360
|
+
|
|
361
|
+
### カスタムパスの設定ファイルを使用
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
npx @kajidog/mcp-tts-voicevox --config ./my-config.json
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
環境変数でも指定可能:
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
VOICEVOX_CONFIG=./my-config.json npx @kajidog/mcp-tts-voicevox
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### `.voicevoxrc.json` の例
|
|
374
|
+
|
|
375
|
+
```json
|
|
376
|
+
{
|
|
377
|
+
"url": "http://192.168.1.50:50021",
|
|
378
|
+
"speaker": 3,
|
|
379
|
+
"speed": 1.2,
|
|
380
|
+
"http": true,
|
|
381
|
+
"port": 8080,
|
|
382
|
+
"disable-tools": ["synthesize_file"]
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
キー名は kebab-case(`use-streaming`)、camelCase(`useStreaming`)、内部キー名(`defaultSpeaker`)のいずれでも記述できます。カレントディレクトリに `.voicevoxrc.json` が存在する場合、自動的に読み込まれます。
|
|
387
|
+
|
|
388
|
+
</details>
|
|
389
|
+
|
|
390
|
+
<details>
|
|
391
|
+
<summary><b>HTTP モードで使う</b></summary>
|
|
392
|
+
|
|
393
|
+
リモート接続が必要な場合:
|
|
394
|
+
|
|
395
|
+
**サーバー起動:**
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
# Linux/macOS
|
|
399
|
+
MCP_HTTP_MODE=true MCP_HTTP_PORT=3000 npx @kajidog/mcp-tts-voicevox
|
|
400
|
+
|
|
401
|
+
# Windows PowerShell
|
|
402
|
+
$env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevox
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
**Claude Desktop 設定(mcp-remote 使用):**
|
|
406
|
+
|
|
407
|
+
```json
|
|
408
|
+
{
|
|
409
|
+
"mcpServers": {
|
|
410
|
+
"tts-mcp-proxy": {
|
|
411
|
+
"command": "npx",
|
|
412
|
+
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### プロジェクトごとの話者設定
|
|
419
|
+
|
|
420
|
+
Claude Code では `.mcp.json` にカスタムヘッダーを設定することで、プロジェクトごとに異なるデフォルト話者を設定できます:
|
|
421
|
+
|
|
422
|
+
| ヘッダー | 説明 |
|
|
423
|
+
|---------|------|
|
|
424
|
+
| `X-Voicevox-Speaker` | このプロジェクトのデフォルト話者 ID |
|
|
425
|
+
| `X-API-Key` | `MCP_API_KEY` を設定した場合に必要な API キー |
|
|
426
|
+
|
|
427
|
+
**`.mcp.json` の例:**
|
|
428
|
+
|
|
429
|
+
```json
|
|
430
|
+
{
|
|
431
|
+
"mcpServers": {
|
|
432
|
+
"tts": {
|
|
433
|
+
"type": "http",
|
|
434
|
+
"url": "http://localhost:3000/mcp",
|
|
435
|
+
"headers": {
|
|
436
|
+
"X-Voicevox-Speaker": "113",
|
|
437
|
+
"X-API-Key": "your-api-key"
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
これにより、プロジェクトごとに自動的に異なる音声キャラクターを使い分けることができます。
|
|
445
|
+
|
|
446
|
+
**優先順位:**
|
|
447
|
+
1. ツール呼び出し時の `speaker` パラメータ(最高)
|
|
448
|
+
2. `X-Voicevox-Speaker` ヘッダーによるプロジェクトデフォルト
|
|
449
|
+
3. グローバルな `VOICEVOX_DEFAULT_SPEAKER` 設定(最低)
|
|
450
|
+
|
|
451
|
+
</details>
|
|
452
|
+
|
|
453
|
+
<details>
|
|
454
|
+
<summary><b>WSL から Windows ホストに接続</b></summary>
|
|
455
|
+
|
|
456
|
+
WSL 内から Windows で動作する MCP サーバーに接続する場合:
|
|
457
|
+
|
|
458
|
+
### 1. WSL 側で Windows ホストの IP を確認
|
|
459
|
+
|
|
460
|
+
```bash
|
|
461
|
+
# 方法1: デフォルトゲートウェイから取得
|
|
462
|
+
ip route show | grep -oP 'default via \K[\d.]+'
|
|
463
|
+
# 通常 172.x.x.1 の形式
|
|
464
|
+
|
|
465
|
+
# 方法2: /etc/resolv.conf から取得(WSL2)
|
|
466
|
+
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### 2. Windows 側でサーバー起動
|
|
470
|
+
|
|
471
|
+
WSL からのアクセスを許可するため、`MCP_ALLOWED_HOSTS` に WSL ゲートウェイ IP を追加:
|
|
472
|
+
|
|
473
|
+
```powershell
|
|
474
|
+
$env:MCP_HTTP_MODE='true'
|
|
475
|
+
$env:MCP_ALLOWED_HOSTS='localhost,127.0.0.1,172.29.176.1'
|
|
476
|
+
npx @kajidog/mcp-tts-voicevox
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
または CLI 引数で:
|
|
480
|
+
|
|
481
|
+
```powershell
|
|
482
|
+
npx @kajidog/mcp-tts-voicevox --http --allowed-hosts "localhost,127.0.0.1,172.29.176.1"
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### 3. WSL 側の設定(.mcp.json)
|
|
486
|
+
|
|
487
|
+
```json
|
|
488
|
+
{
|
|
489
|
+
"mcpServers": {
|
|
490
|
+
"tts": {
|
|
491
|
+
"type": "http",
|
|
492
|
+
"url": "http://172.29.176.1:3000/mcp"
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
> ⚠️ WSL 内では `localhost` は WSL 自身を指すため、Windows ホストには WSL ゲートウェイ IP でアクセスします。
|
|
499
|
+
|
|
500
|
+
</details>
|
|
501
|
+
|
|
502
|
+
<details>
|
|
503
|
+
<summary><b>ChatGPT で使う</b></summary>
|
|
504
|
+
|
|
505
|
+
ChatGPT から使用するには、MCP サーバーを HTTP モードでクラウドにデプロイし、VOICEVOX Engine にアクセスできる状態にする必要があります。
|
|
506
|
+
|
|
507
|
+
### 1. クラウドにデプロイ
|
|
508
|
+
|
|
509
|
+
Render、Railway などに Docker でデプロイします(Dockerfile 同梱)。
|
|
510
|
+
|
|
511
|
+
### 2. VOICEVOX Engine を用意
|
|
512
|
+
|
|
513
|
+
ローカルで起動して ngrok 等で公開するか、クラウド上で一緒にデプロイします。
|
|
514
|
+
|
|
515
|
+
### 3. 環境変数を設定
|
|
516
|
+
|
|
517
|
+
| 環境変数 | 値の例 | 説明 |
|
|
518
|
+
|---------|--------|------|
|
|
519
|
+
| `VOICEVOX_URL` | `https://xxxx.ngrok-free.app` | VOICEVOX Engine の URL |
|
|
520
|
+
| `MCP_HTTP_MODE` | `true` | HTTP モードを有効化 |
|
|
521
|
+
| `MCP_ALLOWED_HOSTS` | `your-app.onrender.com` | デプロイ先のホスト名 |
|
|
522
|
+
| `VOICEVOX_PLAYER_DOMAIN` | `https://your-app.onrender.com` | UI プレーヤーのウィジェットドメイン(ChatGPT で必須) |
|
|
523
|
+
| `VOICEVOX_DISABLED_TOOLS` | `speak` | サーバー側再生を無効化(音声デバイスなし) |
|
|
524
|
+
| `VOICEVOX_PLAYER_EXPORT_ENABLED` | `false` | エクスポート機能を無効化(クラウド上ではファイルをダウンロードできないため) |
|
|
525
|
+
|
|
526
|
+
### 4. ChatGPT でコネクターを追加
|
|
527
|
+
|
|
528
|
+
ChatGPT の設定 → コネクター → MCP サーバーの URL(`https://your-app.onrender.com/mcp`)を追加します。
|
|
529
|
+
|
|
530
|
+
</details>
|
|
531
|
+
|
|
532
|
+
<details>
|
|
533
|
+
<summary><b>Web 版 Claude で使う</b></summary>
|
|
534
|
+
|
|
535
|
+
基本的な手順は ChatGPT と同じですが、`VOICEVOX_PLAYER_DOMAIN` の値が異なります。
|
|
536
|
+
|
|
537
|
+
Claude Web 版では `ui.domain` に **ハッシュベースの専用ドメイン** が必要です。以下のコマンドで計算できます:
|
|
538
|
+
|
|
539
|
+
```bash
|
|
540
|
+
node -e "console.log(require('crypto').createHash('sha256').update('あなたのMCPサーバーURL').digest('hex').slice(0,32)+'.claudemcpcontent.com')"
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
例:MCP サーバーの URL が `https://your-app.onrender.com/mcp` の場合:
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
node -e "console.log(require('crypto').createHash('sha256').update('https://your-app.onrender.com/mcp').digest('hex').slice(0,32)+'.claudemcpcontent.com')"
|
|
547
|
+
# 出力例: 48fb73a6...claudemcpcontent.com
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
この出力値を `VOICEVOX_PLAYER_DOMAIN` に設定してください。
|
|
551
|
+
|
|
552
|
+
> **注意**: ChatGPT と Claude Web 版では `VOICEVOX_PLAYER_DOMAIN` の値が異なるため、同じインスタンスで両方に対応することはできません。それぞれ別のインスタンスをデプロイするか、接続先に合わせて環境変数を切り替えてください。
|
|
553
|
+
|
|
554
|
+
</details>
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## トラブルシューティング
|
|
559
|
+
|
|
560
|
+
<details>
|
|
561
|
+
<summary><b>音声が再生されない</b></summary>
|
|
562
|
+
|
|
563
|
+
**1. VOICEVOX Engine が起動しているか確認**
|
|
564
|
+
|
|
565
|
+
```bash
|
|
566
|
+
curl http://localhost:50021/speakers
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
**2. プラットフォーム別の再生ツールを確認**
|
|
570
|
+
|
|
571
|
+
| OS | 必要なツール |
|
|
572
|
+
|----|------------|
|
|
573
|
+
| Linux | `aplay`, `paplay`, `play`, `ffplay` のいずれか |
|
|
574
|
+
| macOS | `afplay`(プリインストール済み) |
|
|
575
|
+
| Windows | PowerShell(プリインストール済み) |
|
|
576
|
+
|
|
577
|
+
</details>
|
|
578
|
+
|
|
579
|
+
<details>
|
|
580
|
+
<summary><b>MCP クライアントに認識されない</b></summary>
|
|
581
|
+
|
|
582
|
+
- パッケージのインストール確認:`npm list -g @kajidog/mcp-tts-voicevox`
|
|
583
|
+
- 設定ファイルの JSON 構文をチェック
|
|
584
|
+
- クライアントを再起動
|
|
585
|
+
|
|
586
|
+
</details>
|
|
587
|
+
|
|
588
|
+
---
|
|
589
|
+
|
|
590
|
+
## パッケージ構成
|
|
591
|
+
|
|
592
|
+
| パッケージ | 説明 |
|
|
593
|
+
|-----------|------|
|
|
594
|
+
| `@kajidog/mcp-tts-voicevox` | MCP サーバー本体 |
|
|
595
|
+
| [`@kajidog/voicevox-client`](https://www.npmjs.com/package/@kajidog/voicevox-client) | 汎用 VOICEVOX クライアントライブラリ(独立使用可能) |
|
|
596
|
+
| `@kajidog/player-ui` | ブラウザ再生用の React 音声プレイヤー UI |
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
<details>
|
|
601
|
+
<summary><b>開発者向け情報</b></summary>
|
|
602
|
+
|
|
603
|
+
### セットアップ
|
|
604
|
+
|
|
605
|
+
```bash
|
|
606
|
+
git clone https://github.com/kajidog/mcp-tts-voicevox.git
|
|
607
|
+
cd mcp-tts-voicevox
|
|
608
|
+
pnpm install
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
### コマンド
|
|
612
|
+
|
|
613
|
+
| コマンド | 説明 |
|
|
614
|
+
|---------|------|
|
|
615
|
+
| `pnpm build` | 全パッケージをビルド |
|
|
616
|
+
| `pnpm test` | テスト実行 |
|
|
617
|
+
| `pnpm lint` | Lint 実行 |
|
|
618
|
+
| `pnpm dev` | 開発サーバー起動 |
|
|
619
|
+
| `pnpm dev:stdio` | Stdio モードで開発 |
|
|
620
|
+
| `pnpm dev:bun` | Bun で開発サーバー起動 |
|
|
621
|
+
| `pnpm dev:bun:http` | Bun で HTTP 開発サーバー起動 |
|
|
622
|
+
|
|
623
|
+
</details>
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
## ライセンス
|
|
628
|
+
|
|
629
|
+
ISC
|