@kajidog/mcp-tts-voicevox 0.3.1 → 0.4.0
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 +33 -0
- package/README.md +33 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +17 -1
- package/dist/http.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +24 -8
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +20 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +27 -0
- package/dist/session.js.map +1 -0
- package/package.json +2 -2
package/README.ja.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
VOICEVOX を使用した MCP テキスト読み上げサーバー
|
|
6
6
|
|
|
7
|
+
> 🎮 **[ブラウザデモを試す](https://kajidog.github.io/mcp-tts-voicevox/)** — VoicevoxClient をブラウザで直接テスト
|
|
8
|
+
|
|
7
9
|
## 何ができるか
|
|
8
10
|
|
|
9
11
|
- **AI アシスタントに喋らせる** — Claude Desktop などの MCP クライアントからテキストを読み上げ
|
|
@@ -259,6 +261,37 @@ $env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voice
|
|
|
259
261
|
}
|
|
260
262
|
```
|
|
261
263
|
|
|
264
|
+
### プロジェクトごとの話者設定
|
|
265
|
+
|
|
266
|
+
Claude Code では `.mcp.json` にカスタムヘッダーを設定することで、プロジェクトごとに異なるデフォルト話者を設定できます:
|
|
267
|
+
|
|
268
|
+
| ヘッダー | 説明 |
|
|
269
|
+
|---------|------|
|
|
270
|
+
| `X-Voicevox-Speaker` | このプロジェクトのデフォルト話者 ID |
|
|
271
|
+
|
|
272
|
+
**`.mcp.json` の例:**
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"mcpServers": {
|
|
277
|
+
"tts": {
|
|
278
|
+
"type": "http",
|
|
279
|
+
"url": "http://localhost:3000/mcp",
|
|
280
|
+
"headers": {
|
|
281
|
+
"X-Voicevox-Speaker": "113"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
これにより、プロジェクトごとに自動的に異なる音声キャラクターを使い分けることができます。
|
|
289
|
+
|
|
290
|
+
**優先順位:**
|
|
291
|
+
1. ツール呼び出し時の `speaker` パラメータ(最高)
|
|
292
|
+
2. `X-Voicevox-Speaker` ヘッダーによるプロジェクトデフォルト
|
|
293
|
+
3. グローバルな `VOICEVOX_DEFAULT_SPEAKER` 設定(最低)
|
|
294
|
+
|
|
262
295
|
</details>
|
|
263
296
|
|
|
264
297
|
<details>
|
package/README.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
A text-to-speech MCP server using VOICEVOX
|
|
6
6
|
|
|
7
|
+
> 🎮 **[Try the Browser Demo](https://kajidog.github.io/mcp-tts-voicevox/)** — Test VoicevoxClient directly in your browser
|
|
8
|
+
|
|
7
9
|
## What You Can Do
|
|
8
10
|
|
|
9
11
|
- **Make your AI assistant speak** — Text-to-speech from MCP clients like Claude Desktop
|
|
@@ -259,6 +261,37 @@ $env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voice
|
|
|
259
261
|
}
|
|
260
262
|
```
|
|
261
263
|
|
|
264
|
+
### Per-Project Speaker Settings
|
|
265
|
+
|
|
266
|
+
With Claude Code, you can configure different default speakers per project using custom headers in `.mcp.json`:
|
|
267
|
+
|
|
268
|
+
| Header | Description |
|
|
269
|
+
|--------|-------------|
|
|
270
|
+
| `X-Voicevox-Speaker` | Default speaker ID for this project |
|
|
271
|
+
|
|
272
|
+
**Example `.mcp.json`:**
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"mcpServers": {
|
|
277
|
+
"tts": {
|
|
278
|
+
"type": "http",
|
|
279
|
+
"url": "http://localhost:3000/mcp",
|
|
280
|
+
"headers": {
|
|
281
|
+
"X-Voicevox-Speaker": "113"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
This allows each project to use a different voice character automatically.
|
|
289
|
+
|
|
290
|
+
**Priority order:**
|
|
291
|
+
1. Explicit `speaker` parameter in tool call (highest)
|
|
292
|
+
2. Project default from `X-Voicevox-Speaker` header
|
|
293
|
+
3. Global `VOICEVOX_DEFAULT_SPEAKER` setting (lowest)
|
|
294
|
+
|
|
262
295
|
</details>
|
|
263
296
|
|
|
264
297
|
<details>
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,IAAI,EAAa,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,IAAI,EAAa,MAAM,MAAM,CAAA;AA4NpD,gDAAkB;AAClB,QAAA,MAAM,GAAG,EAAE,IAAiB,CAAA;AAqB5B,eAAe,GAAG,CAAA"}
|
package/dist/http.js
CHANGED
|
@@ -7,6 +7,7 @@ const hono_1 = require("hono");
|
|
|
7
7
|
const cors_1 = require("hono/cors");
|
|
8
8
|
const config_1 = require("./config");
|
|
9
9
|
const server_1 = require("./server");
|
|
10
|
+
const session_1 = require("./session");
|
|
10
11
|
// 設定を取得
|
|
11
12
|
const config = (0, config_1.getConfig)();
|
|
12
13
|
/**
|
|
@@ -124,11 +125,25 @@ async function handleMCP(c) {
|
|
|
124
125
|
// initializeリクエストの場合のみ新しいtransportを作成
|
|
125
126
|
if ((0, types_js_1.isInitializeRequest)(body)) {
|
|
126
127
|
console.log('Creating new WebStandard session');
|
|
128
|
+
// X-Voicevox-Speaker ヘッダーを読み取り
|
|
129
|
+
const speakerHeader = c.req.header('X-Voicevox-Speaker');
|
|
130
|
+
let sessionSpeaker;
|
|
131
|
+
if (speakerHeader) {
|
|
132
|
+
const parsed = Number.parseInt(speakerHeader, 10);
|
|
133
|
+
if (!Number.isNaN(parsed) && parsed >= 0) {
|
|
134
|
+
sessionSpeaker = parsed;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
127
137
|
const transport = new webStandardStreamableHttp_js_1.WebStandardStreamableHTTPServerTransport({
|
|
128
138
|
sessionIdGenerator: () => (0, node_crypto_1.randomUUID)(),
|
|
129
139
|
onsessioninitialized: (newSessionId) => {
|
|
130
140
|
console.log(`Session initialized: ${newSessionId}`);
|
|
131
141
|
transports.set(newSessionId, transport);
|
|
142
|
+
// セッションのデフォルト話者を設定
|
|
143
|
+
if (sessionSpeaker !== undefined) {
|
|
144
|
+
(0, session_1.setSessionConfig)(newSessionId, { defaultSpeaker: sessionSpeaker });
|
|
145
|
+
console.log(`Session ${newSessionId} default speaker: ${sessionSpeaker}`);
|
|
146
|
+
}
|
|
132
147
|
},
|
|
133
148
|
});
|
|
134
149
|
// クリーンアップハンドラー
|
|
@@ -137,6 +152,7 @@ async function handleMCP(c) {
|
|
|
137
152
|
if (sid) {
|
|
138
153
|
console.log(`Transport closed for session: ${sid}`);
|
|
139
154
|
transports.delete(sid);
|
|
155
|
+
(0, session_1.deleteSessionConfig)(sid);
|
|
140
156
|
}
|
|
141
157
|
};
|
|
142
158
|
// サーバーに接続
|
|
@@ -171,7 +187,7 @@ const app = new hono_1.Hono();
|
|
|
171
187
|
app.use('/mcp', (0, cors_1.cors)({
|
|
172
188
|
origin: '*',
|
|
173
189
|
allowMethods: ['GET', 'POST', 'DELETE', 'OPTIONS'],
|
|
174
|
-
allowHeaders: ['Content-Type', 'mcp-session-id', 'Last-Event-ID', 'mcp-protocol-version'],
|
|
190
|
+
allowHeaders: ['Content-Type', 'mcp-session-id', 'Last-Event-ID', 'mcp-protocol-version', 'X-Voicevox-Speaker'],
|
|
175
191
|
exposeHeaders: ['mcp-session-id', 'mcp-protocol-version'],
|
|
176
192
|
}));
|
|
177
193
|
// セキュリティミドルウェアを適用(MCP仕様2025-11-25準拠)
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";;AAAA,6CAAwC;AACxC,gHAAwH;AACxH,iEAAwE;AACxE,+BAAoD;AACpD,oCAAgC;AAEhC,qCAAoC;AACpC,qCAAiC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAWnE,kBAAQ;AACR,QAAA,MAAM,MAAM,iCAAc,CAAA;AAE1B,wBAAU;AACV,eAAO,MAAM,MAAM,WAIjB,CAAA;AAwYF,6CAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
package/dist/server.js
CHANGED
|
@@ -38,6 +38,7 @@ const voicevox_client_1 = require("@kajidog/voicevox-client");
|
|
|
38
38
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
39
39
|
const z = __importStar(require("zod/v4"));
|
|
40
40
|
const config_1 = require("./config");
|
|
41
|
+
const session_1 = require("./session");
|
|
41
42
|
// 設定を取得
|
|
42
43
|
const config = (0, config_1.getConfig)();
|
|
43
44
|
exports.config = config;
|
|
@@ -101,6 +102,15 @@ const parseStringInput = (input) => {
|
|
|
101
102
|
return { text: line };
|
|
102
103
|
});
|
|
103
104
|
};
|
|
105
|
+
/**
|
|
106
|
+
* 有効な話者IDを取得(優先順位: 明示的パラメータ > セッション設定 > グローバル設定)
|
|
107
|
+
*/
|
|
108
|
+
const getEffectiveSpeaker = (explicitSpeaker, sessionId) => {
|
|
109
|
+
if (explicitSpeaker !== undefined)
|
|
110
|
+
return explicitSpeaker;
|
|
111
|
+
const sessionConfig = (0, session_1.getSessionConfig)(sessionId);
|
|
112
|
+
return sessionConfig?.defaultSpeaker;
|
|
113
|
+
};
|
|
104
114
|
const processTextInput = async (text, speaker, speedScale, playbackOptions) => {
|
|
105
115
|
const segments = parseStringInput(text);
|
|
106
116
|
return await voicevoxClient.speak(segments, {
|
|
@@ -168,8 +178,10 @@ registerToolIfEnabled('speak', {
|
|
|
168
178
|
title: 'Speak',
|
|
169
179
|
description: 'Convert text to speech and play it. Text is split by line breaks (\\n) into separate speech units. Each line is processed as an independent audio segment.',
|
|
170
180
|
inputSchema: buildSpeakInputSchema(),
|
|
171
|
-
}, async ({ text, speaker, query, speedScale, immediate, waitForStart, waitForEnd, }) => {
|
|
181
|
+
}, async ({ text, speaker, query, speedScale, immediate, waitForStart, waitForEnd, }, extra) => {
|
|
172
182
|
try {
|
|
183
|
+
// 有効な話者IDを取得(優先順位: 明示的パラメータ > セッション設定 > グローバル設定)
|
|
184
|
+
const effectiveSpeaker = getEffectiveSpeaker(speaker, extra.sessionId);
|
|
173
185
|
// 設定からデフォルトの再生オプションを取得
|
|
174
186
|
const playbackOptions = {
|
|
175
187
|
immediate: immediate ?? config.defaultImmediate,
|
|
@@ -180,13 +192,13 @@ registerToolIfEnabled('speak', {
|
|
|
180
192
|
if (query) {
|
|
181
193
|
const audioQuery = parseAudioQuery(query, speedScale);
|
|
182
194
|
result = await voicevoxClient.enqueueAudioGeneration(audioQuery, {
|
|
183
|
-
speaker,
|
|
195
|
+
speaker: effectiveSpeaker,
|
|
184
196
|
speedScale,
|
|
185
197
|
...playbackOptions,
|
|
186
198
|
});
|
|
187
199
|
}
|
|
188
200
|
else {
|
|
189
|
-
result = await processTextInput(text,
|
|
201
|
+
result = await processTextInput(text, effectiveSpeaker, speedScale, playbackOptions);
|
|
190
202
|
}
|
|
191
203
|
return createSuccessResponse(formatSpeakResponse(result));
|
|
192
204
|
}
|
|
@@ -202,9 +214,11 @@ registerToolIfEnabled('generate_query', {
|
|
|
202
214
|
speaker: z.number().optional().describe('Default speaker ID (optional)'),
|
|
203
215
|
speedScale: z.number().optional().describe('Playback speed (optional, default from environment)'),
|
|
204
216
|
},
|
|
205
|
-
}, async ({ text, speaker, speedScale, }) => {
|
|
217
|
+
}, async ({ text, speaker, speedScale, }, extra) => {
|
|
206
218
|
try {
|
|
207
|
-
|
|
219
|
+
// 有効な話者IDを取得(優先順位: 明示的パラメータ > セッション設定 > グローバル設定)
|
|
220
|
+
const effectiveSpeaker = getEffectiveSpeaker(speaker, extra.sessionId);
|
|
221
|
+
const query = await voicevoxClient.generateQuery(text, effectiveSpeaker, speedScale);
|
|
208
222
|
return createSuccessResponse(JSON.stringify(query));
|
|
209
223
|
}
|
|
210
224
|
catch (error) {
|
|
@@ -224,15 +238,17 @@ registerToolIfEnabled('synthesize_file', {
|
|
|
224
238
|
speaker: z.number().optional().describe('Default speaker ID (optional)'),
|
|
225
239
|
speedScale: z.number().optional().describe('Playback speed (optional, default from environment)'),
|
|
226
240
|
},
|
|
227
|
-
}, async ({ text, query, speaker, output, speedScale, }) => {
|
|
241
|
+
}, async ({ text, query, speaker, output, speedScale, }, extra) => {
|
|
228
242
|
try {
|
|
243
|
+
// 有効な話者IDを取得(優先順位: 明示的パラメータ > セッション設定 > グローバル設定)
|
|
244
|
+
const effectiveSpeaker = getEffectiveSpeaker(speaker, extra.sessionId);
|
|
229
245
|
if (query) {
|
|
230
246
|
const audioQuery = parseAudioQuery(query, speedScale);
|
|
231
|
-
const filePath = await voicevoxClient.generateAudioFile(audioQuery, output,
|
|
247
|
+
const filePath = await voicevoxClient.generateAudioFile(audioQuery, output, effectiveSpeaker);
|
|
232
248
|
return createSuccessResponse(filePath);
|
|
233
249
|
}
|
|
234
250
|
if (text) {
|
|
235
|
-
const filePath = await voicevoxClient.generateAudioFile(text, output,
|
|
251
|
+
const filePath = await voicevoxClient.generateAudioFile(text, output, effectiveSpeaker, speedScale);
|
|
236
252
|
return createSuccessResponse(filePath);
|
|
237
253
|
}
|
|
238
254
|
throw new Error('queryパラメータとtextパラメータのどちらかを指定してください');
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAA4F;AAC5F,oEAAmE;AAEnE,MAAY,CAAC,mCAAc;AAC3B,qCAAoC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* セッションごとの設定を管理するモジュール
|
|
3
|
+
* 循環参照を避けるため、独立したモジュールとして実装
|
|
4
|
+
*/
|
|
5
|
+
export interface SessionConfig {
|
|
6
|
+
defaultSpeaker?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* セッション設定を保存
|
|
10
|
+
*/
|
|
11
|
+
export declare function setSessionConfig(sessionId: string, config: SessionConfig): void;
|
|
12
|
+
/**
|
|
13
|
+
* セッション設定を取得
|
|
14
|
+
*/
|
|
15
|
+
export declare function getSessionConfig(sessionId?: string): SessionConfig | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* セッション設定を削除
|
|
18
|
+
*/
|
|
19
|
+
export declare function deleteSessionConfig(sessionId: string): void;
|
|
20
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAE/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAG9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE3D"}
|
package/dist/session.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setSessionConfig = setSessionConfig;
|
|
4
|
+
exports.getSessionConfig = getSessionConfig;
|
|
5
|
+
exports.deleteSessionConfig = deleteSessionConfig;
|
|
6
|
+
const sessionConfigs = new Map();
|
|
7
|
+
/**
|
|
8
|
+
* セッション設定を保存
|
|
9
|
+
*/
|
|
10
|
+
function setSessionConfig(sessionId, config) {
|
|
11
|
+
sessionConfigs.set(sessionId, config);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* セッション設定を取得
|
|
15
|
+
*/
|
|
16
|
+
function getSessionConfig(sessionId) {
|
|
17
|
+
if (!sessionId)
|
|
18
|
+
return undefined;
|
|
19
|
+
return sessionConfigs.get(sessionId);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* セッション設定を削除
|
|
23
|
+
*/
|
|
24
|
+
function deleteSessionConfig(sessionId) {
|
|
25
|
+
sessionConfigs.delete(sessionId);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":";;;;;AASA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAA;AAEvD;;GAEG;AACH,0BAAiC,SAAiB,EAAE,MAAqB,EAAQ;IAC/E,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAAA,CACtC;AAED;;GAEG;AACH,0BAAiC,SAAkB,EAA6B;IAC9E,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAChC,OAAO,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAAA,CACrC;AAED;;GAEG;AACH,6BAAoC,SAAiB,EAAQ;IAC3D,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAAA,CACjC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kajidog/mcp-tts-voicevox",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "VOICEVOX integration for MCP - Text-to-Speech server using VOICEVOX engine",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
56
56
|
"hono": "^4.7.10",
|
|
57
57
|
"zod": "^3.25.0",
|
|
58
|
-
"@kajidog/voicevox-client": "0.3.
|
|
58
|
+
"@kajidog/voicevox-client": "0.3.1"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@biomejs/biome": "^1.9.4",
|