volcengine-api-mcp 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +93 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/ark.d.ts +28 -0
- package/dist/lib/ark.js +105 -0
- package/dist/lib/ark.js.map +1 -0
- package/dist/lib/auc.d.ts +67 -0
- package/dist/lib/auc.js +160 -0
- package/dist/lib/auc.js.map +1 -0
- package/dist/lib/client.d.ts +18 -0
- package/dist/lib/client.js +117 -0
- package/dist/lib/client.js.map +1 -0
- package/dist/lib/index.d.ts +8 -0
- package/dist/lib/index.js +9 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/search.d.ts +41 -0
- package/dist/lib/search.js +160 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/lib/signer.d.ts +17 -0
- package/dist/lib/signer.js +58 -0
- package/dist/lib/signer.js.map +1 -0
- package/dist/lib/tos.d.ts +29 -0
- package/dist/lib/tos.js +93 -0
- package/dist/lib/tos.js.map +1 -0
- package/dist/lib/tts.d.ts +59 -0
- package/dist/lib/tts.js +126 -0
- package/dist/lib/tts.js.map +1 -0
- package/dist/lib/types.d.ts +34 -0
- package/dist/lib/types.js +15 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/tools/auc.d.ts +34 -0
- package/dist/tools/auc.js +76 -0
- package/dist/tools/auc.js.map +1 -0
- package/dist/tools/image.d.ts +37 -0
- package/dist/tools/image.js +58 -0
- package/dist/tools/image.js.map +1 -0
- package/dist/tools/search.d.ts +38 -0
- package/dist/tools/search.js +56 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/tos.d.ts +30 -0
- package/dist/tools/tos.js +38 -0
- package/dist/tools/tos.js.map +1 -0
- package/dist/tools/tts.d.ts +43 -0
- package/dist/tools/tts.js +80 -0
- package/dist/tools/tts.js.map +1 -0
- package/package.json +50 -4
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { mkdirSync, statSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, resolve } from 'node:path';
|
|
4
|
+
import { TTS_DEFAULT_RESOURCE_ID, TTS_DEFAULT_SAMPLE_RATE, TTS_DEFAULT_SPEAKER, unidirectionalTts, } from '../lib/index.js';
|
|
5
|
+
const AUDIO_MIME = {
|
|
6
|
+
mp3: 'audio/mpeg',
|
|
7
|
+
pcm: 'audio/pcm',
|
|
8
|
+
ogg_opus: 'audio/ogg',
|
|
9
|
+
wav: 'audio/wav',
|
|
10
|
+
};
|
|
11
|
+
function resolveArkApiKey() {
|
|
12
|
+
const key = process.env.ARK_API_KEY;
|
|
13
|
+
if (!key?.trim() || !/^ark-[A-Za-z0-9-]+$/.test(key.trim())) {
|
|
14
|
+
throw new Error('缺少有效的方舟 API Key(ark- 开头),请配置环境变量 ARK_API_KEY');
|
|
15
|
+
}
|
|
16
|
+
return key.trim();
|
|
17
|
+
}
|
|
18
|
+
export const ttsUnidirectionalTool = {
|
|
19
|
+
name: 'plan_tts_unidirectional',
|
|
20
|
+
description: '火山豆包语音合成大模型-单向流式(端点 /api/v3/plan/tts/unidirectional,HTTP Chunked)。输入文本一次性合成音频,落盘并返回给 Agent。' +
|
|
21
|
+
'默认音色 zh_female_vv_uranus_bigtts(豆包 2.0 通用女声),音色 ID 从控制台>音色库获取;复刻音色需 resource_id=seed-icl-2.0 并传 model。' +
|
|
22
|
+
'需要环境变量 ARK_API_KEY。',
|
|
23
|
+
inputSchema: {
|
|
24
|
+
text: z.string().min(1).describe('待合成的文本'),
|
|
25
|
+
output_path: z.string().min(1).describe('音频保存的绝对路径(扩展名与 format 一致,如 .mp3/.wav/.ogg/.pcm)'),
|
|
26
|
+
speaker: z.string().optional().describe(`音色 ID,默认 ${TTS_DEFAULT_SPEAKER}`),
|
|
27
|
+
resource_id: z.string().optional().describe(`模型版本资源,默认 ${TTS_DEFAULT_RESOURCE_ID};声音复刻用 seed-icl-2.0`),
|
|
28
|
+
model: z.string().optional().describe('复刻音色时需指定,如 seed-tts-2.0-standard'),
|
|
29
|
+
format: z.enum(['mp3', 'pcm', 'ogg_opus', 'wav']).optional().describe('音频格式,默认 mp3'),
|
|
30
|
+
sample_rate: z.number().int().optional().describe(`采样率 Hz,默认 ${TTS_DEFAULT_SAMPLE_RATE};ogg_opus 仅支持 48000`),
|
|
31
|
+
speech_rate: z.number().int().min(-50).max(100).optional().describe('语速 [-50,100],100 = 2.0 倍速'),
|
|
32
|
+
loudness_rate: z.number().int().min(-50).max(100).optional().describe('音量 [-50,100],100 = 2.0 倍音量'),
|
|
33
|
+
enable_subtitle: z.boolean().optional().describe('启用字幕(字级时间戳),仅中英文'),
|
|
34
|
+
explicit_language: z.string().optional().describe('显式朗读语种,如 zh-cn / en / ja,不传自动检测'),
|
|
35
|
+
},
|
|
36
|
+
handler: async (args) => {
|
|
37
|
+
const result = await unidirectionalTts({
|
|
38
|
+
apiKey: resolveArkApiKey(),
|
|
39
|
+
text: args.text,
|
|
40
|
+
speaker: args.speaker,
|
|
41
|
+
resourceId: args.resource_id,
|
|
42
|
+
model: args.model,
|
|
43
|
+
format: args.format,
|
|
44
|
+
sampleRate: args.sample_rate,
|
|
45
|
+
speechRate: args.speech_rate,
|
|
46
|
+
loudnessRate: args.loudness_rate,
|
|
47
|
+
enableSubtitle: args.enable_subtitle,
|
|
48
|
+
explicitLanguage: args.explicit_language,
|
|
49
|
+
});
|
|
50
|
+
const path = resolve(args.output_path);
|
|
51
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
52
|
+
writeFileSync(path, result.audio);
|
|
53
|
+
const bytes = statSync(path).size;
|
|
54
|
+
if (bytes < 1024) {
|
|
55
|
+
throw new Error(`落盘文件过小(${bytes}B),疑似异常响应`);
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
content: [
|
|
59
|
+
{
|
|
60
|
+
type: 'text',
|
|
61
|
+
text: JSON.stringify({
|
|
62
|
+
ok: true,
|
|
63
|
+
output: path,
|
|
64
|
+
format: result.format,
|
|
65
|
+
sample_rate: result.sampleRate,
|
|
66
|
+
bytes,
|
|
67
|
+
text_words: result.usage?.text_words,
|
|
68
|
+
sentence: result.sentence?.text,
|
|
69
|
+
}, null, 2),
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'audio',
|
|
73
|
+
data: result.audio.toString('base64'),
|
|
74
|
+
mimeType: AUDIO_MIME[result.format] ?? 'audio/mpeg',
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
};
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tts.js","sourceRoot":"","sources":["../../src/tools/tts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,UAAU,GAA2B;IACzC,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,QAAQ,EAAE,WAAW;IACrB,GAAG,EAAE,WAAW;CACjB,CAAC;AAEF,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,6FAA6F;QAC7F,wGAAwG;QACxG,qBAAqB;IACvB,WAAW,EAAE;QACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAC1F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,mBAAmB,EAAE,CAAC;QAC1E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,uBAAuB,qBAAqB,CAAC;QACtG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACzE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACpF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,uBAAuB,qBAAqB,CAAC;QAC5G,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAChG,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACnG,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACpE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACrF;IACD,OAAO,EAAE,KAAK,EAAE,IAYf,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,MAAM,EAAE,gBAAgB,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAoC;YACjD,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;SACzC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAClC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,EAAE,EAAE,IAAI;wBACR,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,WAAW,EAAE,MAAM,CAAC,UAAU;wBAC9B,KAAK;wBACL,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU;wBACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI;qBAChC,EACD,IAAI,EACJ,CAAC,CACF;iBACF;gBACD;oBACE,IAAI,EAAE,OAAgB;oBACtB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACrC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY;iBACpD;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,52 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "volcengine-api-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "火山引擎 API 的 MCP Server(stdio):方舟生图 / TTS / TOS 上传 / 语音转写 / 联网搜索",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Marvin Pan",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"volcengine",
|
|
9
|
+
"mcp",
|
|
10
|
+
"ark",
|
|
11
|
+
"seedream",
|
|
12
|
+
"doubao",
|
|
13
|
+
"tos",
|
|
14
|
+
"asr",
|
|
15
|
+
"tts",
|
|
16
|
+
"search",
|
|
17
|
+
"model-context-protocol"
|
|
18
|
+
],
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/marrviin/volcengine-api-mcp.git"
|
|
22
|
+
},
|
|
23
|
+
"type": "module",
|
|
24
|
+
"main": "dist/index.js",
|
|
25
|
+
"types": "dist/index.d.ts",
|
|
26
|
+
"bin": {
|
|
27
|
+
"volcengine-api-mcp": "dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist"
|
|
31
|
+
],
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=20"
|
|
34
|
+
},
|
|
35
|
+
"packageManager": "pnpm@12.18.0",
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc -p tsconfig.json",
|
|
38
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
39
|
+
"dev": "tsx src/index.ts",
|
|
40
|
+
"start": "node dist/index.js"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@modelcontextprotocol/sdk": "^1.20.0",
|
|
44
|
+
"@volcengine/tos-sdk": "^2.9.1",
|
|
45
|
+
"zod": "^3.25.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/node": "^24.0.0",
|
|
49
|
+
"tsx": "^4.20.0",
|
|
50
|
+
"typescript": "^5.9.0"
|
|
51
|
+
}
|
|
52
|
+
}
|