使用说明
Spotify MCP服务器
一个基于Node.js的服务器,与Spotify Web API和模型上下文协议(MCP)集成,为搜索、控制播放和管理Spotify内容提供工具。它允许用户通过标准化的MCP接口通过stdio传输以编程方式与他们的Spotify帐户进行交互。
🧠 项目概述
姓名: Spotify MCP服务器
说明: 一个可编程接口,将Spotify Web API与MCP标准连接起来,通过stdio使用基于JSON的工具实现搜索、播放控制和播放列表管理。
主要特点:
- 🔍 在Spotify上搜索曲目
- 🎵 检查当前播放状态
- ▶️ 按URI播放特定曲目
- 📋 检索用户播放列表
- ⏸ 暂停正在进行的播放
- 🔐 Spotify的OAuth身份验证
- 📉 Spotify API请求的速率限制处理
⚙️ 先决条件
- Node.js (建议使用v16或更高版本)
- A. Spotify开发者帐户 使用应用程序凭据
- npm(节点包管理器)
📦 安装步骤
# 1. Clone the repository
git clone <repository-url>
cd spotify-mcp
# 2. Install dependencies
npm install
# 3. Create a .env file and add the following:
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SPOTIFY_REDIRECT_URI=http://localhost:8888/callback
注: 替换
your_spotify_client_id和your_spotify_client_secret使用您的Spotify Developer应用程序凭据。重定向URI必须与您的Spotify应用设置中设置的URI匹配。
# 4. Build
npm run build
# 5. Run the server
npm start
这将打开一个用于Spotify身份验证的浏览器,并使用stdio传输启动服务器。
🔧 工具
1. search_tracks
- 说明: 根据查询字符串在Spotify上搜索曲目。
- 输入架构:
query(字符串,必填):搜索词(例如,艺术家姓名、歌曲标题)。
- 输出: 最多5个跟踪对象的JSON数组
name,artist,album,release_date,popularity,id,以及uri. - 例子:
{
"name": "search_tracks",
"arguments": {"query": "The Beatles"}
}
2. get_playback_state
- 说明: 检索用户Spotify帐户的当前播放状态。
- 输入架构: 无
- 输出: JSON对象,包含当前曲目信息、播放状态和设备详细信息,或者如果没有播放,则显示“无活动播放”。
- 例子:
{
"name": "get_playback_state",
"arguments": {}
}
3. play_track
- 说明: 使用其Spotify URI播放特定曲目。
- 输入架构:
uri(字符串,必填):Spotify曲目URI(例如。,spotify:track:xxx).
- 输出: JSON确认
status和uri. - 例子:
{
"name": "play_track",
"arguments": {"uri": "spotify:track:7KXjTSCq5nL1LoYtL7XAwS"}
}
4. get_user_playlists
- 说明: 从Spotify获取用户的播放列表。
- 输入架构:
limit(number,可选):要返回的最大播放列表数(默认值:20)。
- 输出: JSON格式的播放列表对象数组
name,id,track_count,uri,以及public状态。 - 例子:
{
"name": "get_user_playlists",
"arguments": {"limit": 10}
}
5. pause_playback
- 说明: 暂停用户活动Spotify设备上的当前播放。
- 输入架构: 无
- 输出: JSON确认,状态为“播放暂停”。
- 例子:
{
"name": "pause_playback",
"arguments": {}
}
🌐 用例
-
音乐发现机器人:
- 使用
search_tracks和play_track实现基于情绪的音乐聊天机器人。
- 使用
-
播放列表管理工具:
- 使用
get_user_playlists和search_tracks预览和组织播放列表。
- 使用
-
回放控制自动化:
- 使用自动化播放操作
get_playback_state,play_track,以及pause_playback.
- 使用自动化播放操作
-
Spotify仪表板:
- 使用以下命令构建桌面小部件
get_playback_state,get_user_playlists,pause_playback,以及play_track.
- 使用以下命令构建桌面小部件
-
学习Spotify API:
- 试用所有工具,学习Spotify Web API的工作原理。
🔐 身份验证详细信息
- 首次运行时,服务器会打开浏览器进行Spotify OAuth身份验证。
- 通过接收代码
http://localhost:8888/callback. - 将代码交换为访问和刷新令牌。
- 在到期后5分钟内自动刷新令牌。
⏱ 速率限制
- 使用重试策略处理Spotify API速率限制:
- 每次请求后冷却10秒。
- 如果发生429 Too Many Requests错误,请等待1分钟。
📊 依赖项
npm install dotenv spotify-web-api-node @modelcontextprotocol/sdk open
dotenv:从加载环境变量.env.spotify-web-api-node:Spotify API客户端。@modelcontextprotocol/sdk:实现MCP服务器。http,url:OAuth重定向服务器内置的Node.js。open:打开默认浏览器进行身份验证。
📁 开发信息
- 入口点:
index.js - 语言: JavaScript(带ES模块的Node.js)
- 运行命令:
node index.js - 调试: 检查控制台日志中的MCP或身份验证错误。
⚠️ 局限性
- 播放控制需要Spotify Premium。
- 仅支持stdio传输(不支持HTTP、WebSocket等)。
search_tracks最多返回5个结果。- 假设只有一个活动设备用于播放。
🚀 贡献
请随时打开问题或提交pull请求至:
- 添加新工具
- 增强现有功能
- 改进文档
✍️ 许可证
MIT许可证-免费使用、修改和分发用于个人或商业用途。
❤️ 页脚
内置于❤️ 由Rakshitha C Devadiga于2025年3月17日发布