使用说明
Spotify MCP服务器
一个模型上下文协议(MCP)服务器,为Claude提供与Spotify API交互的工具-搜索音乐、管理播放列表、控制播放和探索您的收听历史。
先决条件
- Node.js 18+
- Spotify帐户
- Spotify开发者应用程序(免费或高级版——播放控制需要高级版)
Spotify开发者设置
- 首选 Spotify开发者仪表板
- 点击 创建应用程序
- 填写详细信息:
- 应用程序名称: 任何东西(例如“Claude MCP”)
- 重定向URI:
http://127.0.0.1:8888/callback - 使用的API: Web API
- 保存并记录您的 客户端ID 和 客户端密钥
安装
git clone https://github.com/popand/SpotifyMCP.git
cd SpotifyMCP
npm install
npm run build
授权
设置您的凭据并运行身份验证流:
export SPOTIFY_CLIENT_ID=your_client_id
export SPOTIFY_CLIENT_SECRET=your_client_secret
node dist/index.js auth
这将打开一个用于Spotify登录的浏览器窗口。批准后,令牌将保存到 ~/.spotify-mcp/tokens.json (到期时自动刷新)。
配置
克劳德桌面
增添 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["/path/to/SpotifyMCP/dist/index.js"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id",
"SPOTIFY_CLIENT_SECRET": "your_client_secret"
}
}
}
}
克劳德代码
添加到您的项目 .mcp.json:
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["/path/to/SpotifyMCP/dist/index.js"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id",
"SPOTIFY_CLIENT_SECRET": "your_client_secret"
}
}
}
}
工具
搜索音乐
在Spotify上搜索曲目、艺术家、专辑或播放列表。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
query |
string | 必填 | 搜索查询 |
type |
"track" |
"artist" |
"album" |
limit |
number(1-50) | 10 | 结果数 |
get_user_playlists
获取当前用户的播放列表。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit |
number(1-50) | 20 | 播放列表数 |
offset |
number | 0 | 分页偏移量 |
get_playlist_tracks
在播放列表中获取曲目。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
playlist_id |
string | 必填 | Spotify播放列表ID |
limit |
数字(1-50) | 20 | 轨道数量 |
offset |
number | 0 | 分页偏移量 |
创建播放列表
创建新的播放列表。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name |
string | 必填 | 播放列表名称 |
description |
字符串 | "" |
播放列表说明 |
public |
布尔值 | false |
公众可见度 |
add_tracks_to_playlist
将曲目添加到播放列表。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
playlist_id |
string | 必填 | Spotify播放列表ID |
track_uris |
string[] | 必填 | Spotify曲目URI数组 |
position |
number | end | 插入位置(从0开始) |
remove_tracks_from_playlist
从播放列表中删除曲目。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
playlist_id |
string | 必填 | Spotify播放列表ID |
track_uris |
string[] | 必填 | Spotify曲目URI数组 |
get_library_songs
获取用户保存/喜欢的曲目。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit |
数字(1-50) | 20 | 轨道数量 |
offset |
number | 0 | 分页偏移量 |
get_recently_played
获取最近播放的曲目。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit |
数字(1-50) | 20 | 轨道数量 |
获取top_items
通过聆听历史来获得顶级艺术家或曲目。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
type |
"artists" |
"tracks" |
必填 |
time_range |
"short_term" |
"medium_term" |
"long_term" |
limit |
编号(1-50) | 20 | 项目数量 |
offset |
number | 0 | 分页偏移量 |
get_now_playing
获取当前播放状态。没有参数。
控制回放
控制播放(需要 Spotify 高级版).
| 参数 | 类型 | 说明 |
|---|---|---|
action |
"play" |
"pause" |
device_id |
弦? | 目标设备(如果省略,则使用活动设备) |
context_uri |
弦? | 要播放的上下文(专辑/播放列表URI)。 play 只有。 |
track_uris |
string[]? | 跟踪要播放的URI。 play 只有。互斥于 context_uri. |
offset_position |
号码? | 上下文中的位置。 play 随着 context_uri 只有。 |
shuffle_state |
布尔值? | 需要 shuffle 行动 |
repeat_state |
"off" |
"track" |
volume_percent |
数字(0-100)? | 需要 volume 行动 |
注: 播放控制需要Spotify Premium订阅。免费帐户将收到“需要付费”错误。
示例用法
问克劳德这样的问题:
- “搜索泰勒·斯威夫特的最新专辑”
- “显示我的播放列表”
- “创建一个名为‘Chill Vibes’的播放列表,并添加一些低保真曲目”
- “我现在在听什么?”
- “跳到下一首曲目”
- “向我展示上个月的顶尖艺术家”
许可证
麻省理工学院