Spotify音乐管理服务

一个通过Spotify API提供音乐搜索、播放列表管理、播放控制和听歌历史探索功能的模型上下文协议(MCP)服务器。

  • by popand
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 popand/SpotifyMCP

使用说明

Spotify MCP服务器

一个模型上下文协议(MCP)服务器,为Claude提供与Spotify API交互的工具-搜索音乐、管理播放列表、控制播放和探索您的收听历史。

先决条件

  • Node.js 18+
  • Spotify帐户
  • Spotify开发者应用程序(免费或高级版——播放控制需要高级版)

Spotify开发者设置

  1. 首选 Spotify开发者仪表板
  2. 点击 创建应用程序
  3. 填写详细信息:
    • 应用程序名称: 任何东西(例如“Claude MCP”)
    • 重定向URI: http://127.0.0.1:8888/callback
    • 使用的API: Web API
  4. 保存并记录您的 客户端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’的播放列表,并添加一些低保真曲目”
  • “我现在在听什么?”
  • “跳到下一首曲目”
  • “向我展示上个月的顶尖艺术家”

许可证

麻省理工学院