Spotify MCP Server

by marcelmarais
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Enables control of Spotify playback and playlist management, including searching for tracks/albums/artists, playing music, creating playlists, adding tracks to playlists, and controlling playback (pause, skip, etc.).

轻量级模型上下文协议 (MCP)服务器,使 Cursor 和 Claude 等 AI 助手能够控制 Spotify 播放和管理播放列表。

交互示例

  • “播放猫王的第一首歌曲”
  • “创建 Taylor Swift / Slipknot 融合播放列表”
  • “将我的健身播放列表中的所有电子音乐复制到我的工作播放列表中”

工具

读取操作

  1. 搜索Spotify
    • 描述:在 Spotify 上搜索曲目、专辑、艺术家或播放列表
    • 参数
      • query (字符串):搜索词
      • type (字符串):要搜索的项目类型(曲目、专辑、艺术家、播放列表)
      • limit (数字,可选):返回的最大结果数(10-50)
    • 返回:匹配商品的列表,包括其 ID、名称和其他详细信息
    • 例如searchSpotify("bohemian rhapsody", "track", 20)
  2. 获取正在播放的内容
    • 描述:获取有关 Spotify 上当前播放曲目的信息
    • 参数:无
    • 返回:包含曲目名称、艺术家、专辑、播放进度、时长和播放状态的对象
    • 例如getNowPlaying()
  3. 获取我的播放列表
    • 描述:获取当前用户在 Spotify 上的播放列表
    • 参数
      • limit (数字,可选):返回的播放列表的最大数量(默认值:20)
      • offset (数字,可选):要返回的第一个播放列表的索引(默认值:0)
    • 返回:播放列表数组,包含其 ID、名称、曲目数和公开状态
    • 例如getMyPlaylists(10, 0)
  4. 获取播放列表曲目
    • 描述:获取特定 Spotify 播放列表中的曲目列表
    • 参数
      • playlistId (字符串):播放列表的 Spotify ID
      • limit (数字,可选):返回的最大曲目数(默认值:100)
      • offset (数字,可选):要返回的第一个轨道的索引(默认值:0)
    • 返回:曲目数组,包含曲目 ID、名称、艺术家、专辑、时长和添加日期
    • 例如getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")

播放/创建操作

  1. 播放音乐
    • 描述:开始在 Spotify 上播放曲目、专辑、艺术家或播放列表
    • 参数
      • uri (字符串,可选):要播放的项目的 Spotify URI(覆盖类型和 ID)
      • type (字符串,可选):要播放的项目类型(曲目、专辑、艺术家、播放列表)
      • id (字符串,可选):要播放的项目的 Spotify ID
      • deviceId (字符串,可选):要播放的设备的 ID
    • 返回:成功状态
    • 例如playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
    • 替代方案playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
  2. 暂停播放
    • 描述:暂停 Spotify 上当前播放的曲目
    • 参数
      • deviceId (字符串,可选):要暂停的设备的 ID
    • 返回:成功状态
    • 例如pausePlayback()
  3. 跳过下一个
    • 描述:跳至当前播放队列中的下一曲目
    • 参数
      • deviceId (字符串,可选):设备的 ID
    • 返回:成功状态
    • 例如skipToNext()
  4. 跳到上一个
    • 描述:跳至当前播放队列中的上一首曲目
    • 参数
      • deviceId (字符串,可选):设备的 ID
    • 返回:成功状态
    • 例如skipToPrevious()
  5. 创建播放列表
    • 描述:在 Spotify 上创建新的播放列表
    • 参数
      • name (字符串):新播放列表的名称
      • description (字符串,可选):播放列表的描述
      • public (布尔值,可选):播放列表是否应该公开(默认值:false)
    • 返回:带有新播放列表的 ID 和 URL 的对象
    • 例如createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })
  6. 将曲目添加到播放列表
    • 描述:将曲目添加到现有的 Spotify 播放列表
    • 参数
      • playlistId (字符串):播放列表的 ID
      • trackUris (数组):要添加的轨道 URI 或 ID 数组
      • position (数字,可选):插入曲目的位置
    • 返回:成功状态和快照ID
    • 例如addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })
  7. 添加到队列
    • 描述:将曲目、专辑、艺术家或播放列表添加到当前播放队列
      • 参数
      • uri (字符串,可选):要添加到队列的项目的 Spotify URI(覆盖类型和 ID)
      • type (字符串,可选):要排队的项目类型(曲目、专辑、艺术家、播放列表)
      • id (字符串,可选):要排队的项目的 Spotify ID
      • deviceId (字符串,可选):要排队的设备的 ID
    • 返回:成功状态
    • 例如addToQueue({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
    • 替代方案addToQueue({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })

设置

先决条件

  • Node.js v16+
  • Spotify Premium 帐户
  • 注册的 Spotify 开发者应用程序

安装

git clone https://github.com/marcelmarais/spotify-mcp-server.git cd spotify-mcp-server npm install npm run build

创建 Spotify 开发者应用程序

  1. 前往Spotify 开发者仪表板
  2. 使用您的 Spotify 帐户登录
  3. 点击“创建应用程序”按钮
  4. 填写应用名称和描述
  5. 接受服务条款并点击“创建”
  6. 在新应用的信息中心中,您将看到您的客户端 ID
  7. 点击“显示客户端密钥”来显示您的客户端密钥
  8. 单击“编辑设置”并添加重定向 URI(例如, http://localhost:8888/callback
  9. 保存更改

Spotify API 配置

在项目根目录中创建一个spotify-config.json文件(您可以复制并修改提供的示例):

# Copy the example config file cp spotify-config.example.json spotify-config.json

然后使用您的凭据编辑文件:

{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "redirectUri": "http://localhost:8888/callback" }

身份验证过程

Spotify API 使用 OAuth 2.0 进行身份验证。请按照以下步骤验证您的应用程序:

  1. 运行身份验证脚本:
npm run auth
  1. 该脚本将生成一个授权 URL。在您的 Web 浏览器中打开此 URL。
  2. 系统将提示您登录 Spotify 并授权您的应用程序。
  3. 授权后,Spotify 将使用 URL 中的代码参数将您重定向到您指定的重定向 URI。
  4. 身份验证脚本将自动将此代码交换为访问和刷新令牌。
  5. 这些令牌将保存到您的spotify-config.json文件中,该文件现在看起来像这样:
{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "redirectUri": "http://localhost:8888/callback", "accessToken": "BQAi9Pn...kKQ", "refreshToken": "AQDQcj...7w", "expiresAt": 1677889354671 }
  1. 服务器将在需要时使用刷新令牌自动刷新访问令牌。

与 Claude Desktop 和 Cursor 集成

要将您的 MCP 服务器与 Claude Desktop 一起使用,请将其添加到您的 Claude 配置中:

{ "mcpServers": { "spotify": { "command": "node", "args": ["spotify-mcp-server/build/index.js"] } } }

对于“光标”,请转到Cursor Settings (Command + Shift + J)中的“MCP”选项卡。使用以下命令添加服务器:

node path/to/spotify-mcp-server/build/index.js

You must be authenticated.

A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

轻量级模型上下文协议服务器,使 Cursor 和 Claude 等 AI 助手能够控制 Spotify 播放和管理播放列表。

  1. Tools
    1. Read Operations
    2. Play / Create Operations
  2. Setup
    1. Prerequisites
    2. Installation
    3. Creating a Spotify Developer Application
    4. Spotify API Configuration
    5. Authentication Process
  3. Integrating with Claude Desktop and Cursor
    ID: wu15pi580l