rvc-sing-mcp
Searches and downloads songs from YouTube via yt-dlp (with Bilibili search as a fallback), providing the source audio track that the server then clips, separates, voice-converts, and mixes into a finished cover.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rvc-sing-mcp帮我翻唱一首《晴天》"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
rvc-sing-mcp
给 AI Agent 一个「会唱歌」的 MCP 工具:说一句「唱一首《晴天》」,它自己上网找歌、截片段、分离人声、用你的 RVC 音色模型翻唱、混回伴奏,最后把成品音频放到约定的目录里。
An MCP server that turns "sing me this song" into a ready-to-send audio file, using demucs + RVC voice conversion.
搜歌(B站/YouTube) → 下载音轨 → 截片段 → demucs 分离 → RVC 换音色 → 混音 → output/*.mp3这个项目只负责造文件,不负责发送。发语音这一步交给你的机器人框架(QQ / Telegram / Discord / 微信…),因此可以接任何支持 MCP 的 agent。
特性
说明 | |
三个工具 |
|
两种模式 |
|
自动定调 | 先估原唱人声中位基频,再把音域搬到目标音色的舒适区,而不是机械升八度 |
起唱点记忆 | 按歌名记住「第几秒开唱、唱多长」,避免每次都把前奏唱进去 |
索引自动启用 |
|
并发排队 | 同时来两首歌会排队而不是并行抢显存( |
磁盘自清 |
|
零硬编码 | 所有路径走配置/环境变量,clone 到哪都能跑 |
结构化自检 | 缺依赖时一次列全(含 contentvec / rmvpe / 输出目录可写),绝不「悄悄地」把 ai 模式降级成原唱 |
工程坑已踩平 | 老版 ffmpeg 的 amix 电平问题、新显卡算子缺失、B站 412、faiss 读不了中文路径 |
Related MCP server: Suno MCP
目录结构
rvc-sing-mcp/
├─ src/
│ ├─ mcp-sing.js MCP server:三个工具与整条链路
│ └─ config.js 配置加载(环境变量 > config.json > 默认值)
├─ python/
│ ├─ cover.py RVC 推理驱动(按自身位置定位,可整目录搬迁)
│ ├─ est_f0.py 估原唱中位基频(决定要不要升调)
│ ├─ convert_model.py safetensors 音色模型 → .pth
│ ├─ cover-timing.py 分阶段耗时诊断(排障用)
│ └─ check-cuda.py torch 是否真的在用 GPU(算力支持比对 + 计时)
├─ scripts/probe.mjs 不用接客户端也能跑一次自检
├─ examples/ MCP 注册示例、起唱点规则示例
├─ docs/ 安装细节、排障手册、设计说明
├─ config.example.json 复制成 config.json 后按需修改
├─ requirements.txt 主依赖(含 cu128 torch)
└─ requirements-lock.txt 一台跑通机器的完整 freeze环境要求
项 | 要求 |
Node.js | ≥ 20 |
Python | 3.10 ~ 3.12(实测 3.12) |
ffmpeg | 任意版本(脚本已兼容老版本混音差异) |
yt-dlp | 可执行文件,或装进 venv |
GPU | 可选。N 卡 4GB+ 翻唱约 10 秒一首;纯 CPU 能跑但慢, |
磁盘 | venv + 依赖约 6 GB,音色模型另算 |
快速开始
git clone https://github.com/fsh404404/rvc-sing-mcp.git
cd rvc-sing-mcp
npm install
cp config.example.json config.json # Windows: copy config.example.json config.json1. 建 Python 环境
python -m venv sing/venv
sing\venv\Scripts\python -m pip install -U pip
sing\venv\Scripts\python -m pip install -r requirements.txt
sing\venv\Scripts\python -m pip install yt-dlp # 若 PATH 里没有 yt-dlp2. 放 RVC 推理代码
cover.py 从 sing/rvc_cli/ 导入 rvc_cli(第三方代码,本仓库不附带):
pip download rvc-cli==1.8.0 --no-deps -d /tmp/rvc
# 解压 wheel,把其中的 rvc/ 与 rvc_cli/ 放进 sing/rvc_cli/或者直接从任意已装好 RVC 的机器复制这个目录(MIT 许可,约 173 MB,其中大头是 rmvpe 模型)。
3. 放模型
sing/ 目录最终长这样:
sing/
├─ venv/ Python 环境
├─ rvc_cli/ 第三方推理代码(下一步获取)
├─ rvc/ RVC 运行时模型资源:contentvec 等(约 279 MB)
├─ model/ 你的音色模型 + rmvpe + 可选 index
└─ work/ 中间产物(可随时删)文件 | 位置 | 说明 |
音色模型 |
| RVC v2 带 f0。safetensors 用 |
音高提取 |
| 首次运行会自动复制到 |
|
| 特征提取器,换音色必需;也可放 |
contentvec 缺失时,RVC 会自己尝试去 HuggingFace 下载;网络不通只会甩一个 URLError,
所以 cover.py 会提前拦截并提示,不会让你对着 502 猜半天。
想让音色更贴,可以再放一个同名 .index(faiss 索引)到 sing/model/,会自动以 index_rate=0.75 启用。
4. 自检
node scripts/probe.mjs输出里每一项 ok:false 就是还缺什么。也可以在 MCP 客户端里调 sing_probe。
5. 接到你的 agent
{
"mcpServers": {
"sing": {
"command": "node",
"args": ["/abs/path/rvc-sing-mcp/src/mcp-sing.js"]
}
}
}然后对 agent 说「唱一首《晴天》」——它会先 sing_probe,再 sing_search 挑版本,最后 sing_cover(mode="ai")。
接进已有机器人框架:四条前提
这套服务只造文件,接进你现成的机器人(QQ / Telegram / Discord…)时有四件事必须对上。对不上时的典型表现是「翻唱跑成功了,但一点声音都没有」。
1. node_modules 不在仓库里
.gitignore 排除了它。clone 后不装依赖就注册 MCP,客户端会直接启动失败:
Error: Cannot find module '@modelcontextprotocol/sdk/...'2. sing/ 环境不进仓库
venv、模型、rvc_cli 加起来约 12 GB,都在 .gitignore 里。已经有跑通环境的机器不用重装,把 SING_DIR 指过去复用即可:
SING_DIR=E:\your\existing\sing重装一份的代价不小——光 torch 的 cu 轮子就 3 GB 起。
3. 它不读你框架的配置文件
本服务只认三样:环境变量 > 自己的 config.json > 内置默认值。宿主框架里的 voice.dir、ffmpeg 路径之类完全不会被继承,必须在注册时用 env 显式传进去:
{
"mcpServers": {
"sing": {
"command": "node",
"args": ["<绝对路径>/rvc-sing-mcp/src/mcp-sing.js"],
"env": {
"SING_DIR": "<sing 目录>",
"SING_OUTPUT_DIR": "<框架的语音库目录>",
"SING_FFMPEG": "<ffmpeg 可执行文件>",
"SING_VOICE_TOOL": "<你框架里发语音的工具名>"
}
}
}
}部分 MCP 客户端默认不透传父进程的环境变量。改了
env却毫无反应时,改用config.json(放仓库根目录,或用SING_CONFIG指到别处)。scripts/probe.mjs就是踩了这个坑之后补出来的。
4. 成品目录必须落在框架的语音库
SING_OUTPUT_DIR 默认是仓库下的 output/。多数机器人在发语音时只认一个白名单目录(语音库),产物放错地方会被「文件不存在 / 不在允许列表」拒掉。把 SING_OUTPUT_DIR 指到那个目录即可;文件名本身已带 sing- 前缀,方便下游识别和限流。
排障对照:
现象 | 真实原因 |
MCP 启动即失败,报 | 没执行 |
|
|
工具返回成功,但目录里没有文件 |
|
文件生成了,机器人却发不出去 | 产物不在框架的语音库 / 白名单内 |
改了 | 客户端没传环境变量,改用 |
工具
sing_probe
无参数。返回每个环节的 ok/detail/path:ytdlp ffmpeg venv torch demucs rvc coverScript f0Script voiceModel contentvec rmvpe rvcRuntime index outputDir startOffsetsFile。
另外返回三个汇总字段,省得 agent 自己拼判断:
aiReady/aiMissing:能不能真翻唱、还缺哪几样(与sing_cover(mode=ai)的前置检查同一份清单);originalReady:能不能出原唱片段(只依赖 yt-dlp + ffmpeg + 可写的输出目录)。
ytdlp / ffmpeg 是真的 spawn 一次判的,不是 existsSync——装在 PATH 里也算就绪。
sing_search
参数 | 类型 | 说明 |
| string | 歌名,可带歌手 |
| int 1~8 | 返回几条,默认 5 |
先走 B 站公开搜索接口(带 buvid cookie,命中 412 会重取一次重试),失败再退 yt-dlp 的 bilisearch / ytsearch。
sing_cover
参数 | 类型 | 说明 |
| string | 歌名,可带歌手 |
| int 5~maxSeconds | 截多长,默认 |
| number | 从第几秒开始截 |
|
| 默认 original |
| int 1~8 | 取搜索结果的第几个 |
| int -24~24 | 变调。建议留空,让脚本按音域自动定 |
返回 JSON:name path title source url requestedSeconds startSeconds startOffsetRule mode pitch sourceMedianF0 pitchNote bytes next。
next 里提示的发送工具名由 voiceToolName 决定,改成你框架里真实的工具名即可。
配置
优先级:环境变量 > config.json > 内置默认值。所有相对路径相对仓库根目录。
键 | 环境变量 | 默认 | 说明 |
|
|
| 工作目录:venv / 模型 / 脚本 / 中间产物 |
|
|
| 成品目录 |
|
|
| 音色模型文件名(相对 |
|
|
| demucs 设备: |
|
|
| 单次最长秒数 |
|
|
| 不传 seconds 时的长度 |
|
|
| 定调目标基频(Hz) |
|
|
| 高于此值视为女声区,不再升调 |
|
|
| 自动定调上限(半音) |
|
|
| 估调引擎: |
|
|
| 估调最多取多少秒人声 |
|
|
| 起唱点规则文件(相对 |
|
|
| 仅用于提示文案 |
|
|
| 同时跑几首。别调大:RVC 很吃显存,两个群同时点歌就是 OOM |
|
|
|
|
|
|
|
|
|
|
| 自动探测 |
|
| PATH | 自动探测 |
|
| venv/PATH | 自动探测 |
起唱点规则示例(examples/start-offsets.example.json):
{
"晴天": { "start": 12, "seconds": 30 },
"海阔天空": 20
}键是歌名子串(不区分大小写),命中即覆盖估算值;以 _ 开头的键会被忽略(可用来写注释)。
接手 7×24 跑之前的两件事
接进机器人之后它就不再是「手动开一次」的工具了,这两条不做,跑一周就出事:
并发:
maxConcurrent默认1。请求来第二个时会排队,不会并行抢显存。 排队发生在 MCP 进程内,客户端那边只是这次调用慢一点,不会报错。磁盘:每次
sing_cover会在sing/work/下留一个 50~150 MB 的目录(下载源 + 分离后的 wav)。 默认只保留最近keepWork=3个任务目录、output/只保留最近keepOutput=20个成品, 清理在每次调用的收尾统一做(成功失败都清)。想自己管就设0关掉。
长任务还有进度通知:客户端传了 progressToken 时,sing_cover 会按
「搜歌 → 下载 → 截取 → 分离 → 转换 → 混音」六步上报 notifications/progress。
CPU 模式下翻唱要几分钟,没有这个很容易被客户端判成卡死。
为什么参数是这些值
这些不是拍脑袋定的,改动前建议先自己测一遍:
hop_length=128:RVC 的非标准 hop 会给输出引入固定延迟。实测hop64相对源 +31.8 ms(咬字明显对不上),hop128−1.6 ms,hop160−1.7 ms。volume_envelope=0.25:比默认 1 稳,高音不再被源音量包络顶到爆音(高音段能量差从 −1.8 dB 收到 −0.7 dB)。目标音域法(
targetF0=250):以一首源中位 183 Hz 的歌为例,机械 +12 会顶到假声、丢帧率最高;把中位搬到 ~247 Hz(+5)丢帧与能量都更自然。混音
amix:normalize=0:amix默认会把总和除以输入路数(−6 dB),成品比源低约 10 dB,前奏听起来像「卡住没声」。新 ffmpeg 用normalize=0,老版本不认该参数时回退到volume=2补回那 6 dB。
定调引擎:为什么默认仍是 pyin
est_f0.py 支持两套引擎,默认 pyin(与改动前完全一致):
引擎 | 说明 |
| librosa.pyin,纯 CPU,不加载任何模型。默认 |
| 复用 |
| 先试 rmvpe,探测不到入口或权重就退回 pyin |
本机实测(RTX 5060 Laptop,四段 50 秒人声、各取前 40 秒):
素材 | pyin | rmvpe | 差 | 耗时 pyin / rmvpe |
男声 A | 165.7 Hz | 165.5 Hz | −0.2 | 5.3 / 4.9 s |
男声 B | 197.0 Hz | 196.5 Hz | −0.5 | 4.8 / 4.5 s |
女声 A | 245.4 Hz | 250.4 Hz | +5.0 | 5.6 / 5.3 s |
女声 B | 285.2 Hz | 291.3 Hz | +6.1 | 5.1 / 4.6 s |
结论:耗时基本持平(rmvpe 快 0.30.7 s,但要加载 181 MB 权重),而 rmvpe 在女声区间系统性偏高 56 Hz。femaleF0Threshold 默认 200 Hz,男声 B 的 197.0 / 196.5 就压在这条线附近。所以默认保持 pyin —— 不拿一个未定性的偏差去换 0.4 秒。
结果里带
ENGINE=,sing_cover返回里是sourceF0Engine;想对比:
SING_F0_ENGINE=rmvpe跑一次、=pyin再跑一次,只看sourceMedianF0与pitch;中位数落在
femaleF0Threshold ±8 Hz时,pitchNote会额外提示「换引擎可能翻转判断」,并写出本次判定的方向;rmvpe 的入口在不同 RVC 包里位置和类名都不一样(rvc-cli 1.8.0 是
rvc_cli/rvc/lib/predictors/RMVPE.py、类名RMVPE0Predictor;并且必须把sing/rvc_cli放进sys.path才能 import 到)。脚本按候选表依次探测,失败原因会带进REASON=。
已知问题
新显卡(RTX 50 系 / sm_120)上「能出声但极慢」、B 站 412、Cannot find module ... loadNapCat.js、模型路径含中文、显存不足等,见 docs/TROUBLESHOOTING.md。
安装细节见 docs/SETUP.md,设计取舍见 docs/ARCHITECTURE.md。
这个仓库不包含
音色模型(版权与体积原因)——请使用你拥有权利的声音,或自建模型。
rvc_cli第三方推理代码(MIT,需自行安装/复制)。任何示例音频。
output/与sing/work/都在.gitignore里。
合规
翻唱涉及音乐作品的著作权与声音的人格权。请只处理你拥有授权的内容(自己演唱的干声、明确允许使用的伴奏),并遵守你所在平台/地区的规则。
用他人声音训练或转换模型可能侵犯人格权,本项目不为这类使用提供便利,也不承担由此产生的责任。
依赖组件:RVC(MIT)、Demucs(MIT)、yt-dlp(Unlicense)、ffmpeg(LGPL/GPL,按你的构建而定)。
License
MIT,见 LICENSE。
Available Tools
3 toolssing_coverA
唱一段歌:联网找歌 → 下载音源 → 截最多 60 秒 → 输出到产物目录,返回文件名(之后用机器人框架的发语音工具发出去)。mode=original 是原唱片段;mode=ai 是用目标音色翻唱(需要本地 RVC 与音色模型就绪,没就绪会明确报缺什么,不会偷偷退回原唱)。mode=ai 时不要自己猜 pitch:留空即可,脚本会按原唱音域自动定调,返回里的 pitchNote 会说明它做了什么。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | original=原唱片段(默认);ai=用目标音色翻唱 | original |
| song | Yes | 歌名,可带歌手 | |
| pitch | No | 变调(半音)。默认留空:脚本按原唱音域自动定调(上限 +12)。只有明确知道原唱比目标音色低一个八度时才手填 | |
| seconds | No | 截多长,最长 60 秒,默认 30 | |
| candidate | No | 搜索结果里取第几个(默认 1;取第 N 个时会把搜索条数相应放宽,可用 sing_search 先看) | |
| startSeconds | No | 从第几秒开始截(默认 0;想抓高潮段可以自己估一个) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does it well: it discloses the side effect (downloading and writing a file to the output directory), the 60-second cap, and critically that ai mode fails loudly with a specific missing-component message rather than silently falling back to original. It also reveals that the script auto-selects pitch and reports it back via `pitchNote`.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the pipeline in a single sentence, then mode semantics, then the pitch warning — a sensible ordering. It is fairly dense with no filler, though the pitch auto-tuning point is partially restated from the schema description rather than fully earning its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description still names the key return values (filename, and pitchNote in ai mode), which is the essential information for chaining to a voice-send tool. It leaves minor gaps such as what happens when no song is found or whether the output file is overwritten, but nothing blocking for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds real guidance by telling the agent not to guess `pitch` and to leave it blank for auto-tuning, rather than leaving the agent to interpret the -24..24 range itself. It also reinforces mode semantics beyond the enum labels, though it adds nothing about `candidate`, `startSeconds`, or `seconds` beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and artifact (sing a clip) and lays out the concrete pipeline: search online → download source → clip ≤60s → write to output dir → return filename. The two modes are defined distinctly, so an agent can tell exactly what the tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions for each mode (original = source clip, ai = RVC voice conversion requiring a ready local model) and names sing_search as the way to preview candidates before setting `candidate`. It also tells the agent the follow-up step (send via the bot framework's voice tool). It does not mention sing_probe or when this tool is the wrong choice, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sing_probeA
检查唱歌链路是否就绪:yt-dlp / ffmpeg / torch(CUDA) / demucs / RVC 工程 / 音色模型 / contentvec / 输出目录可写。返回里 aiReady 表示能不能真翻唱,aiMissing 是还缺什么,originalReady 表示能不能出原唱片段。要确认「现在能不能唱」时先调这个。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that this is a diagnostic probe over external binaries, GPU availability, model assets, and directory writability, which tells the agent it may be slow and environment-dependent. It omits an explicit statement that it is read-only / side-effect-free, which would have closed the gap fully.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the check list, then explains the three return fields, then ends with the usage cue — a logical order with no filler. The component enumeration is long but each item is a distinct thing an agent may need to report back, so it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return values, and it does: aiReady, aiMissing, and originalReady are each defined along with their meaning for whether a cover or original segment is possible. Combined with the enumerated checks, an agent can call it and interpret the result without anything else.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4; the description correctly spends no words on input arguments and instead allocates them to output interpretation, which is the right trade for a no-arg tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('检查唱歌链路是否就绪') and enumerates exactly which components are probed: yt-dlp, ffmpeg, torch/CUDA, demucs, RVC project, voice model, contentvec, output-dir writability. That makes it clearly separable from siblings sing_search and sing_cover, which perform the actual singing work rather than the pre-flight check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to call it first when confirming 'can I sing right now', which anchors its place relative to sing_cover. It stops short of naming the siblings or stating when not to call it (e.g. after a known-good run), so it is clear but not fully routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sing_searchA
在线搜歌(B站优先,YouTube 兜底),返回候选的标题/时长/播放量/链接(含上传者)。挑版本时优先选播放量高、时长 1.5~8 分钟的整曲;标着「切片/片段/翻唱/live」的往往是几十秒的短视频,拿去翻唱会直接踩到副歌中间。不确定是哪一版时,先用它挑一首再调 sing_cover。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 返回几条,默认 5 | |
| query | Yes | 歌名,可带歌手(如「恋爱循环 花泽香菜」) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and mostly succeeds: it discloses the fallback behavior between two sources, the shape of returned candidates, and a genuine operational trap (short clips that start mid-chorus). It does not state failure behavior when nothing is found, latency, or any limits, though these are minor for a read-only search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core capability and source strategy are front-loaded in the first clause, followed by return fields and selection advice. The clip warning is slightly verbose but earns its place by preventing a real failure mode; only minor tightening is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter search with no output schema and no annotations, the description covers what is returned, how to choose among candidates, and what to do next. It omits empty-result behavior and any hint about sing_probe, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both query and limit are already documented in the schema. The description adds no format or constraint detail beyond the schema's own example, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a concrete verb+resource (在线搜歌) and immediately narrows the scope with its source strategy (B站优先, YouTube 兜底) and the exact fields returned (标题/时长/播放量/链接/上传者). An agent knows exactly what it gets back and can distinguish it from sing_cover, which is positioned as the downstream step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: when unsure which version, call this first, then call sing_cover. It also supplies concrete selection heuristics (prefer high view count, 1.5–8 minute full tracks; avoid 切片/片段/翻唱/live clips). The one gap is sibling sing_probe — the description never says when that tool is the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
sing_cover - First observed
sing_probe - First observed
sing_search
TDQS
Scored across 3 tools
Each tool maps to a distinct stage of the pipeline: readiness check (sing_probe), online candidate discovery (sing_search), and audio rendering (sing_cover). The only blur is that sing_cover also performs an internal search+download, so an agent may be unsure whether searching first is optional, but the descriptions explicitly prescribe search-then-cover when unsure.
All three tools use the same 'sing_' prefix plus a short verb/noun (probe, search, cover), all lowercase snake_case. The pattern is immediately recognizable and predictable.
Three tools is lean for the domain but each earns its place as a step in a single workflow (diagnose, select, render). It sits at the low edge of the comfortable range, with no filler tools.
The core lifecycle is covered: check readiness, find a song, produce a 60s clip in original or AI-voice mode, with explicit failure reporting. Minor gaps exist — no way to list/manage previously generated artifacts or to render a specific candidate from search results by handle — but agents can work around them with another search query.
Maintenance
Related MCP Connectors
Generate full songs with vocals, instrumentals and sound effects from text. One server for Suno, Google Lyria, Mureka, MiniMax, ACE-Step, YuE and ElevenLabs. Your agent can quote the credit cost before generating, start a song, wait for it to finish and return download links. Sign in with OAuth; optional daily credit caps; retries never charge twice.
Free stem, vocal, noise, reverb and format tools. Train RVC voices; convert vocals and whole songs.
- VocunoOAuthcom.vocuno
AI music studio: song generation with vocals, covers, stems, voice conversion, mastering, editing.
Make songs, change one part's lyrics in the same voice, and reimagine songs in new styles.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables LLMs to search, download, and extract information from YouTube music videos, converting them to high-quality MP3 files.GPL 3.0
- AlicenseBqualityDmaintenanceEnables AI music generation through Suno, allowing users to create songs with custom lyrics or AI-generated content, wait for completion, and download MP3 files.7ISC
- AlicenseBqualityDmaintenanceEnables coding agents to compose, tune, render, mix, and audit native VOCALOID3/4 projects from scratch, acting as a production bridge between intent and finished song.2212MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to generate, inspect, and micro-tune OpenUtau .ustx project files and DiffSinger neural expression curves.3MIT