这是一个基于模型上下文协议(MCP)的服务器,允许您通过调用工具来使用Suno API生成音乐。
克隆这个仓库(如果还没有的话):
git clone <your-repository-url>
cd <repository-directory>
安装项目依赖:
npm install
# 或者使用 yarn
# yarn install
config.env 的文件。SunoKey=sk_YOUR_SUNO_API_KEY_HERE
根据上述信息,执行以下指令:您是一位负责将中文内容翻译成英文的专业翻译人员,请帮助我将原始内容 sk_YOUR_SUNO_API_KEY_HERE 替换为您实际的Suno API密钥。要启动MCP服务器,在项目根目录下运行以下命令:
npm start
# 或者,如果您在 package.json 中定义了 "dev" 脚本并希望使用 ts-node-dev 进行热重载开发:
# npm run dev
# 或者直接运行编译后的 JavaScript 文件:
# node build/index.js
服务器启动后,它将通过标准输入/输出(stdio)与兼容的MCP客户端进行通信。
要在您的MCP客户端(如支持MCP的AI助手或开发工具)中使用此服务器,通常需要在客户端的配置文件中添加一个服务器条目。以下是一个示例配置;请根据您的客户端的具体需求进行调整:
{
"YOUR_UNIQUE_SERVER_ID": { // 替换为您客户端生成的唯一ID
"name": "Suno-MCP", // 您为此服务器指定的名称
"type": "stdio", // 通信类型,对于此服务器是 "stdio"
"description": "让AI唱歌", // 服务器的简短描述
"isActive": true, // 是否激活此服务器
"command": "node", // 用于启动服务器的命令
"args": [
"<path-to-your-project>/MCP-Suno/build/index.js" // 指向编译后的 index.js 文件的绝对或相对路径
],
"env": {
// 环境变量可以传递给服务器进程
// 如果您在此处设置了 SunoKey,它可能会覆盖 config.env 中的值
// "SunoKey": "sk_YOUR_SUNO_API_KEY_FROM_CLIENT_CONFIG"
},
"cwd": "<path-to-your-project>/MCP-Suno" // 可选:设置服务器的工作目录,通常是项目根目录
}
}
重要提示:
YOUR_UNIQUE_SERVER_ID**这通常是您的MCP客户端自动生成的,或者需要您提供一个唯一的标识符。command**对于Node.js项目,通常是 node。请帮助我翻译原始内容。args**数组中的第一个参数应该是编译后的 build/index.js 文件路径。请确保将 <path-to-your-project> 替换为您实际的项目路径。env**您可以在这里设置环境变量。服务器脚本(例如 index.ts)会尝试从项目根目录的 config.env 文件加载 SunoKey。如果客户端配置中包含 env 并且也设置了 SunoKey,其行为(是否覆盖)可能取决于Node.js处理环境变量和 dotenv 包配置的优先级。为了确保 SunoKey 正确加载,建议主要通过项目根目录下的 config.env 文件进行配置,如“🔑 配置”部分所述。cwd**设置工作目录为项目根目录(包含 build 文件夹和 config.env)。通常,拥有这样一个目录以确保相对路径(例如 ../config.env 相对于 build/index.js)能够被正确解析是个好主意。请参阅您的MCP客户端文档以获取详细的添加和配置MCP服务器的说明。
此MCP服务器提供以下工具:
generate_music_suno使用Suno API生成一首歌曲。提供歌词、风格和标题以供自定义模式使用,或提供描述以供灵感模式使用。完成时返回音频URL。结果轮询可能需要几分钟。
当返回音频URL时,请使用以下HTML格式以便于用户操作:
<audio controls>
<source src="YOUR_AUDIO_URL_HERE" type="audio/mpeg">
</audio>
<br>
<a href="YOUR_AUDIO_URL_HERE" download="SONG_TITLE.mp3">
点击这里下载喵!
</a>
输入参数 (inputSchema):
prompt (string): 歌词内容。自定义模式下必需。示例: '[Verse 1]\nUnder the starry sky...'tags (string): 音乐风格标签,逗号分隔。自定义模式下必需。示例: 'acoustic, folk, pop'title (string): 歌曲标题。自定义模式下必需。示例: 'Starry Night Serenade'mv (string, 可选): 模型版本。可选值: "chirp-v3-0", "ch- 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的文本内容。如果发生错误,将返回错误信息。
生成自定义歌曲:
{
"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 可能需要由Suno API用于续写,
// 或者它可能从原始任务推断出来。
// 查看Suno API文档以了解有关续写的具体信息。
}
}
}
欢迎提交Pull Request或Issue以改进此项目!
选择一个适合您项目的许可证,如MIT、Apache 2.0等。 例如:本项目采用MIT许可证。