@kajidog/mcp-tts-voicevox 0.1.1 → 0.1.2

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.md CHANGED
@@ -1,412 +1,416 @@
1
- # MCP TTS VOICEVOX
2
-
3
- VOICEVOX を使用した音声合成 MCP サーバー
4
-
5
- ## 特徴
6
-
7
- - **キュー管理機能** - 複数の音声合成リクエストを効率的に処理
8
- - **プリフェッチ** - 次の音声を事前に生成し、再生をスムーズに
9
- - **クロスプラットフォーム対応** - Windows、macOS で動作
10
- - **Stdio 対応** - 標準入出力による MCP プロトコル通信(Claude Desktop 等で推奨)
11
- - **SSE 対応** - Server-Sent Events によるリアルタイム対話形式音声再生
12
- - **StreamableHTTP 対応** - ストリーミング形式での HTTP 通信による高速音声合成
13
- - **対話形式音声再生** - チャット形式でのリアルタイム音声合成・再生機能
14
- - **複数話者対応** - セグメント単位での個別話者指定が可能
15
- - **テキスト自動分割** - 長文の自動分割による安定した音声合成
16
- - **独立したクライアントライブラリ** - [`@kajidog/voicevox-client`](https://www.npmjs.com/package/@kajidog/voicevox-client) として別パッケージで提供
17
-
18
- ## 必要条件
19
-
20
- - Node.js 18.0.0 以上
21
- - [VOICEVOX エンジン](https://voicevox.hiroshiba.jp/) または互換エンジン
22
-
23
- ## インストール
24
-
25
- ```bash
26
- npm install -g @kajidog/mcp-tts-voicevox
27
- ```
28
-
29
- ## 使い方
30
-
31
- ### MCP サーバーとして
32
-
33
- #### 1. VOICEVOX エンジンを起動
34
-
35
- VOICEVOX エンジンを起動し、デフォルトポート(`http://localhost:50021`)で待機状態にします。
36
-
37
- #### 2. MCP サーバーを起動
38
-
39
- **標準入出力モード(推奨):**
40
-
41
- ```bash
42
- npx @kajidog/mcp-tts-voicevox
43
- ```
44
-
45
- **HTTP サーバーモード:**
46
-
47
- ```bash
48
- # Linux/macOS
49
- MCP_HTTP_MODE=true npx @kajidog/mcp-tts-voicevox
50
-
51
- # Windows PowerShell
52
- $env:MCP_HTTP_MODE='true'; npx @kajidog/mcp-tts-voicevox
53
- ```
54
-
55
- ### MCP ツール一覧
56
-
57
- MCP サーバーは以下のツールを提供します:
58
-
59
- #### `speak` - テキスト読み上げ
60
-
61
- テキストを音声に変換して再生します。
62
-
63
- **パラメータ:**
64
-
65
- - `text`: 文字列配列、またはテキストと話者ペアの配列
66
- - `speaker` (オプション): 話者 ID
67
- - `speedScale` (オプション): 再生速度
68
- - `query` (オプション): 事前生成済みクエリ
69
-
70
- **使用例:**
71
-
72
- ```javascript
73
- // シンプルなテキスト
74
- { "text": ["こんにちは", "今日はいい天気ですね"] }
75
-
76
- // 話者指定
77
- { "text": ["こんにちは", "今日はいい天気ですね"], "speaker": 3 }
78
-
79
- // セグメント別話者指定
80
- { "text": [{"text": "こんにちは", "speaker": 1}, {"text": "今日はいい天気ですね", "speaker": 3}] }
81
- ```
82
-
83
- #### `generate_query` - クエリ生成
84
-
85
- 音声合成用クエリを生成します。
86
-
87
- **パラメータ:**
88
-
89
- - `text`: 合成するテキスト
90
- - `speaker` (オプション): 話者 ID
91
- - `speedScale` (オプション): 再生速度
92
-
93
- #### `synthesize_file` - ファイル生成
94
-
95
- 音声ファイルを生成し、パスを返します。
96
-
97
- **パラメータ:**
98
-
99
- - `text` (オプション): 合成するテキスト
100
- - `query` (オプション): 事前生成済みクエリ
101
- - `output`: 出力ファイルパス
102
- - `speaker` (オプション): 話者 ID
103
- - `speedScale` (オプション): 再生速度
104
-
105
- #### `stop_speaker` - 再生停止
106
-
107
- 現在の音声合成キューをクリアします。
108
-
109
- #### `get_speakers` - 話者一覧取得
110
-
111
- 利用可能な話者一覧を取得します。
112
-
113
- #### `get_speaker_detail` - 話者詳細取得
114
-
115
- 指定した UUID の話者詳細情報を取得します。
116
-
117
- **パラメータ:**
118
-
119
- - `uuid`: 話者 UUID
120
-
121
- ### 対話形式音声再生の使用例
122
-
123
- #### StreamableHTTP を使用した対話形式再生
124
-
125
- ```javascript
126
- // セッション初期化
127
- const response = await fetch("http://localhost:3000/mcp", {
128
- method: "POST",
129
- headers: {
130
- "Content-Type": "application/json",
131
- },
132
- body: JSON.stringify({
133
- jsonrpc: "2.0",
134
- method: "initialize",
135
- params: {
136
- protocolVersion: "2024-11-05",
137
- capabilities: {},
138
- },
139
- id: 1,
140
- }),
141
- });
142
-
143
- const sessionData = await response.json();
144
- const sessionId = response.headers.get("mcp-session-id");
145
-
146
- // 音声合成・再生リクエスト
147
- const speakResponse = await fetch("http://localhost:3000/mcp", {
148
- method: "POST",
149
- headers: {
150
- "Content-Type": "application/json",
151
- "mcp-session-id": sessionId,
152
- },
153
- body: JSON.stringify({
154
- jsonrpc: "2.0",
155
- method: "tools/call",
156
- params: {
157
- name: "speak",
158
- arguments: {
159
- text: ["こんにちは、対話形式で音声を再生します"],
160
- speaker: 1,
161
- speedScale: 1.0,
162
- },
163
- },
164
- id: 2,
165
- }),
166
- });
167
-
168
- const result = await speakResponse.json();
169
- console.log("結果:", result);
170
- ```
171
-
172
- #### 複数話者を使用した対話例
173
-
174
- ```javascript
175
- // 複数話者での会話例
176
- const conversationResponse = await fetch("http://localhost:3000/mcp", {
177
- method: "POST",
178
- headers: {
179
- "Content-Type": "application/json",
180
- "mcp-session-id": sessionId,
181
- },
182
- body: JSON.stringify({
183
- jsonrpc: "2.0",
184
- method: "tools/call",
185
- params: {
186
- name: "speak",
187
- arguments: {
188
- text: [
189
- { text: "こんにちは!", speaker: 1 },
190
- { text: "お元気ですか?", speaker: 3 },
191
- { text: "とても元気です!", speaker: 1 },
192
- ],
193
- },
194
- },
195
- id: 3,
196
- }),
197
- });
198
- ```
199
-
200
- #### SSE を使用した対話形式再生(レガシー)
201
-
202
- ```javascript
203
- // SSE接続の確立
204
- const eventSource = new EventSource("http://localhost:3000/sse");
205
- let sessionId = null;
206
-
207
- eventSource.onopen = function (event) {
208
- console.log("SSE接続が確立されました");
209
- };
210
-
211
- eventSource.onmessage = function (event) {
212
- const data = JSON.parse(event.data);
213
-
214
- if (data.type === "session") {
215
- sessionId = data.sessionId;
216
- console.log("セッションID:", sessionId);
217
-
218
- // 音声合成リクエストを送信
219
- sendSpeakRequest();
220
- }
221
- };
222
-
223
- async function sendSpeakRequest() {
224
- await fetch(`http://localhost:3000/messages?sessionId=${sessionId}`, {
225
- method: "POST",
226
- headers: {
227
- "Content-Type": "application/json",
228
- },
229
- body: JSON.stringify({
230
- jsonrpc: "2.0",
231
- method: "tools/call",
232
- params: {
233
- name: "speak",
234
- arguments: {
235
- text: ["SSEを使用した音声再生です"],
236
- speaker: 1,
237
- },
238
- },
239
- id: 1,
240
- }),
241
- });
242
- }
243
- ```
244
-
245
-
246
- ## パッケージ構成
247
-
248
- このプロジェクトは以下の2つのパッケージで構成されています:
249
-
250
- ### @kajidog/mcp-tts-voicevox (このパッケージ)
251
- - **MCPサーバー** - Claude Desktop等のMCPクライアントと通信するサーバー
252
- - **Node.js専用** - デスクトップ環境やCLI環境での使用を想定
253
- - **ツール提供** - `speak`, `generate_query`, `synthesize_file` 等のMCPツール
254
- - **HTTPサーバー** - SSE/StreamableHTTP対応のWebサーバー
255
-
256
- ### [@kajidog/voicevox-client](https://www.npmjs.com/package/@kajidog/voicevox-client) (独立パッケージ)
257
- - **汎用ライブラリ** - VOICEVOXエンジンとの通信機能を提供
258
- - **クロスプラットフォーム** - Node.js とブラウザ環境の両方で動作
259
- - **キュー管理** - 複数の音声合成リクエストを効率的に処理
260
- - **プリフェッチ機能** - 次の音声を事前に生成し、再生をスムーズに
261
-
262
- ### 使い分けガイド
263
-
264
- **MCPサーバーを使用する場合 (`@kajidog/mcp-tts-voicevox`)**:
265
- - Claude Desktop でTTSツールを使いたい
266
- - コマンドラインからMCPサーバーを起動したい
267
- - Webアプリケーション向けのHTTP APIが必要
268
-
269
- **クライアントライブラリを使用する場合 (`@kajidog/voicevox-client`)**:
270
- - 独自のNode.jsアプリケーションにTTS機能を組み込みたい
271
- - ブラウザアプリケーションでVOICEVOXを使いたい
272
- - MCPプロトコルを使わずに直接VOICEVOX機能を利用したい
273
-
274
- 詳細な使用方法は [`@kajidog/voicevox-client` のドキュメント](https://www.npmjs.com/package/@kajidog/voicevox-client) を参照してください。
275
-
276
- ## MCP 設定例
277
-
278
- ### Claude Desktop での設定
279
-
280
- **⚠️ 重要: Claude Desktop の通信モードについて**
281
-
282
- Claude Desktop は現在 **Stdio モードのみ** をサポートしており、SSE/HTTP モードは直接サポートされていません。
283
-
284
- #### 推奨設定(Stdio モード)
285
-
286
- `claude_desktop_config.json` ファイルに以下の設定を追加:
287
-
288
- ```json
289
- {
290
- "mcpServers": {
291
- "tts-mcp": {
292
- "command": "npx",
293
- "args": ["-y", "@kajidog/mcp-tts-voicevox"],
294
- }
295
- }
296
- }
297
- ```
298
-
299
- #### SSE モードが必要な場合
300
-
301
- SSE モードでの音声合成が必要な場合は、`mcp-remote` を使用して SSE↔Stdio 変換を行えます:
302
-
303
- 1. **Claude Desktop 設定**
304
-
305
- ```json
306
- {
307
- "mcpServers": {
308
- "tts-mcp-proxy": {
309
- "command": "npx",
310
- "args": ["-y", "mcp-remote", "http://localhost:3000/sse"]
311
- }
312
- }
313
- }
314
- ```
315
-
316
- 2. **SSE サーバーの起動**
317
-
318
- **Mac/Linux:**
319
-
320
- ```bash
321
- MCP_HTTP_MODE=true MCP_HTTP_PORT=3000 npx @kajidog/mcp-tts-voicevox
322
- ```
323
-
324
- **Windows:**
325
-
326
- ```powershell
327
- $env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevox
328
- ```
329
-
330
- ### AivisSpeech での設定例
331
-
332
- ```json
333
- {
334
- "mcpServers": {
335
- "tts-mcp": {
336
- "command": "npx",
337
- "args": ["-y", "@kajidog/mcp-tts-voicevox"],
338
- "env": {
339
- "VOICEVOX_URL": "http://127.0.0.1:10101",
340
- "VOICEVOX_DEFAULT_SPEAKER": "888753764"
341
- }
342
- }
343
- }
344
- }
345
- ```
346
-
347
- ### HTTP モードでの設定
348
-
349
- ```json
350
- {
351
- "mcpServers": {
352
- "tts-mcp-http": {
353
- "command": "npx",
354
- "args": ["-y", "@kajidog/mcp-tts-voicevox"],
355
- "env": {
356
- "MCP_HTTP_MODE": "true",
357
- "MCP_HTTP_PORT": "3000",
358
- "MCP_HTTP_HOST": "0.0.0.0",
359
- "VOICEVOX_URL": "http://localhost:50021",
360
- "VOICEVOX_DEFAULT_SPEAKER": "1"
361
- }
362
- }
363
- }
364
- }
365
- ```
366
-
367
- ## 環境変数
368
-
369
- ### VOICEVOX 設定
370
-
371
- - `VOICEVOX_URL`: VOICEVOX エンジンの URL(デフォルト: `http://localhost:50021`)
372
- - `VOICEVOX_DEFAULT_SPEAKER`: デフォルト話者 ID(デフォルト: `1`)
373
- - `VOICEVOX_DEFAULT_SPEED_SCALE`: デフォルト再生速度(デフォルト: `1.0`)
374
-
375
- ### サーバー設定
376
-
377
- - `MCP_HTTP_MODE`: HTTP サーバーモードの有効化(`true` で有効)
378
- - `MCP_HTTP_PORT`: HTTP サーバーのポート番号(デフォルト: `3000`)
379
- - `MCP_HTTP_HOST`: HTTP サーバーのホスト(デフォルト: `0.0.0.0`)
380
- - `NODE_ENV`: 開発モード(`development` で有効)
381
-
382
- ## トラブルシューティング
383
-
384
- ### よくある問題
385
-
386
- 1. **VOICEVOX エンジンが起動していない**
387
-
388
- ```bash
389
- curl http://localhost:50021/speakers
390
- ```
391
-
392
- 2. **ポートが既に使用されている (EADDRINUSE エラー)**
393
-
394
- - 別のポート番号を使用するか、既存のプロセスを終了してください
395
-
396
- 3. **MCP クライアントで認識されない**
397
-
398
- - パッケージのインストールを確認:`npm list -g @kajidog/mcp-tts-voicevox`
399
- - 設定ファイルの JSON 構文を確認
400
-
401
- 4. **音声が再生されない**
402
- - システムの音声出力デバイスを確認
403
- - VOICEVOX エンジンの動作確認:
404
- ```bash
405
- curl -X POST "http://localhost:50021/audio_query?text=テスト&speaker=1"
406
- ```
407
-
408
- ## ライセンス
409
-
410
- ISC
411
-
412
- [![MseeP.ai Security Assessment Badge](https://mseep.net/pr/kajidog-mcp-tts-voicevox-badge.png)](https://mseep.ai/app/kajidog-mcp-tts-voicevox)
1
+ # MCP TTS VOICEVOX
2
+
3
+ VOICEVOX を使用した音声合成 MCP サーバー
4
+
5
+ ## 特徴
6
+
7
+ - **キュー管理機能** - 複数の音声合成リクエストを効率的に処理
8
+ - **プリフェッチ** - 次の音声を事前に生成し、再生をスムーズに
9
+ - **クロスプラットフォーム対応** - Windows、macOS、Linux で動作
10
+ - **Stdio 対応** - 標準入出力による MCP プロトコル通信(Claude Desktop 等で推奨)
11
+ - **SSE 対応** - Server-Sent Events によるリアルタイム対話形式音声再生
12
+ - **StreamableHTTP 対応** - ストリーミング形式での HTTP 通信による高速音声合成
13
+ - **対話形式音声再生** - チャット形式でのリアルタイム音声合成・再生機能
14
+ - **複数話者対応** - セグメント単位での個別話者指定が可能
15
+ - **テキスト自動分割** - 長文の自動分割による安定した音声合成
16
+ - **独立したクライアントライブラリ** - [`@kajidog/voicevox-client`](https://www.npmjs.com/package/@kajidog/voicevox-client) として別パッケージで提供
17
+
18
+ ## 必要条件
19
+
20
+ - Node.js 18.0.0 以上
21
+ - [VOICEVOX エンジン](https://voicevox.hiroshiba.jp/) または互換エンジン
22
+
23
+ ## インストール
24
+
25
+ ```bash
26
+ npm install -g @kajidog/mcp-tts-voicevox
27
+ ```
28
+
29
+ ## 使い方
30
+
31
+ ### MCP サーバーとして
32
+
33
+ #### 1. VOICEVOX エンジンを起動
34
+
35
+ VOICEVOX エンジンを起動し、デフォルトポート(`http://localhost:50021`)で待機状態にします。
36
+
37
+ #### 2. MCP サーバーを起動
38
+
39
+ **標準入出力モード(推奨):**
40
+
41
+ ```bash
42
+ npx @kajidog/mcp-tts-voicevox
43
+ ```
44
+
45
+ **HTTP サーバーモード:**
46
+
47
+ ```bash
48
+ # Linux/macOS
49
+ MCP_HTTP_MODE=true npx @kajidog/mcp-tts-voicevox
50
+
51
+ # Windows PowerShell
52
+ $env:MCP_HTTP_MODE='true'; npx @kajidog/mcp-tts-voicevox
53
+ ```
54
+
55
+ ### MCP ツール一覧
56
+
57
+ MCP サーバーは以下のツールを提供します:
58
+
59
+ #### `speak` - テキスト読み上げ
60
+
61
+ テキストを音声に変換して再生します。
62
+
63
+ **パラメータ:**
64
+
65
+ - `text`: 文字列(改行区切りで複数テキスト、話者指定は「1:テキスト」形式)
66
+ - `speaker` (オプション): 話者 ID
67
+ - `speedScale` (オプション): 再生速度
68
+ - `query` (オプション): 事前生成済みクエリ
69
+
70
+ **使用例:**
71
+
72
+ ```javascript
73
+ // シンプルなテキスト
74
+ { "text": "こんにちは\n今日はいい天気ですね" }
75
+
76
+ // 話者指定
77
+ { "text": "こんにちは\n今日はいい天気ですね", "speaker": 3 }
78
+
79
+ // セグメント別話者指定
80
+ { "text": "1:こんにちは\n3:今日はいい天気ですね" }
81
+ ```
82
+
83
+ #### `generate_query` - クエリ生成
84
+
85
+ 音声合成用クエリを生成します。
86
+
87
+ **パラメータ:**
88
+
89
+ - `text`: 合成するテキスト
90
+ - `speaker` (オプション): 話者 ID
91
+ - `speedScale` (オプション): 再生速度
92
+
93
+ #### `synthesize_file` - ファイル生成
94
+
95
+ 音声ファイルを生成し、パスを返します。
96
+
97
+ **パラメータ:**
98
+
99
+ - `text` (オプション): 合成するテキスト
100
+ - `query` (オプション): 事前生成済みクエリ
101
+ - `output`: 出力ファイルパス
102
+ - `speaker` (オプション): 話者 ID
103
+ - `speedScale` (オプション): 再生速度
104
+
105
+ #### `stop_speaker` - 再生停止
106
+
107
+ 現在の音声合成キューをクリアします。
108
+
109
+ #### `get_speakers` - 話者一覧取得
110
+
111
+ 利用可能な話者一覧を取得します。
112
+
113
+ #### `get_speaker_detail` - 話者詳細取得
114
+
115
+ 指定した UUID の話者詳細情報を取得します。
116
+
117
+ **パラメータ:**
118
+
119
+ - `uuid`: 話者 UUID
120
+
121
+ ### 対話形式音声再生の使用例
122
+
123
+ #### StreamableHTTP を使用した対話形式再生
124
+
125
+ ```javascript
126
+ // セッション初期化
127
+ const response = await fetch("http://localhost:3000/mcp", {
128
+ method: "POST",
129
+ headers: {
130
+ "Content-Type": "application/json",
131
+ },
132
+ body: JSON.stringify({
133
+ jsonrpc: "2.0",
134
+ method: "initialize",
135
+ params: {
136
+ protocolVersion: "2024-11-05",
137
+ capabilities: {},
138
+ },
139
+ id: 1,
140
+ }),
141
+ });
142
+
143
+ const sessionData = await response.json();
144
+ const sessionId = response.headers.get("mcp-session-id");
145
+
146
+ // 音声合成・再生リクエスト
147
+ const speakResponse = await fetch("http://localhost:3000/mcp", {
148
+ method: "POST",
149
+ headers: {
150
+ "Content-Type": "application/json",
151
+ "mcp-session-id": sessionId,
152
+ },
153
+ body: JSON.stringify({
154
+ jsonrpc: "2.0",
155
+ method: "tools/call",
156
+ params: {
157
+ name: "speak",
158
+ arguments: {
159
+ text: "こんにちは、対話形式で音声を再生します",
160
+ speaker: 1,
161
+ speedScale: 1.0,
162
+ },
163
+ },
164
+ id: 2,
165
+ }),
166
+ });
167
+
168
+ const result = await speakResponse.json();
169
+ console.log("結果:", result);
170
+ ```
171
+
172
+ #### 複数話者を使用した対話例
173
+
174
+ ```javascript
175
+ // 複数話者での会話例
176
+ const conversationResponse = await fetch("http://localhost:3000/mcp", {
177
+ method: "POST",
178
+ headers: {
179
+ "Content-Type": "application/json",
180
+ "mcp-session-id": sessionId,
181
+ },
182
+ body: JSON.stringify({
183
+ jsonrpc: "2.0",
184
+ method: "tools/call",
185
+ params: {
186
+ name: "speak",
187
+ arguments: {
188
+ text: "1:こんにちは!\n3:お元気ですか?\n1:とても元気です!",
189
+ },
190
+ },
191
+ id: 3,
192
+ }),
193
+ });
194
+ ```
195
+
196
+ #### SSE を使用した対話形式再生(レガシー)
197
+
198
+ ```javascript
199
+ // SSE接続の確立
200
+ const eventSource = new EventSource("http://localhost:3000/sse");
201
+ let sessionId = null;
202
+
203
+ eventSource.onopen = function (event) {
204
+ console.log("SSE接続が確立されました");
205
+ };
206
+
207
+ eventSource.onmessage = function (event) {
208
+ const data = JSON.parse(event.data);
209
+
210
+ if (data.type === "session") {
211
+ sessionId = data.sessionId;
212
+ console.log("セッションID:", sessionId);
213
+
214
+ // 音声合成リクエストを送信
215
+ sendSpeakRequest();
216
+ }
217
+ };
218
+
219
+ async function sendSpeakRequest() {
220
+ await fetch(`http://localhost:3000/messages?sessionId=${sessionId}`, {
221
+ method: "POST",
222
+ headers: {
223
+ "Content-Type": "application/json",
224
+ },
225
+ body: JSON.stringify({
226
+ jsonrpc: "2.0",
227
+ method: "tools/call",
228
+ params: {
229
+ name: "speak",
230
+ arguments: {
231
+ text: "SSEを使用した音声再生です",
232
+ speaker: 1,
233
+ },
234
+ },
235
+ id: 1,
236
+ }),
237
+ });
238
+ }
239
+ ```
240
+
241
+
242
+ ## パッケージ構成
243
+
244
+ このプロジェクトは以下の2つのパッケージで構成されています:
245
+
246
+ ### @kajidog/mcp-tts-voicevox (このパッケージ)
247
+ - **MCPサーバー** - Claude Desktop等のMCPクライアントと通信するサーバー
248
+ - **Node.js専用** - デスクトップ環境やCLI環境での使用を想定
249
+ - **ツール提供** - `speak`, `generate_query`, `synthesize_file` 等のMCPツール
250
+ - **HTTPサーバー** - SSE/StreamableHTTP対応のWebサーバー
251
+
252
+ ### [@kajidog/voicevox-client](https://www.npmjs.com/package/@kajidog/voicevox-client) (独立パッケージ)
253
+ - **汎用ライブラリ** - VOICEVOXエンジンとの通信機能を提供
254
+ - **クロスプラットフォーム** - Node.js(Windows、macOS、Linux)とブラウザ環境の両方で動作
255
+ - **キュー管理** - 複数の音声合成リクエストを効率的に処理
256
+ - **プリフェッチ機能** - 次の音声を事前に生成し、再生をスムーズに
257
+
258
+ ### 使い分けガイド
259
+
260
+ **MCPサーバーを使用する場合 (`@kajidog/mcp-tts-voicevox`)**:
261
+ - Claude Desktop でTTSツールを使いたい
262
+ - コマンドラインからMCPサーバーを起動したい
263
+ - Webアプリケーション向けのHTTP APIが必要
264
+
265
+ **クライアントライブラリを使用する場合 (`@kajidog/voicevox-client`)**:
266
+ - 独自のNode.jsアプリケーションにTTS機能を組み込みたい
267
+ - ブラウザアプリケーションでVOICEVOXを使いたい
268
+ - MCPプロトコルを使わずに直接VOICEVOX機能を利用したい
269
+
270
+ 詳細な使用方法は [`@kajidog/voicevox-client` のドキュメント](https://www.npmjs.com/package/@kajidog/voicevox-client) を参照してください。
271
+
272
+ ## MCP 設定例
273
+
274
+ ### Claude Desktop での設定
275
+
276
+ **⚠️ 重要: Claude Desktop の通信モードについて**
277
+
278
+ Claude Desktop は現在 **Stdio モードのみ** をサポートしており、SSE/HTTP モードは直接サポートされていません。
279
+
280
+ #### 推奨設定(Stdio モード)
281
+
282
+ `claude_desktop_config.json` ファイルに以下の設定を追加:
283
+
284
+ ```json
285
+ {
286
+ "mcpServers": {
287
+ "tts-mcp": {
288
+ "command": "npx",
289
+ "args": ["-y", "@kajidog/mcp-tts-voicevox"],
290
+ }
291
+ }
292
+ }
293
+ ```
294
+
295
+ #### SSE モードが必要な場合
296
+
297
+ SSE モードでの音声合成が必要な場合は、`mcp-remote` を使用して SSE↔Stdio 変換を行えます:
298
+
299
+ 1. **Claude Desktop 設定**
300
+
301
+ ```json
302
+ {
303
+ "mcpServers": {
304
+ "tts-mcp-proxy": {
305
+ "command": "npx",
306
+ "args": ["-y", "mcp-remote", "http://localhost:3000/sse"]
307
+ }
308
+ }
309
+ }
310
+ ```
311
+
312
+ 2. **SSE サーバーの起動**
313
+
314
+ **Mac/Linux:**
315
+
316
+ ```bash
317
+ MCP_HTTP_MODE=true MCP_HTTP_PORT=3000 npx @kajidog/mcp-tts-voicevox
318
+ ```
319
+
320
+ **Windows:**
321
+
322
+ ```powershell
323
+ $env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevox
324
+ ```
325
+
326
+ ### AivisSpeech での設定例
327
+
328
+ ```json
329
+ {
330
+ "mcpServers": {
331
+ "tts-mcp": {
332
+ "command": "npx",
333
+ "args": ["-y", "@kajidog/mcp-tts-voicevox"],
334
+ "env": {
335
+ "VOICEVOX_URL": "http://127.0.0.1:10101",
336
+ "VOICEVOX_DEFAULT_SPEAKER": "888753764"
337
+ }
338
+ }
339
+ }
340
+ }
341
+ ```
342
+
343
+ ### HTTP モードでの設定
344
+
345
+ ```json
346
+ {
347
+ "mcpServers": {
348
+ "tts-mcp-http": {
349
+ "command": "npx",
350
+ "args": ["-y", "@kajidog/mcp-tts-voicevox"],
351
+ "env": {
352
+ "MCP_HTTP_MODE": "true",
353
+ "MCP_HTTP_PORT": "3000",
354
+ "MCP_HTTP_HOST": "0.0.0.0",
355
+ "VOICEVOX_URL": "http://localhost:50021",
356
+ "VOICEVOX_DEFAULT_SPEAKER": "1"
357
+ }
358
+ }
359
+ }
360
+ }
361
+ ```
362
+
363
+ ## 環境変数
364
+
365
+ ### VOICEVOX 設定
366
+
367
+ - `VOICEVOX_URL`: VOICEVOX エンジンの URL(デフォルト: `http://localhost:50021`)
368
+ - `VOICEVOX_DEFAULT_SPEAKER`: デフォルト話者 ID(デフォルト: `1`)
369
+ - `VOICEVOX_DEFAULT_SPEED_SCALE`: デフォルト再生速度(デフォルト: `1.0`)
370
+
371
+ ### サーバー設定
372
+
373
+ - `MCP_HTTP_MODE`: HTTP サーバーモードの有効化(`true` で有効)
374
+ - `MCP_HTTP_PORT`: HTTP サーバーのポート番号(デフォルト: `3000`)
375
+ - `MCP_HTTP_HOST`: HTTP サーバーのホスト(デフォルト: `0.0.0.0`)
376
+ - `NODE_ENV`: 開発モード(`development` で有効)
377
+
378
+ ## トラブルシューティング
379
+
380
+ ### よくある問題
381
+
382
+ 1. **VOICEVOX エンジンが起動していない**
383
+
384
+ ```bash
385
+ curl http://localhost:50021/speakers
386
+ ```
387
+
388
+ 2. **ポートが既に使用されている (EADDRINUSE エラー)**
389
+
390
+ - 別のポート番号を使用するか、既存のプロセスを終了してください
391
+
392
+ 3. **MCP クライアントで認識されない**
393
+
394
+ - パッケージのインストールを確認:`npm list -g @kajidog/mcp-tts-voicevox`
395
+ - 設定ファイルの JSON 構文を確認
396
+
397
+ 4. **音声が再生されない**
398
+ - システムの音声出力デバイスを確認
399
+ - プラットフォーム固有の音声再生ツールの確認:
400
+ - **Linux**: `aplay`, `paplay`, `play`, `ffplay` のいずれかがインストールされているか確認
401
+ ```bash
402
+ # 利用可能な音声プレイヤーの確認
403
+ which aplay paplay play ffplay
404
+ ```
405
+ - **macOS**: `afplay` (標準でインストール済み)
406
+ - **Windows**: PowerShell (標準でインストール済み)
407
+ - VOICEVOX エンジンの動作確認:
408
+ ```bash
409
+ curl -X POST "http://localhost:50021/audio_query?text=テスト&speaker=1"
410
+ ```
411
+
412
+ ## ライセンス
413
+
414
+ ISC
415
+
416
+ [![MseeP.ai Security Assessment Badge](https://mseep.net/pr/kajidog-mcp-tts-voicevox-badge.png)](https://mseep.ai/app/kajidog-mcp-tts-voicevox)
package/dist/index.js CHANGED
File without changes
package/dist/server.js CHANGED
@@ -13,8 +13,8 @@ const TextSegmentSchema = zod_1.z.object({
13
13
  .describe("Speaker ID for this specific text segment"),
14
14
  });
15
15
  const TextInputSchema = zod_1.z
16
- .union([zod_1.z.array(zod_1.z.string()), zod_1.z.array(TextSegmentSchema)])
17
- .describe('Array of strings ["Hello", "World"] or objects [{"text": "Hello"}, {"text": "World", "speaker": 3}] for individual speaker control. For faster playback start, make the first element short.');
16
+ .string()
17
+ .describe('Text string with line breaks and optional speaker prefix "1:Hello\\n2:World". For faster playback start, make the first element short.');
18
18
  const CommonParametersSchema = {
19
19
  speaker: zod_1.z.number().optional().describe("Default speaker ID (optional)"),
20
20
  speedScale: zod_1.z
@@ -25,7 +25,7 @@ const CommonParametersSchema = {
25
25
  // サーバー初期化
26
26
  exports.server = new mcp_js_1.McpServer({
27
27
  name: "MCP TTS Voicevox",
28
- version: "0.1.1",
28
+ version: "0.1.2",
29
29
  description: "A Voicevox server that converts text to speech for playback and saving.",
30
30
  });
31
31
  // Voicevoxクライアント初期化
@@ -53,18 +53,19 @@ const parseAudioQuery = (query, speedScale) => {
53
53
  }
54
54
  return audioQuery;
55
55
  };
56
+ const parseStringInput = (input) => {
57
+ const lines = input.split("\n").filter((line) => line.trim());
58
+ return lines.map((line) => {
59
+ const match = line.match(/^(\d+):(.*)$/);
60
+ if (match) {
61
+ return { text: match[2].trim(), speaker: parseInt(match[1], 10) };
62
+ }
63
+ return { text: line };
64
+ });
65
+ };
56
66
  const processTextInput = async (text, speaker, speedScale) => {
57
- if (!Array.isArray(text) || text.length === 0) {
58
- throw new Error("Invalid text format. Provide non-empty array.");
59
- }
60
- if (typeof text[0] === "string") {
61
- return await voicevoxClient.speak(text, speaker, speedScale);
62
- }
63
- else if (typeof text[0] === "object" && "text" in text[0]) {
64
- const segments = text;
65
- return await voicevoxClient.speak(segments, speaker, speedScale);
66
- }
67
- throw new Error("Invalid text format. Provide array of strings or objects with 'text' property.");
67
+ const segments = parseStringInput(text);
68
+ return await voicevoxClient.speak(segments, speaker, speedScale);
68
69
  };
69
70
  // ツール定義
70
71
  exports.server.tool("speak", "Convert text to speech and play it", {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AACpE,6BAAwB;AACxB,8DAAsE;AAEtE,MAAM;AACN,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACvD,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;CACzD,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,OAAC;KACtB,KAAK,CAAC,CAAC,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,EAAE,OAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;KACxD,QAAQ,CACP,8LAA8L,CAC/L,CAAC;AAEJ,MAAM,sBAAsB,GAAG;IAC7B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACxE,UAAU,EAAE,OAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACnE,CAAC;AAEF,UAAU;AACG,QAAA,MAAM,GAAG,IAAI,kBAAS,CAAC;IAClC,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;IAChB,WAAW,EACT,yEAAyE;CAC5E,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,cAAc,GAAG,IAAI,gCAAc,CAAC;IACxC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,wBAAwB;IACzD,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC;IACnE,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,KAAK,CAAC;CAC7E,CAAC,CAAC;AAEH,YAAY;AACZ,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,EAAE;QACP;YACE,IAAI,EAAE,MAAe;YACrB,IAAI,EAAE,QAAQ,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACvE;KACF;CACF,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,UAAmB,EAAc,EAAE;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAe,CAAC;IACnD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;IACrC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAC5B,IAA0D,EAC1D,OAAgB,EAChB,UAAmB,EACnB,EAAE;IACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,MAAM,cAAc,CAAC,KAAK,CAAC,IAAgB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAiD,CAAC;QACnE,OAAO,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;AACJ,CAAC,CAAC;AAEF,QAAQ;AACR,cAAM,CAAC,IAAI,CACT,OAAO,EACP,oCAAoC,EACpC;IACE,IAAI,EAAE,eAAe;IACrB,GAAG,sBAAsB;IACzB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CAC/D,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;IAC7C,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,sBAAsB,CACxD,UAAU,EACV,OAAO,CACR,CAAC;YACF,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACjE,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,cAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,sCAAsC,EACtC;IACE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACrD,GAAG,sBAAsB;CAC1B,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;IACtC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,aAAa,CAC9C,IAAI,EACJ,OAAO,EACP,UAAU,CACX,CAAC;QACF,OAAO,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,cAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,qDAAqD,EACrD;IACE,IAAI,EAAE,OAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oFAAoF,CACrF;IACH,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC9D,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC7D,GAAG,sBAAsB;CAC1B,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;IACrD,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,iBAAiB,CACrD,UAAU,EACV,MAAM,EACN,OAAO,CACR,CAAC;YACF,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,iBAAiB,CACrD,IAAI,EACJ,MAAM,EACN,OAAO,EACP,UAAU,CACX,CAAC;YACF,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,KAAK,CACb,oCAAoC,CACrC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,cAAM,CAAC,IAAI,CACT,cAAc,EACd,0BAA0B,EAC1B;IACE,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,wCAAwC,CAAC;CACtD,EACD,KAAK,IAAI,EAAE;IACT,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,cAAM,CAAC,IAAI,CACT,cAAc,EACd,kCAAkC,EAClC,EAAE,EACF,KAAK,IAAI,EAAE;IACT,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,OAAO,CAAC,YAAY;YAC1B,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;SACtC,CAAC,CAAC,CACJ,CAAC;QACF,OAAO,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CACF,CAAC;AAEF,cAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,+BAA+B,EAC/B;IACE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CACzD,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CACpC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAC3C,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,oBAAoB,CACtC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClD,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,QAAQ;SAC7B,CAAC,CAAC,CAAC;QAEJ,MAAM,cAAc,GAAG;YACrB,IAAI,EAAE,aAAa,CAAC,YAAY;YAChC,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;YACpD,MAAM,EAAE,MAAM;SACf,CAAC;QAEF,OAAO,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,89 +1,89 @@
1
- {
2
- "name": "@kajidog/mcp-tts-voicevox",
3
- "version": "0.1.1",
4
- "description": "VOICEVOX integration for MCP - Text-to-Speech server using VOICEVOX engine",
5
- "main": "./dist/index.js",
6
- "module": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "require": "./dist/index.js",
11
- "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
13
- },
14
- "./client": {
15
- "require": "./dist/client.js",
16
- "import": "./dist/client.js",
17
- "types": "./dist/client.d.ts"
18
- }
19
- },
20
- "bin": {
21
- "mcp-tts-voicevox": "./dist/index.js"
22
- },
23
- "type": "commonjs",
24
- "scripts": {
25
- "test": "jest",
26
- "test:sound": "ts-node src/test.ts",
27
- "start": "node dist/index.js",
28
- "start:stdio": "node dist/stdio.js",
29
- "start:http": "MCP_HTTP_MODE=true node dist/index.js",
30
- "start:http:win": "powershell -Command \"$env:MCP_HTTP_MODE='true'; node dist/index.js\"",
31
- "dev": "NODE_ENV=development ts-node src/index.ts",
32
- "dev:stdio": "NODE_ENV=development ts-node src/stdio.ts",
33
- "dev:http": "NODE_ENV=development MCP_HTTP_MODE=true ts-node src/index.ts",
34
- "dev:http:win": "powershell -Command \"$env:NODE_ENV='development'; $env:MCP_HTTP_MODE='true'; ts-node src/index.ts\"",
35
- "build": "tsc && node scripts/fix-permissions.js",
36
- "build:clean": "rm -rf dist && npm run build",
37
- "lint": "tsc --noEmit",
38
- "prepare": "npm run build",
39
- "prepublishOnly": "npm test && npm run lint"
40
- },
41
- "files": [
42
- "dist",
43
- "README.md",
44
- "LICENSE",
45
- "scripts"
46
- ],
47
- "keywords": [
48
- "voicevox",
49
- "tts",
50
- "text-to-speech",
51
- "mcp",
52
- "mcp-server"
53
- ],
54
- "author": {
55
- "name": "kajidog",
56
- "email": "dev@kajidog.com"
57
- },
58
- "repository": {
59
- "type": "git",
60
- "url": "git+https://github.com/kajidog/mcp-tts-voicevox.git"
61
- },
62
- "bugs": {
63
- "url": "https://github.com/kajidog/mcp-tts-voicevox/issues"
64
- },
65
- "homepage": "https://github.com/kajidog/mcp-tts-voicevox#readme",
66
- "license": "ISC",
67
- "engines": {
68
- "node": ">=18.0.0"
69
- },
70
- "dependencies": {
71
- "@hono/node-server": "^1.14.2",
72
- "@kajidog/voicevox-client": "^0.0.1",
73
- "@modelcontextprotocol/sdk": "^1.8.0",
74
- "fetch-to-node": "^2.1.0",
75
- "hono": "^4.7.10",
76
- "zod": "^3.22.4"
77
- },
78
- "devDependencies": {
79
- "@types/jest": "^29.5.14",
80
- "@types/node": "^20.0.0",
81
- "jest": "^29.7.0",
82
- "ts-jest": "^29.3.1",
83
- "ts-node": "^10.9.0",
84
- "typescript": "^5.0.0"
85
- },
86
- "peerDependencies": {
87
- "typescript": ">=4.5.0"
88
- }
1
+ {
2
+ "name": "@kajidog/mcp-tts-voicevox",
3
+ "version": "0.1.2",
4
+ "description": "VOICEVOX integration for MCP - Text-to-Speech server using VOICEVOX engine",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "require": "./dist/index.js",
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./client": {
15
+ "require": "./dist/client.js",
16
+ "import": "./dist/client.js",
17
+ "types": "./dist/client.d.ts"
18
+ }
19
+ },
20
+ "bin": {
21
+ "mcp-tts-voicevox": "./dist/index.js"
22
+ },
23
+ "type": "commonjs",
24
+ "scripts": {
25
+ "test": "jest",
26
+ "test:sound": "ts-node src/test.ts",
27
+ "start": "node dist/index.js",
28
+ "start:stdio": "node dist/stdio.js",
29
+ "start:http": "MCP_HTTP_MODE=true node dist/index.js",
30
+ "start:http:win": "powershell -Command \"$env:MCP_HTTP_MODE='true'; node dist/index.js\"",
31
+ "dev": "NODE_ENV=development ts-node src/index.ts",
32
+ "dev:stdio": "NODE_ENV=development ts-node src/stdio.ts",
33
+ "dev:http": "NODE_ENV=development MCP_HTTP_MODE=true ts-node src/index.ts",
34
+ "dev:http:win": "powershell -Command \"$env:NODE_ENV='development'; $env:MCP_HTTP_MODE='true'; ts-node src/index.ts\"",
35
+ "build": "tsc && node scripts/fix-permissions.js",
36
+ "build:clean": "rm -rf dist && npm run build",
37
+ "lint": "tsc --noEmit",
38
+ "prepare": "npm run build",
39
+ "prepublishOnly": "npm test && npm run lint"
40
+ },
41
+ "files": [
42
+ "dist",
43
+ "README.md",
44
+ "LICENSE",
45
+ "scripts"
46
+ ],
47
+ "keywords": [
48
+ "voicevox",
49
+ "tts",
50
+ "text-to-speech",
51
+ "mcp",
52
+ "mcp-server"
53
+ ],
54
+ "author": {
55
+ "name": "kajidog",
56
+ "email": "dev@kajidog.com"
57
+ },
58
+ "repository": {
59
+ "type": "git",
60
+ "url": "git+https://github.com/kajidog/mcp-tts-voicevox.git"
61
+ },
62
+ "bugs": {
63
+ "url": "https://github.com/kajidog/mcp-tts-voicevox/issues"
64
+ },
65
+ "homepage": "https://github.com/kajidog/mcp-tts-voicevox#readme",
66
+ "license": "ISC",
67
+ "engines": {
68
+ "node": ">=18.0.0"
69
+ },
70
+ "dependencies": {
71
+ "@hono/node-server": "^1.14.2",
72
+ "@kajidog/voicevox-client": "^0.0.2",
73
+ "@modelcontextprotocol/sdk": "^1.8.0",
74
+ "fetch-to-node": "^2.1.0",
75
+ "hono": "^4.7.10",
76
+ "zod": "^3.22.4"
77
+ },
78
+ "devDependencies": {
79
+ "@types/jest": "^29.5.14",
80
+ "@types/node": "^20.0.0",
81
+ "jest": "^29.7.0",
82
+ "ts-jest": "^29.3.1",
83
+ "ts-node": "^10.9.0",
84
+ "typescript": "^5.0.0"
85
+ },
86
+ "peerDependencies": {
87
+ "typescript": ">=4.5.0"
88
+ }
89
89
  }