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 融合播放列表”
- “将我的健身播放列表中的所有电子音乐复制到我的工作播放列表中”
工具
读取操作
- 搜索Spotify
- 描述:在 Spotify 上搜索曲目、专辑、艺术家或播放列表
- 参数:
query
(字符串):搜索词type
(字符串):要搜索的项目类型(曲目、专辑、艺术家、播放列表)limit
(数字,可选):返回的最大结果数(10-50)
- 返回:匹配商品的列表,包括其 ID、名称和其他详细信息
- 例如:
searchSpotify("bohemian rhapsody", "track", 20)
- 获取正在播放的内容
- 描述:获取有关 Spotify 上当前播放曲目的信息
- 参数:无
- 返回:包含曲目名称、艺术家、专辑、播放进度、时长和播放状态的对象
- 例如:
getNowPlaying()
- 获取我的播放列表
- 描述:获取当前用户在 Spotify 上的播放列表
- 参数:
limit
(数字,可选):返回的播放列表的最大数量(默认值:20)offset
(数字,可选):要返回的第一个播放列表的索引(默认值:0)
- 返回:播放列表数组,包含其 ID、名称、曲目数和公开状态
- 例如:
getMyPlaylists(10, 0)
- 获取播放列表曲目
- 描述:获取特定 Spotify 播放列表中的曲目列表
- 参数:
playlistId
(字符串):播放列表的 Spotify IDlimit
(数字,可选):返回的最大曲目数(默认值:100)offset
(数字,可选):要返回的第一个轨道的索引(默认值:0)
- 返回:曲目数组,包含曲目 ID、名称、艺术家、专辑、时长和添加日期
- 例如:
getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")
播放/创建操作
- 播放音乐
- 描述:开始在 Spotify 上播放曲目、专辑、艺术家或播放列表
- 参数:
uri
(字符串,可选):要播放的项目的 Spotify URI(覆盖类型和 ID)type
(字符串,可选):要播放的项目类型(曲目、专辑、艺术家、播放列表)id
(字符串,可选):要播放的项目的 Spotify IDdeviceId
(字符串,可选):要播放的设备的 ID
- 返回:成功状态
- 例如:
playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
- 替代方案:
playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
- 暂停播放
- 描述:暂停 Spotify 上当前播放的曲目
- 参数:
deviceId
(字符串,可选):要暂停的设备的 ID
- 返回:成功状态
- 例如:
pausePlayback()
- 跳过下一个
- 描述:跳至当前播放队列中的下一曲目
- 参数:
deviceId
(字符串,可选):设备的 ID
- 返回:成功状态
- 例如:
skipToNext()
- 跳到上一个
- 描述:跳至当前播放队列中的上一首曲目
- 参数:
deviceId
(字符串,可选):设备的 ID
- 返回:成功状态
- 例如:
skipToPrevious()
- 创建播放列表
- 描述:在 Spotify 上创建新的播放列表
- 参数:
name
(字符串):新播放列表的名称description
(字符串,可选):播放列表的描述public
(布尔值,可选):播放列表是否应该公开(默认值:false)
- 返回:带有新播放列表的 ID 和 URL 的对象
- 例如:
createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })
- 将曲目添加到播放列表
- 描述:将曲目添加到现有的 Spotify 播放列表
- 参数:
playlistId
(字符串):播放列表的 IDtrackUris
(数组):要添加的轨道 URI 或 ID 数组position
(数字,可选):插入曲目的位置
- 返回:成功状态和快照ID
- 例如:
addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })
- 添加到队列
- 描述:将曲目、专辑、艺术家或播放列表添加到当前播放队列
- 参数:
uri
(字符串,可选):要添加到队列的项目的 Spotify URI(覆盖类型和 ID)type
(字符串,可选):要排队的项目类型(曲目、专辑、艺术家、播放列表)id
(字符串,可选):要排队的项目的 Spotify IDdeviceId
(字符串,可选):要排队的设备的 ID
- 返回:成功状态
- 例如:
addToQueue({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
- 替代方案:
addToQueue({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
设置
先决条件
- Node.js v16+
- Spotify Premium 帐户
- 注册的 Spotify 开发者应用程序
安装
Copy
创建 Spotify 开发者应用程序
- 前往Spotify 开发者仪表板
- 使用您的 Spotify 帐户登录
- 点击“创建应用程序”按钮
- 填写应用名称和描述
- 接受服务条款并点击“创建”
- 在新应用的信息中心中,您将看到您的客户端 ID
- 点击“显示客户端密钥”来显示您的客户端密钥
- 单击“编辑设置”并添加重定向 URI(例如,
http://localhost:8888/callback
) - 保存更改
Spotify API 配置
在项目根目录中创建一个spotify-config.json
文件(您可以复制并修改提供的示例):
Copy
然后使用您的凭据编辑文件:
Copy
身份验证过程
Spotify API 使用 OAuth 2.0 进行身份验证。请按照以下步骤验证您的应用程序:
- 运行身份验证脚本:
Copy
- 该脚本将生成一个授权 URL。在您的 Web 浏览器中打开此 URL。
- 系统将提示您登录 Spotify 并授权您的应用程序。
- 授权后,Spotify 将使用 URL 中的代码参数将您重定向到您指定的重定向 URI。
- 身份验证脚本将自动将此代码交换为访问和刷新令牌。
- 这些令牌将保存到您的
spotify-config.json
文件中,该文件现在看起来像这样:
Copy
- 服务器将在需要时使用刷新令牌自动刷新访问令牌。
与 Claude Desktop 和 Cursor 集成
要将您的 MCP 服务器与 Claude Desktop 一起使用,请将其添加到您的 Claude 配置中:
Copy
对于“光标”,请转到Cursor Settings
(Command + Shift + J)中的“MCP”选项卡。使用以下命令添加服务器:
Copy