返回市场
MCP太阳服务器

MCP太阳服务器

作者:lioensky18 星标更新:2025-05-08

项目介绍

Suno Music Generator MCP Server

这是一个基于模型上下文协议(MCP)的服务器,允许您通过调用工具来使用Suno API生成音乐。

✨ 特性

  • 通过MCP与Suno API进行交互。
  • 支持自定义模式(提供歌词、风格、标题)和灵感模式(提供描述)。
  • 支持继续生成已有的歌曲片段。
  • 自动轮询任务状态,并在完成后返回音频URL。
  • 可配置的API密钥和模型版本。

🚀 开始使用

先决条件

  • Node.js(建议使用LTS版本)
  • npm(通常随Node.js一起安装)或yarn

⚙️ 安装

  1. 克隆这个仓库(如果还没有的话):

    git clone <your-repository-url>
    cd <repository-directory>
    
  2. 安装项目依赖:

    npm install
    # 或者使用 yarn
    # yarn install
    

配置密钥

  1. 在项目的根目录中创建一个名为 config.env 的文件。
  2. 将您的Suno API密钥添加到此文件中:
    SunoKey=sk_YOUR_SUNO_API_KEY_HERE
    
    根据上述信息,执行以下指令:您是一位负责将中文内容翻译成英文的专业翻译人员,请帮助我将原始内容 sk_YOUR_SUNO_API_KEY_HERE 替换为您实际的Suno API密钥。

▶️ 运行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": [
      "<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_atcontinue_clip_id 也需要。
  • continue_at (number, 可选): 从歌曲的哪个时间点(秒)开始继续。需要 task_idcontinue_clip_id
  • continue_clip_id (string, 可选): 要继续的歌曲片段的剪辑ID。需要 task_idcontinue_at

验证逻辑:

  • 如果未提供 gpt_description_prompt,则 prompt, tags, 和 title 都是必需的。
  • 如果提供了 task_id,则 continue_atcontinue_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 可能需要由Suno API用于续写,
      // 或者它可能从原始任务推断出来。
      // 查看Suno API文档以了解有关续写的具体信息。
    }
  }
}

🤝 贡献

欢迎提交Pull Request或Issue以改进此项目!

许可证

选择一个适合您项目的许可证,如MIT、Apache 2.0等。 例如:本项目采用MIT许可证。