使用说明
Spotify MCP服务器
模型上下文协议(MCP)服务器,提供与Spotify API的无缝集成,使人工智能助手能够控制Spotify播放并与之交互,管理播放列表,搜索音乐,以及检索用户收听数据。
目录
概述
Spotify MCP服务器弥合了人工智能助手和Spotify之间的差距,允许与您的音乐库和播放进行自然语言交互。无论您是想播放特定歌曲、创建播放列表、发现新音乐还是分析您的收听习惯,此服务器都提供了实现这一目标的工具。
特性
特点
- 身份验证和授权:用于安全访问Spotify API的OAuth 2.0授权代码流
- 播放控制:跨设备播放、暂停、跳过、调整音量和控制播放
- 搜索:查找曲目、专辑、艺术家和播放列表
- 图书馆管理:访问和管理已保存的曲目、专辑和播放列表
- 用户数据:检索用户配置文件信息和收听统计信息
计划的功能
看 ROADMAP.md 了解详细的功能时间线和未来的增强功能。
快速开始
这 最快最简单 开始的方法是使用交互式安装向导:
# Run the setup wizard (no installation required!)
npx @darrenjaws/spotify-mcp setup
向导将:
- ✅ 指导您创建Spotify Developer应用程序
- ✅ 自动打开浏览器到正确的页面
- ✅ 输入凭据时验证凭据
- ✅ 为您的环境生成正确的配置
- ✅ 为您提供Claude Desktop、Claude Code、Cursor、Windsurf、VS Code或OpenCode的复制粘贴就绪配置
就是这样! 整个设置大约需要2分钟。
安装
选项1:NPM(推荐)
交互式设置(最简单):
# No installation required - run the setup wizard
npx @darrenjaws/spotify-mcp setup
或者先全局安装:
npm install -g @darrenjaws/spotify-mcp
# Then run setup
spotify-mcp setup
使用npx而不使用安装向导:
# Skip to manual configuration (see Configuration section below)
npx -y @darrenjaws/spotify-mcp
选项2:来源
为了发展或贡献:
# Clone the repository
git clone https://github.com/darrenjaworski/spotify-mcp.git
cd spotify-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run the setup wizard
npm run build && node build/bin.js setup
配置
自动设置(推荐)
使用交互式设置向导获得最简单的配置体验:
npx @darrenjaws/spotify-mcp setup
向导将引导您完成以下操作:
- 创建Spotify开发者应用程序
- 获取您的客户ID和密码
- 选择你的人工智能工具(克劳德桌面、克劳德代码、光标、风帆、VS代码、OpenCode)
- 生成正确的配置文件
手动设置
如果您更喜欢手动配置或需要更新凭据:
Spotify应用程序设置
- 去 Spotify开发者仪表板
- 创建新应用程序
- 注意你的 客户端ID 和 客户端密钥
- 添加
http://127.0.0.1:3000/callback到应用程序的重定向URI(注意:使用127.0.0.1,不localhost)
环境变量
对于NPM/npx用户:在Claude Desktop配置中配置环境变量(请参阅上面的MCP配置)。
从源头开发:创建一个 .env 项目根目录中的文件:
SPOTIFY_CLIENT_ID=your_client_id_here
SPOTIFY_CLIENT_SECRET=your_client_secret_here
SPOTIFY_REDIRECT_URI=http://127.0.0.1:3000/callback
MCP配置
克劳德桌面版
添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["-y", "@darrenjaws/spotify-mcp"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:3000/callback"
}
}
}
}
保存后重新启动Claude Desktop。
克劳德代码(CLI)
最简单的方法是 claude mcp add 命令:
claude mcp add spotify \
-e SPOTIFY_CLIENT_ID=your_client_id_here \
-e SPOTIFY_CLIENT_SECRET=your_client_secret_here \
-e SPOTIFY_REDIRECT_URI=http://127.0.0.1:3000/callback \
-- npx -y @darrenjaws/spotify-mcp
或手动添加到 ~/.claude.json (全球)或 .claude/settings.json (项目):
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["-y", "@darrenjaws/spotify-mcp"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:3000/callback"
}
}
}
}
证实 claude mcp list --你应该看看 spotify 在列表中。
光标
添加 .cursor/mcp.json 在您的项目中(或 ~/.cursor/mcp.json 全球):
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["-y", "@darrenjaws/spotify-mcp"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:3000/callback"
}
}
}
}
帆板运动
添加 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["-y", "@darrenjaws/spotify-mcp"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:3000/callback"
}
}
}
}
VS代码(GitHub副本)
添加 .vscode/mcp.json 在您的项目中(或全局的VS代码用户设置):
{
"servers": {
"spotify": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@darrenjaws/spotify-mcp"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:3000/callback"
}
}
}
}
OpenCode
{
"$schema": "https://opencode.ai/config.json",
"spotify": {
"command": ["npx", "-y", "@darrenjaws/spotify-mcp@latest"],
"environment": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:3000/callback"
},
"type": "local"
}
}
来源(发展)
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["/absolute/path/to/spotify-mcp/build/bin.js"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:3000/callback"
}
}
}
}
备注:使用npx或全局安装时,必须在MCP配置中指定环境变量(而不是在 .env 文件)。
用法
配置后,您可以通过自然语言与Spotify进行交互:
- “播放我的每周发现播放列表”
- 播放迈克尔·杰克逊的专辑《颤栗》
- “目前正在播放哪首歌?”
- “用这些歌曲创建一个名为“健身混音”的播放列表…”
- “跳到下一首曲目”
- “打开随机播放”
- “设置重复跟踪”
- “向我展示上个月的顶尖艺术家”
- “搜索披头士乐队的歌曲”
- “将这首歌添加到我喜欢的歌曲中”
可用工具(共32个)
播放和设备控制(10个工具)
spotify_play-开始或恢复播放曲目、专辑、播放列表或艺术家spotify_pause-暂停播放spotify_next-跳到下一首曲目spotify_previous-跳至上一曲目spotify_set_volume-调整音量(0-100)spotify_get_playback_state-获取当前播放信息(包括混洗/重复状态)spotify_get_devices-列出可用的Spotify Connect设备spotify_transfer_playback-将播放转移到其他设备spotify_shuffle-启用或禁用随机播放模式spotify_repeat-设置重复模式(跟踪、上下文或关闭)
搜索和发现(1个工具)
spotify_search-使用可选字段过滤器(艺术家、专辑、流派、年份、标签)搜索曲目、专辑、艺术家或播放列表
播放列表管理(8个工具)
spotify_get_playlists-获取用户的播放列表spotify_get_playlist-获取特定播放列表详细信息spotify_create_playlist-创建新的播放列表spotify_add_to_playlist-将曲目添加到播放列表spotify_remove_from_playlist-从播放列表中删除曲目spotify_reorder_playlist_tracks-重新排序播放列表中的曲目spotify_delete_playlist-删除(取消关注)播放列表spotify_update_playlist-更新播放列表详细信息(名称、描述、公共/私人、协作)
图书馆管理(9个工具)
spotify_get_saved_tracks-获取保存在库中的曲目spotify_get_saved_albums-将相册保存在您的库中spotify_get_followed_artists-获取您关注的艺术家spotify_save_tracks-将曲目保存到库中spotify_remove_saved_tracks-从库中删除曲目spotify_save_albums-将相册保存到您的库spotify_remove_saved_albums-从库中删除相册spotify_follow_artists-关注艺术家spotify_unfollow_artists-取消关注艺术家
用户数据(3个工具)
spotify_get_user_profile-获取用户配置文件信息spotify_get_top_items-获取用户的顶级艺术家或曲目spotify_get_recently_played-获取最近播放的曲目
系统(1个工具)
spotify_open-打开Spotify桌面应用程序(支持macOS、Windows、Linux)
本地开发
先决条件
- Node.js>=18.0.0
- npm或纱线
- 带有应用程序凭据的Spotify开发者帐户
初始设置
- 克隆并安装依赖项
git clone https://github.com/darrenjaworski/spotify-mcp.git
cd spotify-mcp
npm install
- 配置环境变量
cp .env.example .env
# Edit .env with your Spotify credentials
- 构建项目
npm run build
开发工作流程
观看模式(推荐)
在监视模式下运行TypeScript编译器进行自动重建:
npm run dev
这会持续监视文件更改并自动重建。在开发过程中,请在一个终端中保持此运行。
手动构建
npm run build # Compile TypeScript to build/
npm run clean # Remove build directory
测试您的MCP服务器
选项1:MCP检查员(推荐)
这 MCP检查员 是MCP服务器的官方交互式测试工具。它提供了一个基于浏览器的UI来测试工具、查看协议消息和调试服务器。
启动检查器:
npx @modelcontextprotocol/inspector node build/bin.js
这将在以下位置打开浏览器 http://localhost:6274 与:
- 服务器连接窗格:配置传输和环境变量
- 工具选项卡:查看所有可用工具并以交互方式进行测试
- 资源选项卡:查看服务器资源
- 通知窗格:查看实时协议消息
使用环境变量:
npx @modelcontextprotocol/inspector node build/bin.js -- \
SPOTIFY_CLIENT_ID=your_id \
SPOTIFY_CLIENT_SECRET=your_secret \
SPOTIFY_REDIRECT_URI=http://127.0.0.1:3000/callback
启用调试日志记录:
DEBUG=true npx @modelcontextprotocol/inspector node build/bin.js
优点:
- ✅ 交互式UI测试所有32个工具
- ✅ 实时查看JSON-RPC消息
- ✅ 开发过程中无需配置Claude Desktop
- ✅ 快速迭代工具实现
选项2:使用Claude Desktop进行测试
添加到您的Claude Desktop配置中以进行真实世界的测试:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"spotify-dev": {
"command": "node",
"args": ["/absolute/path/to/spotify-mcp/build/bin.js"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id",
"SPOTIFY_CLIENT_SECRET": "your_client_secret",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:3000/callback",
"LOG_LEVEL": "debug"
}
}
}
}
更改配置后重新启动Claude Desktop。
选项3:手动stdio测试
对于低级调试,您可以直接发送JSON-RPC消息:
# Build first
npm run build
# Test list tools
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node build/bin.js
# Test a tool call
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"spotify_get_user_profile","arguments":{}}}' | node build/bin.js
开发技巧
1.一起使用监视模式+检查器
1号航站楼:
npm run dev # Watch mode - rebuilds on changes
2号航站楼:
npx @modelcontextprotocol/inspector node build/bin.js
每次重建后刷新检查器以测试更改。
2.启用调试日志记录
集 LOG_LEVEL=debug 在你的 .env 文件以查看详细日志:
LOG_LEVEL=debug node build/bin.js
3.测试单个工具
在与Claude集成之前,使用检查器的“工具”选项卡用不同的输入测试每个工具。
4.检查stderr中的日志
服务器登录到stderr(而不是stdout)以避免干扰stdio传输:
node build/bin.js 2> server.log # Capture logs to file
测试
运行测试套件以验证工具注册和功能:
npm test # Run all tests
npm run test:watch # Run tests in watch mode
测试覆盖范围:
- ✅ 16个测试文件中的310个测试
- ✅ 用于播放、搜索、播放列表、库、用户和系统的工具级单元测试
- ✅ 身份验证测试(凭据、令牌管理、文件权限、刷新、OAuth回调)
- ✅ 记录器测试(敏感数据编辑、日志级别)
- ✅ 错误处理测试(所有HTTP状态代码、安全性)
- ✅ 服务器注册和集成测试
- ✅ 客户端测试(令牌编排、重试逻辑、速率限制)
- ✅ 验证测试(URI格式、数组大小、数值范围)
- ✅ 安装向导和CLI参数测试
棉绒与编码质量
npm run lint # Check code style
npm run lint:fix # Auto-fix linting issues
npm run static-checks # Run lint, build, and test together
故障排除
构建错误:
- 确保已安装TypeScript:
npm install - 检查节点版本:
node --version(应大于等于18)
检查员未加载:
- 检查端口6274是否可用
- 尝试清除浏览器缓存
- 重新启动检查器
OAuth错误:
- 在中验证Spotify凭据
.env - 在Spotify仪表板中检查重定向URI匹配
- 确保范围正确
src/spotify/auth.ts
服务器未响应:
- 检查日志:
LOG_LEVEL=debug node build/bin.js - 验证构建成功:
ls -la build/ - 使用简单的工具进行测试,例如
spotify_get_user_profile
认证流程
服务器使用Spotify的OAuth 2.0授权码流:
- 第一个请求触发身份验证流
- 用户被重定向到带有安全状态参数的Spotify登录,以进行CSRF保护
- 授权后,使用client_secret交换令牌
- 令牌安全地存储在
~/.spotify-mcp/tokens.json具有0600权限 - 令牌过期时会自动刷新
安全
- OAuth令牌以受限文件权限(0600)安全存储,从不记录
- 加密安全状态参数可防止CSRF攻击
- 客户端机密保存在环境变量中,从不保存在源代码中
- 所有API请求都使用HTTPS
- 使用适用于机密服务器应用程序的授权码流
贡献
欢迎投稿!请在提交PR之前阅读我们的投稿指南。
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
致谢
- 建立在 模型上下文协议
- 使用 Spotify Web API
支持
相关项目
资源
MCP开发工具
- MCP检查员文件 -官方测试工具
- MCP检查器GitHub -源代码
- MCP服务器测试指南 -全面的测试策略
- MCP检查员教程 -分步指南