
Spotify Playlist Curator MCP Server

2025.04.10
0
JavaScript音乐播放列表管理AI 音乐推荐娱乐功能
Spotify Playlist Curator MCP Server 是一个帮助用户管理和优化 Spotify 播放列表的服务。它通过分析现有曲目的音频特征,并利用 Claude AI 根据心情、氛围、BPM 等音乐属性推荐歌曲,从而帮助用户创建和优化播放列表。
View on GitHub
Overview
基本能力
产品定位
Spotify Playlist Curator MCP Server 是一个专注于音乐播放列表管理的服务,旨在通过 AI 技术提升用户的音乐体验。
核心功能
- 连接到 Spotify 账户并访问用户的播放列表
- 分析播放列表中曲目的音频特征
- 生成播放列表的情绪、能量、节奏等特征的摘要
- 通过 Claude AI 基于播放列表分析推荐歌曲
- 在 Spotify 上搜索曲目
- 将推荐的曲目添加到播放列表中
- 创建新的播放列表
适用场景
- 用户希望优化现有播放列表的音乐风格
- 用户需要根据特定心情或活动创建新的播放列表
- 用户想要发现与现有播放列表风格相似的新歌曲
工具列表
getPlaylists
: 获取用户的 Spotify 播放列表getPlaylistDetails
: 获取特定播放列表的详细信息,包括曲目分析getClaudeRecommendations
: 基于播放列表分析获取 Claude AI 的歌曲推荐addRecommendationsToPlaylist
: 将推荐的曲目添加到播放列表中searchTracks
: 在 Spotify 上搜索曲目createPlaylist
: 创建新的 Spotify 播放列表
常见问题解答
- 如何获取 Spotify 开发者凭证? 访问 Spotify Developer Dashboard 创建新应用并获取 Client ID 和 Client Secret。
- 如何认证 Spotify 账户?
启动服务后访问
http://localhost:3000/login
并使用 Spotify 账户登录授权。
使用教程
使用依赖
- Node.js (v14 或更高版本)
- Spotify 开发者账户和注册应用
- 通过 MCP 访问 Claude
安装教程
-
克隆仓库:
git clone https://github.com/lechiffre1/Spotify-Playlist-Curator-MCP-Server.git cd Spotify-Playlist-Curator-MCP-Server
-
安装依赖:
npm install
-
创建
.env
文件:cp .env.example .env
-
设置 Spotify 开发者凭证:
- 访问 Spotify Developer Dashboard
- 创建新应用
- 添加
http://localhost:3000/callback
作为重定向 URI -
将 Client ID 和 Client Secret 复制到
.env
文件 -
启动服务:
npm start
调试方式
- 认证 Spotify 账户:
- 访问
http://localhost:3000/login
- 使用 Spotify 账户登录并授权应用
-
认证成功后关闭浏览器窗口并返回 MCP 客户端
-
使用 MCP 方法:
- 获取播放列表:
await client.getPlaylists();
- 获取播放列表详情:
await client.getPlaylistDetails({ playlistId: "your_playlist_id" });
- 获取 Claude 推荐:
await client.getClaudeRecommendations({ playlistId: "your_playlist_id", count: 10 });
- 添加推荐到播放列表:
await client.addRecommendationsToPlaylist({ playlistId: "your_playlist_id", trackUris: ["spotify:track:id1", "spotify:track:id2"] });
- 搜索曲目:
await client.searchTracks({ query: "search query", limit: 10 });
- 创建播放列表:
await client.createPlaylist({ name: "My New Playlist", description: "Created by Spotify Playlist Curator", isPublic: false });