mcpField
S
Spotify

Spotify

本地服务
github.com/jamiew游戏娱乐125 周前更新

关于 Spotify

面向 Spotify 用户的本地 Python MCP 服务,可供 MCP 客户端搜索音乐、管理播放列表与已点赞歌曲并控制播放。它提供 28 个工具、资源和提示词,并为批量读取及播放列表操作加入保护措施。

主要功能

  1. 01搜索曲目、专辑、艺人和播放列表
  2. 02控制播放及 Spotify Connect 设备
  3. 03管理播放列表和已点赞歌曲
  4. 04读取六类 Spotify 资源
  5. 05批量读取并报告进度

适用场景

  1. 01按艺人、专辑或播放列表查找音乐
  2. 02将曲目加入队列并控制播放
  3. 03创建或调整播放列表顺序
  4. 04查看已保存和最近播放的曲目

MCP 相关

通过 stdio 本地运行,向 MCP 客户端提供 28 个工具、六类资源和五个提示词,涵盖 Spotify 搜索、播放控制、播放列表及音乐库操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jamiew-spotify": {
"command": "uvx",
"args": [
"spotify-mcp-jamiew"
],
"env": {
"SPOTIFY_CLIENT_ID": "<SPOTIFY_CLIENT_ID>",
"SPOTIFY_CLIENT_SECRET": "<SPOTIFY_CLIENT_SECRET>",
"SPOTIFY_REDIRECT_URI": "<SPOTIFY_REDIRECT_URI>"
}
}
}
}
启动命令uvx spotify-mcp-jamiew
需要配置的环境变量
SPOTIFY_CLIENT_ID密钥Spotify app Client ID from developer.spotify.com
SPOTIFY_CLIENT_SECRET密钥Spotify app Client Secret from developer.spotify.com
SPOTIFY_REDIRECT_URIOAuth redirect URI registered in your Spotify app

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypispotify-mcp-jamiew0.7.0

工具

28

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

Spotify MCP,Python 本地服务

spotify-mcp

mcp-name: io.github.jamiew/spotify-mcp

一个本地 Python MCP 服务,可通过 MCP 客户端搜索 Spotify、控制播放,以及管理播放列表和「已赞歌曲」。它使用你的 Spotify 帐户通过 stdio 运行。 这是 varunneal/spotify-mcp 的受支持分支。

TypeScript 版本支持本地和托管使用,且提供不同的 MCP 接口。

设置

需要 Python 3.12+、uv 和用于播放的 Spotify Premium。

  1. 在 Spotify 开发者控制面板中创建应用。
  2. 将 http://127.0.0.1:8888 注册为其重定向 URI,必须完全按此填写。
  3. 将应用的 Client ID 和 Client Secret 复制到 MCP 客户端的配置中:
{
  "mcpServers": {
    "spotify": {
      "command": "uvx",
      "args": ["spotify-mcp-jamiew"],
      "env": {
        "SPOTIFY_CLIENT_ID": "your_client_id",
        "SPOTIFY_CLIENT_SECRET": "your_client_secret",
        "SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8888"
      }
    }
  }
}

重启客户端。首次使用时,浏览器会打开 Spotify 授权页面;令牌会缓存在本地。请妥善保管客户端密钥和令牌缓存。播放需要有可用的 Spotify Connect 设备,因此请在要控制的设备上打开 Spotify。

各客户端的设置说明:Claude Desktop、 Claude Code 和 Codex。请按各客户端的格式使用相同的命令和环境变量。

从源代码运行

上面的包命令使用已发布的包,其内容可能落后于本 README 的源代码更改。若要运行当前检出版本:

git clone https://github.com/jamiew/spotify-mcp.git
cd spotify-mcp
uv sync

在上面的配置中,将 command 改为 uv,并将 args 改为 ["--directory", "/absolute/path/to/spotify-mcp", "run", "spotify-mcp"]。 保留相同的环境变量。无需克隆即可使用 uvx --from git+https://github.com/jamiew/spotify-mcp.git spotify-mcp。

**重新授权:**艺术家关注状态检查需要 user-follow-read。现有授权不会自动获得新增的作用域。收到提示时,请重启并完成 Spotify 授权;如果访问仍被拒绝,请检查 Spotify 帐户中该应用的授权,并重新授权。 请勿自动删除身份验证缓存。

功能

28 个工具、六个资源(用户、播放状态、曲目、播放列表、艺术家、专辑)和五个提示词。 工具提供类型化输出和行为注释;读取大型播放列表时会报告进度。 在支持的情况下,移除播放列表内容前会请求确认;重新排序时会使用快照保护; 播放控制会尽力在写入后读取以确认结果,但无法保证成功。

