使用说明
Spotify MCP Server
轻量级 模型上下文协议(MCP) 该服务器使Cursor&Claude等人工智能助手能够控制Spotify的播放和管理播放列表。
Contents
交互示例
- “播放埃尔维斯的第一首歌”
- “创建Taylor Swift/Slipknot融合播放列表”
- “将我的锻炼播放列表中的所有techno曲目复制到我的工作播放列表中”
工具
读取操作
-
搜索Spotify
- 描述:在Spotify上搜索曲目、专辑、艺术家或播放列表
- 参数:
query(string):搜索词type(string):要搜索的项目类型(曲目、专辑、艺术家、播放列表)limit(number,可选):返回的最大结果数(10-50)
- 退货:匹配项目及其ID、名称和其他详细信息的列表
- 示例:
searchSpotify("bohemian rhapsody", "track", 20)
-
立即开始播放
- 描述:获取有关Spotify上当前播放曲目的信息
- 参数:无
- 退货:包含曲目名称、艺术家、专辑、播放进度、持续时间和播放状态的对象
- 示例:
getNowPlaying()
-
获取我的播放列表
- 描述:获取当前用户在Spotify上的播放列表列表
- 参数:
limit(数字,可选):要返回的播放列表的最大数量(默认值:20)offset(数字,可选):要返回的第一个播放列表的索引(默认值:0)
- 退货:一系列包含ID、名称、曲目计数和公开状态的播放列表
- 示例:
getMyPlaylists(10, 0)
-
获取播放列表曲目
- 描述:获取特定Spotify播放列表中的曲目列表
- 参数:
playlistId(string):播放列表的Spotify IDlimit(数字,可选):要返回的最大曲目数(默认值:100)offset(数字,可选):要返回的第一个曲目的索引(默认值:0)
- 退货:包含ID、姓名、艺术家、专辑、持续时间和添加日期的曲目数组
- 示例:
getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")
-
最近播放
- 描述:从Spotify检索最近播放的曲目列表。
- 参数:
limit(number,可选):指定要返回的最大曲目数的数字。
- 退货:如果找到曲目,它会返回最近播放的曲目的格式化列表,否则会显示一条消息:“您在Spotify上没有最近播放的任何曲目”。
- 示例:
getRecentlyPlayed({ limit: 10 })
-
最近播放
- 描述:从Spotify检索最近播放的曲目列表。
- 参数:
limit(number,可选):指定要返回的最大曲目数的数字。
- 退货:如果找到曲目,它会返回最近播放的曲目的格式化列表,否则会显示一条消息:“您在Spotify上没有最近播放的任何曲目”。
- 示例:
getRecentlyPlayed({ limit: 10 })
播放/创建操作
-
play音乐
- 描述:开始在Spotify上播放曲目、专辑、艺术家或播放列表
- 参数:
uri(字符串,可选):要播放的项目的Spotify URI(覆盖类型和id)type(字符串,可选):要播放的项目类型(曲目、专辑、艺术家、播放列表)id(字符串,可选):要播放的项目的Spotify IDdeviceId(字符串,可选):要播放的设备的ID
- 退货:成功状态
- 示例:
playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" }) - 替代:
playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
-
pause播放
- 描述:暂停Spotify上当前播放的曲目
- 参数:
deviceId(字符串,可选):要暂停的设备的ID
- 退货:成功状态
- 示例:
pausePlayback()
-
跳转到下一步
- 描述:跳到当前播放队列中的下一首曲目
- 参数:
deviceId(字符串,可选):设备的ID
- 退货:成功状态
- 示例:
skipToNext()
-
跳转到上一个
- 描述:跳到当前播放队列中的上一首曲目
- 参数:
deviceId(字符串,可选):设备的ID
- 退货:成功状态
- 示例:
skipToPrevious()
-
创建播放列表
- 描述:在Spotify上创建新的播放列表
- 参数:
name(string):新播放列表的名称description(字符串,可选):播放列表的描述public(布尔值,可选):播放列表是否应公开(默认值:false)
- 退货:具有新播放列表ID和URL的对象
- 示例:
createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })
-
addTracksToPlaylist
- 描述:将曲目添加到现有的Spotify播放列表
- 参数:
playlistId(string):播放列表的IDtrackUris(array):要添加的跟踪URI或ID的数组position(数字,可选):插入轨迹的位置
- 退货:成功状态和快照ID
- 示例:
addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })
-
addToQueue
- 描述:将曲目、专辑、艺术家或播放列表添加到当前播放队列
-
- 参数:
uri(字符串,可选):要添加到队列中的项目的Spotify URI(覆盖类型和id)type(字符串,可选):要排队的项目类型(曲目、专辑、艺术家、播放列表)id(字符串,可选):要排队的项目的Spotify IDdeviceId(string,可选):要排队的设备的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 项目根目录中的文件(您可以复制和修改提供的示例):
# 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进行身份验证。按照以下步骤验证您的应用程序:
- 运行身份验证脚本:
npm run auth
-
该脚本将生成一个授权URL。请在web浏览器中打开此URL。
-
系统将提示您登录Spotify并授权您的应用程序。
-
授权后,Spotify将使用URL中的代码参数将您重定向到指定的重定向URI。
-
身份验证脚本将自动将此代码交换为访问和刷新令牌。
-
这些令牌将保存到您的
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和VsCode集成 通过Cline模型扩展
要将MCP服务器与Claude Desktop一起使用,请将其添加到Claude配置中:
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["spotify-mcp-server/build/index.js"]
}
}
}
对于光标,请转到中的MCP选项卡 Cursor Settings (命令+换档+J)。使用以下命令添加服务器:
node path/to/spotify-mcp-server/build/index.js
要使用Cline正确设置MCP,请确保您已设置以下文件配置 cline_mcp_settings.json:
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["~/../spotify-mcp-server/build/index.js"],
"autoApprove": ["getListeningHistory", "getNowPlaying"]
}
}
}
您可以将其他工具添加到自动审批数组中,以便在不进行干预的情况下运行这些工具。