Spotify MCP Server
一个轻量级的模型上下文协议服务器,使像 Cursor 和 Claude 这样的 AI 助手能够控制 Spotify 播放和管理播放列表。
Tools
searchSpotify
Search for tracks, albums, artists, or playlists on Spotify
getNowPlaying
Get information about the currently playing track on Spotify
getMyPlaylists
Get a list of the current user's playlists on Spotify
getPlaylistTracks
Get a list of tracks in a Spotify playlist
playMusic
Start playing a Spotify track, album, artist, or playlist
pausePlayback
Pause Spotify playback on the active device
skipToNext
Skip to the next track in the current Spotify playback queue
skipToPrevious
Skip to the previous track in the current Spotify playback queue
createPlaylist
Create a new playlist on Spotify
addTracksToPlaylist
Add tracks to a Spotify playlist
resumePlayback
Resume Spotify playback on the active device
addToQueue
Adds a track, album, artist or playlist to the playback queue
README
<div align="center" style="display: flex; align-items: center; justify-content: center; gap: 10px;"> <img src="https://upload.wikimedia.org/wikipedia/commons/8/84/Spotify_icon.svg" width="30" height="30"> <h1>Spotify MCP 服务器</h1> </div>
一个轻量级的 模型上下文协议 (MCP) 服务器,使 AI 助手(如 Cursor 和 Claude)能够控制 Spotify 播放并管理播放列表。
<details> <summary>目录</summary>
</details>
示例交互
- "播放 Elvis 的第一首歌"
- "创建一个 Taylor Swift / Slipknot 融合播放列表"
- "将我的锻炼播放列表中的所有 techno 歌曲复制到我的工作播放列表"
工具
读取操作
-
searchSpotify
- 描述: 在 Spotify 上搜索曲目、专辑、艺术家或播放列表
- 参数:
query(字符串): 搜索词type(字符串): 要搜索的项目类型(曲目、专辑、艺术家、播放列表)limit(数字,可选): 要返回的最大结果数 (10-50)
- 返回: 匹配项目的列表,包含其 ID、名称和其他详细信息
- 示例:
searchSpotify("bohemian rhapsody", "track", 20)
-
getNowPlaying
- 描述: 获取有关 Spotify 上当前播放曲目的信息
- 参数: 无
- 返回: 包含曲目名称、艺术家、专辑、播放进度、持续时间和播放状态的对象
- 示例:
getNowPlaying()
-
getMyPlaylists
- 描述: 获取当前用户在 Spotify 上的播放列表列表
- 参数:
limit(数字,可选): 要返回的最大播放列表数(默认值:20)offset(数字,可选): 要返回的第一个播放列表的索引(默认值:0)
- 返回: 播放列表数组,包含其 ID、名称、曲目计数和公开状态
- 示例:
getMyPlaylists(10, 0)
-
getPlaylistTracks
- 描述: 获取特定 Spotify 播放列表中的曲目列表
- 参数:
playlistId(字符串): 播放列表的 Spotify IDlimit(数字,可选): 要返回的最大曲目数(默认值:100)offset(数字,可选): 要返回的第一个曲目的索引(默认值:0)
- 返回: 曲目数组,包含其 ID、名称、艺术家、专辑、持续时间和添加日期
- 示例:
getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")
播放 / 创建操作
-
playMusic
- 描述: 在 Spotify 上开始播放曲目、专辑、艺术家或播放列表
- 参数:
uri(字符串,可选): 要播放的项目的 Spotify URI(覆盖 type 和 id)type(字符串,可选): 要播放的项目类型(曲目、专辑、艺术家、播放列表)id(字符串,可选): 要播放的项目的 Spotify IDdeviceId(字符串,可选): 要在其上播放的设备的 ID
- 返回: 成功状态
- 示例:
playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" }) - 替代方案:
playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
-
pausePlayback
- 描述: 暂停 Spotify 上当前播放的曲目
- 参数:
deviceId(字符串,可选): 要暂停的设备的 ID
- 返回: 成功状态
- 示例:
pausePlayback()
-
skipToNext
- 描述: 跳到当前播放队列中的下一首曲目
- 参数:
deviceId(字符串,可选): 设备的 ID
- 返回: 成功状态
- 示例:
skipToNext()
-
skipToPrevious
- 描述: 跳到当前播放队列中的上一首曲目
- 参数:
deviceId(字符串,可选): 设备的 ID
- 返回: 成功状态
- 示例:
skipToPrevious()
-
createPlaylist
- 描述: 在 Spotify 上创建一个新的播放列表
- 参数:
name(字符串): 新播放列表的名称description(字符串,可选): 播放列表的描述public(布尔值,可选): 播放列表是否应公开(默认值:false)
- 返回: 包含新播放列表的 ID 和 URL 的对象
- 示例:
createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })
-
addTracksToPlaylist
- 描述: 将曲目添加到现有的 Spotify 播放列表
- 参数:
playlistId(字符串): 播放列表的 IDtrackUris(数组): 要添加的曲目 URI 或 ID 的数组position(数字,可选): 插入曲目的位置
- 返回: 成功状态和快照 ID
- 示例:
addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })
-
addToQueue
- 描述: 将曲目、专辑、艺术家或播放列表添加到当前播放队列
- 参数:
uri(字符串,可选): 要添加到队列的项目的 Spotify URI(覆盖 type 和 id)type(字符串,可选): 要添加到队列的项目类型(曲目、专辑、艺术家、播放列表)id(字符串,可选): 要添加到队列的项目的 Spotify IDdeviceId(字符串,可选): 要在其上添加到队列的设备的 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 开发者应用程序
- 转到 Spotify 开发者仪表板
- 使用您的 Spotify 帐户登录
- 单击“创建应用程序”按钮
- 填写应用程序名称和描述
- 接受服务条款并单击“创建”
- 在新应用程序的仪表板中,您将看到您的客户端 ID
- 单击“显示客户端密钥”以显示您的客户端密钥
- 单击“编辑设置”并添加重定向 URI(例如,
http://localhost:8888/callback) - 保存您的更改
Spotify API 配置
在项目根目录中创建一个 spotify-config.json 文件(您可以复制并修改提供的示例):
# 复制示例配置文件
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 进行身份验证。 请按照以下步骤验证您的应用程序:
- 运行身份验证脚本:
npm run auth
-
该脚本将生成一个授权 URL。 在您的 Web 浏览器中打开此 URL。
-
系统将提示您登录 Spotify 并授权您的应用程序。
-
授权后,Spotify 会将您重定向到您指定的重定向 URI,并在 URL 中包含一个 code 参数。
-
身份验证脚本将自动将此代码交换为访问令牌和刷新令牌。
-
这些令牌将保存到您的
spotify-config.json文件中,该文件现在看起来像这样:
{
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"redirectUri": "http://localhost:8888/callback",
"accessToken": "BQAi9Pn...kKQ",
"refreshToken": "AQDQcj...7w",
"expiresAt": 1677889354671
}
- 服务器将在需要时使用刷新令牌自动刷新访问令牌。
与 Claude Desktop 和 Cursor 集成
要将您的 MCP 服务器与 Claude Desktop 一起使用,请将其添加到您的 Claude 配置中:
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["spotify-mcp-server/build/index.js"]
}
}
}
对于 Cursor,请转到“Cursor 设置”中的“MCP”选项卡(command + shift + J)。 使用以下命令添加服务器:
node path/to/spotify-mcp-server/build/index.js
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。