工具
工具功能
get_me读取你的个人资料
search_music按筛选条件和分页搜索曲目、专辑、艺人或播放列表
get_tracks读取最多 50 首曲目;无法批量读取时逐首读取
get_artist读取最多 50 位艺人;读取单位艺人的热门曲目
get_album读取最多 20 张专辑;读取单张专辑的曲目列表
get_playback_state读取当前曲目、设备、进度、随机播放和循环播放状态
control_playback播放、暂停、跳过、定位、调节音量,以及控制随机播放和循环播放
list_devices列出 Spotify Connect 设备
transfer_playback将播放切换到另一台设备
get_queue读取正在播放和即将播放的曲目
add_to_queue将曲目加入队列
list_playlists分页列出你的播放列表
get_playlist读取播放列表元数据,不包括曲目
get_playlist_tracks分页读取播放列表曲目
create_playlist创建私人播放列表;设置 public=true 即可公开
update_playlist_details更改名称、描述或可见性
add_tracks_to_playlist添加最多 100 首曲目
remove_tracks_from_playlist移除曲目;在支持的情况下进行确认
reorder_playlist移动一组曲目
unfollow_playlist取消关注播放列表,包括你自己的播放列表
get_saved_tracks分页读取「已点赞的歌曲」
save_tracks点赞曲目
remove_saved_tracks取消点赞曲目
check_saved_tracks检查最多 50 首曲目是否在「已点赞的歌曲」中
check_saved_albums检查最多 20 张已保存的专辑
check_following_artists检查最多 50 位已关注的艺人
get_top_items读取某个时间范围内的热门艺人或曲目
get_recently_played读取最近播放的曲目及其时间戳
须知行为
  • 新建播放列表默认为私人。 现有播放列表不会受到影响。Spotify 可能会报告意外的可见性,因此请在 Spotify 应用中确认敏感播放列表的可见性。
  • 保存或移除曲目,以及检查曲目或艺人的关注状态时,最多接受 50 项,并以 40 项为一批发送给上游。专辑检查最多接受 20 项。检查结果与输入顺序保持一致;未完成的批次会失败。分批写入并非原子操作:发生错误后,先前的更改可能仍会保留。重试前请先检查状态。
  • 受限应用的搜索页面最多为 10。请根据返回的 offset + limit 翻页,而非按请求的数量计算。逐首读取的备用方案最多会发出 50 次 Spotify 请求。
  • 播放列表分页会统计各个位置,包括无法解析的条目和 id: null 的本地文件。本地文件也会设置 is_local;这些位置仍可用于重新排序。

Spotify 访问权限与政策

  • 权限和应用访问模式决定可用的端点和播放列表访问权限。 403 可能表示缺少权限,而非端点已弃用。现有集成的 2 月限制已推迟; 受限应用使用 2026 年 2 月 API 路由。
  • 开发模式 通常允许 5 位加入许可名单的用户,并要求应用所有者拥有 Premium;较早获批的较大许可名单可能保留原有资格。扩展访问权限并非普通爱好项目都能获批: 条件包括组织、法人实体、已上线的服务,以及每月 250,000 名活跃用户。公开 URL 不会取消这些限制。
  • 开发者账户中的所有开发模式应用共用一个配额,即使拥有 允许的 25 个 Client IDs 也是如此。 此服务会直接返回 429 错误,不会重试,包括 QUOTA_EXCEEDED,以及在提供 Retry-After 时附带该值的普通速率限制错误。未指定有保证的配额重置时间。
  • 此服务使用一个本地身份。请勿共享其令牌缓存,也不要将其作为无需身份验证的公共服务公开。其他用户应自行托管并授权自己的账户。
  • AI 政策是另一项独立限制。 Spotify 开发者政策 第 III.14 条限制将 Spotify 内容用于训练 AI/ML 模型或以其他方式将其纳入此类模型; “不训练”或“仅使用元数据”并不代表自动获准。第 III.13 条限制分析和衍生指标;第 III.3 条限制语音控制助手。在向公众开放 AI 访问之前,请先向 Spotify 征求说明或批准。这是风险提示,不构成法律建议或许可。
在不同实现之间切换

版本和工具名称相同,并不意味着与其他实现可直接互换。切换前,请检查参数、限制和结果格式。若工作流依赖此服务的资源、五个提示词、快照保护机制、移除确认或播放确认,请保留这些行为;它们并非所有实现都具备。

致谢

MIT 许可证,版权归 Varun Neal Srivastava 所有,2025 年。 感谢 @varunneal 创建原始项目, 以及 @jamiew、@jonico、 @tedeuxx 和 @karimStekelenburg。

横幅由 Glif 制作。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。