🚀 Spotify MCP 服务器
这是一个全面的模型上下文协议(MCP) 服务器,它能让 AI 助手(如 Claude Desktop)与 Spotify Web API 实现无缝集成。该服务器使 AI 助手能够通过一个结构良好、类型安全的接口与 Spotify 的音乐流媒体服务进行交互。
🚀 快速开始
1. 克隆并安装
git clone <repository-url>
cd Spotify-OAuth-MCP-server
npm install
2. 获取 Spotify 访问令牌
3. 构建并启动
npm run build
npm start
npm run dev
✨ 主要特性
🛠️ 29 种综合工具,涵盖 7 个类别:
- 专辑(4 种工具):专辑信息和新发行内容
- 艺术家(6 种工具):艺术家数据、热门曲目和发现功能
- 曲目(8 种工具):曲目详情、歌词和库管理
- 播放列表(10 种工具):完整的播放列表管理和发现功能
- 播放(10 种工具):全面的播放器控制和设备管理
- 用户(1 种工具):用户个人资料信息
- 搜索(2 种工具):通用搜索和搜索即播放功能
🏗️ 清晰的架构:
- 模块化设计:基于功能的工具组织方式
- 类型安全:完全采用 TypeScript 实现,并使用 Zod 进行验证
- 可复用组件:通用的模式构建器避免了代码重复
- 自动注册:工具会自动被发现并注册
- 错误处理:全面的错误管理,提供详细的错误信息
🔧 开发者体验:
- 易于扩展:添加新工具的模式简单
- 代码可维护:关注点分离清晰
- 文档完善:模式定义具有自文档性
- 调试方便:详细的日志记录和错误报告
📦 安装指南
按照快速开始部分的步骤进行操作:
- 克隆仓库并安装依赖。
- 获取 Spotify 访问令牌。
- 构建并启动服务器。
💻 使用示例
基础用法
将此 MCP 服务器与 Claude Desktop 集成后,你可以使用自然语言命令,例如:
"播放我的发现周报播放列表"
"搜索披头士乐队的歌曲"
"将这首歌添加到我的收藏"
"跳到下一首曲目"
"创建一个名为 '清晨氛围' 的新播放列表"
"搜索带有轻松音乐的播放列表"
"显示我本月的热门艺术家"
"当前正在播放什么?"
"将这首歌添加到我的播放队列"
"获取我最近播放的曲目"
"显示这首歌的歌词"
"获取纯文本歌词以进行分析"
🔧 Claude Desktop 集成
要在 Claude Desktop 中使用此 MCP 服务器,将其添加到你的 MCP 配置中:
macOS/Linux:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"spotify": {
"command": "node",
"args": ["/path/to/your/project/src/mcp/server.js"]
}
}
}
📚 详细文档
🏗️ 项目架构
src/
├── mcp/
│ ├── server.ts # 主 MCP 服务器入口点
│ ├── helpers/
│ │ └── utils.ts # 实用函数和辅助工具
│ ├── schemas/
│ │ └── common.ts # 可复用的模式构建器
│ └── tools/
│ ├── index.ts # 工具注册表和注册系统
│ ├── albums.ts # 与专辑相关的工具(4 种工具)
│ ├── artists.ts # 与艺术家相关的工具(6 种工具)
│ ├── tracks.ts # 与曲目相关的工具(8 种工具)
│ ├── playlists.ts # 播放列表管理工具(10 种工具)
│ ├── playback.ts # 播放控制工具(10 种工具)
│ ├── user.ts # 用户个人资料工具(1 种工具)
│ └── search.ts # 搜索功能工具(2 种工具)
└── spotify.ts # Spotify Web API 服务类
架构优势
- 模块化:每个工具类别都是独立的
- 类型安全:全程使用 TypeScript 和 Zod 进行验证
- 可复用性:通用模式避免了代码重复
- 可扩展性:易于添加新工具和类别
- 可维护性:关注点分离清晰
- 性能:高效的注册和验证机制
🛠️ 可用工具
专辑(4 种工具)
get_album:获取详细的专辑信息
get_album_tracks:获取特定专辑中的曲目
get_new_releases:发现新发行的专辑
search_albums:按关键词搜索专辑
艺术家(6 种工具)
get_artist:获取详细的艺术家信息
get_artist_albums:获取艺术家的专辑
get_artist_top_tracks:获取艺术家最热门的曲目
search_artists:按关键词搜索艺术家
get_followed_artists:获取用户关注的艺术家
get_top_artists:获取用户的热门艺术家
曲目(8 种工具)
get_track:获取详细的曲目信息
search_tracks:按关键词搜索曲目
get_liked_tracks:获取用户收藏/喜欢的曲目
save_tracks:将曲目添加到用户的音乐库
remove_tracks:从用户的音乐库中移除曲目
get_top_tracks:获取用户的热门曲目
get_recently_played:获取最近播放的曲目
get_track_lyrics:获取曲目的纯文本歌词
播放列表(10 种工具)
get_playlist:获取播放列表详情
get_user_playlists:获取用户的播放列表
get_playlist_tracks:获取播放列表中的曲目
create_playlist:创建新的播放列表
add_to_playlist:将曲目添加到播放列表
remove_from_playlist:从播放列表中移除曲目
search_playlists:按关键词搜索播放列表
get_categories:获取浏览类别
save_playlist:关注/收藏用户创建的播放列表
unsave_playlist:取消关注/收藏播放列表
播放(10 种工具)
get_currently_playing:获取当前播放信息
start_playback:开始音乐播放
resume_player:恢复暂停的播放
pause_player:暂停当前播放
skip_to_next:跳到下一首曲目
skip_to_previous:跳到上一首曲目
set_volume:调整播放音量
add_to_queue:将歌曲添加到播放队列
get_devices:获取可用的播放设备
transfer_playback:在设备之间切换播放
用户(1 种工具)
get_user_profile:获取当前用户的个人资料信息
搜索(2 种工具)
search_music:搜索曲目、艺术家、专辑或播放列表
search_and_play_music:搜索内容并立即开始播放
愿你与 AI 一同享受愉快的音乐流媒体体验!🎵🤖