Suno 音乐生成器 MCP 服务器
这是一个基于 Model Context Protocol (MCP) 的服务器,它允许您通过调用工具来使用 Suno API 生成音乐。
✨ 特性
- 通过 MCP 与 Suno API 交互。
- 支持自定义模式(提供歌词、风格、标题)和灵感模式(提供描述)。
- 支持继续生成已有的歌曲片段。
- 自动轮询任务状态并在完成后返回音频 URL。
- 可配置的 API Key 和模型版本。
🚀 开始使用
📋 先决条件
- (建议使用 LTS 版本)
- (通常随 Node.js 一起安装) 或 yarn
⚙️ 安装
- 克隆此仓库 (如果您还没有的话):
git clone
cd - 安装项目依赖:
npm install
# 或者使用 yarn
# yarn install🔑 配置
- 在项目根目录下创建一个名为
config.env的文件。 - 在该文件中添加您的 Suno API Key:
SunoKey=sk_YOUR_SUNO_API_KEY_HERE将 sk_YOUR_SUNO_API_KEY_HERE 替换为您真实的 Suno API Key。
▶️ 运行 MCP 服务器
要启动 MCP 服务器,请在项目根目录下运行:
npm start
# 或者,如果您在 package.json 中定义了 "dev" 脚本并希望使用 ts-node-dev 进行热重载开发:
# npm run dev
# 或者直接运行编译后的 JavaScript 文件:
# node build/index.js服务器启动后,它将通过标准输入/输出 (stdio) 与兼容的 MCP 客户端进行通信。
🔌 在 MCP 客户端中部署
要在您的 MCP 客户端(例如一个支持 MCP 的 AI 助手或开发工具)中使用此服务器,您通常需要在客户端的配置文件中添加一个服务器条目。以下是一个示例配置,请根据您的客户端具体要求进行调整:
{
"YOUR_UNIQUE_SERVER_ID": { // 替换为您客户端生成的唯一 ID
"name": "Suno-MCP", // 您为此服务器指定的名称
"type": "stdio", // 通信类型,对于此服务器是 "stdio"
"description": "让AI唱歌", // 服务器的简短描述
"isActive": true, // 是否激活此服务器
"command": "node", // 用于启动服务器的命令
"args": [
"
/MCP-Suno/build/index.js" // 指向编译后的 index.js 文件的绝对或相对路径
],
"env": {
// 环境变量可以传递给服务器进程
// 如果您在此处设置了 SunoKey,它可能会覆盖 config.env 中的值
// "SunoKey": "sk_YOUR_SUNO_API_KEY_FROM_CLIENT_CONFIG"
},
"cwd": "
/MCP-Suno" // 可选:设置服务器的工作目录,通常是项目根目录
}
}重要提示:
YOUR_UNIQUE_SERVER_ID: 这通常由您的 MCP 客户端自动生成或要求您提供一个唯一的标识符。command: 对于 Node.js 项目,通常是node。args: 数组中的第一个参数应该是到编译后的build/index.js文件的路径。请确保将 `
` 替换为您的实际项目路径。
cwd: 设置工作目录为项目根目录(包含build文件夹和config.env的目录)通常是个好主意,以确保相对路径(如../config.env相对于build/index.js)能正确解析。
请查阅您的 MCP 客户端文档以获取有关如何添加和配置 MCP 服务器的详细说明。
🛠️ 工具说明
此 MCP 服务器提供以下工具:
generate_music_suno
使用 Suno API 生成歌曲。
描述:
Generates a song using the Suno API. Provide lyrics, style, and title for custom mode, or a description for inspiration mode. Returns the audio URL upon completion. Polling for results may take a few minutes.
When returning an audio URL, please use the following HTML format for user convenience:点击这里下载喵!
输入参数 (inputSchema):
prompt(string): 歌词内容。自定义模式下必需。示例:'[Verse 1]\nUnder the starry sky...'tags(string): 音乐风格标签,逗号分隔。自定义模式下必需。示例:'acoustic, folk, pop'title(string): 歌曲标题。自定义模式下必需。示例:'Starry Night Serenade'mv(string, 可选): 模型版本。可选值:"chirp-v3-0","chirp-v3-5","chirp-v4"。默认为'chirp-v4'。make_instrumental(boolean, 可选): 是否生成纯音乐。默认为false。gpt_description_prompt(string, 可选): 灵感模式的描述。如果提供此参数,则prompt,tags, 和title不是用户严格要求的。示例:'A cheerful upbeat song about a sunny day.'task_id(string, 可选): 要继续的先前歌曲的任务 ID。如果提供,则continue_at和continue_clip_id也需要。continue_at(number, 可选): 从歌曲的哪个时间点(秒)开始继续。需要task_id和continue_clip_id。continue_clip_id(string, 可选): 要继续的歌曲片段的剪辑 ID。需要task_id和continue_at。
验证逻辑:
- 如果未提供
gpt_description_prompt,则prompt,tags, 和title都是必需的。 - 如果提供了
task_id,则continue_at和continue_clip_id也必须提供。
输出: 成功时,返回一个包含音频 URL 的文本内容。如果发生错误,将返回错误信息。
💡 示例 MCP 请求
生成自定义歌曲:
{
"type": "call_tool",
"params": {
"name": "generate_music_suno",
"arguments": {
"prompt": "[Verse 1]\nIn the digital realm, where code streams flow,\nA kitty coder, with a vibrant glow.\n[Chorus]\nMeow, meow, MCP, oh so grand,\nGenerating tunes across the land!",
"tags": "electronic, upbeat, synthwave",
"title": "MCP Kitty's Anthem",
"mv": "chirp-v4"
}
}
}使用灵感模式生成歌曲:
{
"type": "call_tool",
"params": {
"name": "generate_music_suno",
"arguments": {
"gpt_description_prompt": "A lofi chill beat for late night coding sessions",
"mv": "chirp-v3-5"
}
}
}继续生成歌曲:
{
"type": "call_tool",
"params": {
"name": "generate_music_suno",
"arguments": {
"task_id": "your_previous_task_id_here",
"continue_at": 60,
"continue_clip_id": "your_previous_clip_id_here",
"mv": "chirp-v4"
// prompt, tags, title might be needed by Suno API for continuation,
// or it might infer from the original task.
// Check Suno API documentation for specifics on continuation.
}
}
}🤝 贡献
欢迎提交 Pull Request 或 Issue 来改进此项目!
📄 许可证
(根据您的项目选择一个许可证,例如 MIT, Apache 2.0 等) 例如: This project is licensed under the MIT License.
