使用说明

项目简介

Spotify MCP服务器是一个基于Model Context Protocol (MCP) 构建的应用后端,它将 Spotify Web API 的功能封装成一系列工具,通过标准的 MCP 协议与客户端进行交互。该服务器允许用户通过 MCP 客户端程序,以编程方式搜索 Spotify 音乐、控制播放以及管理个人播放列表。

主要功能点

  • 音乐搜索: 通过关键词在 Spotify 上搜索歌曲。
  • 播放控制: 获取当前播放状态、播放指定歌曲、暂停播放。
  • 播放列表管理: 获取用户的 Spotify 播放列表。
  • 标准化接口: 使用 JSON-RPC over stdio 与 MCP 客户端通信,遵循 MCP 协议规范。
  • 易于集成: 为 LLM 应用提供即插即用的 Spotify 上下文服务。

安装步骤

  1. 克隆仓库

    git clone <repository-url>
    cd spotify-mcp

    请将 '<repository-url>' 替换为仓库的实际 URL。

  2. 安装依赖 确保已安装 Node.js (v16 或更高版本) 和 npm。在项目根目录下运行:

    npm install
  3. 配置环境变量 在项目根目录下创建 '.env' 文件,并填入你的 Spotify 开发者应用凭据:

    SPOTIFY_CLIENT_ID=your_spotify_client_id
    SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
    SPOTIFY_REDIRECT_URI=http://localhost:8888/callback

    请替换 'your_spotify_client_id' 和 'your_spotify_client_secret' 为你在 Spotify Developer Dashboard 创建的应用凭据。'SPOTIFY_REDIRECT_URI' 必须与你在 Spotify 应用设置中配置的重定向 URI 一致。

  4. 构建项目 运行构建命令:

    npm run build
  5. 启动服务器 运行启动命令:

    npm start

    服务器启动后,会自动打开浏览器进行 Spotify OAuth 认证。完成认证后,服务器将开始监听 stdio 输入输出。

服务器配置

MCP 客户端需要配置以下 JSON 以连接到 Spotify MCP 服务器:

{
  "serverName": "spotify-mcp-server",
  "command": "node",
  "args": ["index.js"],
  "transport": "stdio"
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
  • 'command': 启动服务器的命令,这里使用 'node' 命令来运行 JavaScript 代码。
  • 'args': 传递给 'node' 命令的参数,'index.js' 是服务器的入口文件。
  • 'transport': 指定 MCP 客户端与服务器通信的传输协议,这里使用 'stdio' 标准输入输出。

将以上 JSON 配置添加到你的 MCP 客户端配置中,即可连接到 Spotify MCP 服务器。

基本使用方法

  1. 连接服务器: 在 MCP 客户端中配置并连接到 Spotify MCP 服务器。

  2. 列出工具: 客户端可以发送 'ListToolsRequest' 请求获取服务器提供的工具列表。

  3. 调用工具: 客户端可以发送 'CallToolRequest' 请求调用具体的 Spotify 工具,例如:

    • 搜索歌曲:

      {
        "name": "search_tracks",
        "arguments": {"query": "周杰伦"}
      }
    • 播放歌曲:

      {
        "name": "play_track",
        "arguments": {"uri": "spotify:track:xxxxxxxxx"}
      }
    • 获取播放状态:

      {
        "name": "get_playback_state",
        "arguments": {}
      }
    • 暂停播放:

      {
        "name": "pause_playback",
        "arguments": {}
      }
    • 获取用户播放列表:

      {
        "name": "get_user_playlists",
        "arguments": {}
      }

    客户端将通过 stdio 发送 JSON-RPC 请求给服务器,服务器执行相应的 Spotify API 操作后,将结果以 JSON-RPC 响应的形式返回给客户端。

请参考仓库 'README.md' 中 Tools 部分了解每个工具的详细输入输出参数和示例。

信息

分类

网页与API