Spotify播放列表管理员MCP服务器
MCP服务器,通过分析您现有的曲目并使用Claude AI根据情绪、氛围、BPM和其他音乐属性推荐歌曲,帮助管理Spotify播放列表。
特性
- 连接到您的Spotify帐户并访问您的播放列表
- 分析播放列表中曲目的音频特性
- 生成播放列表情绪、能量、节奏和其他特征的摘要
- 根据播放列表分析从Claude AI获取歌曲推荐
- 在Spotify上搜索曲目
- 将推荐曲目添加到播放列表
- 创建新播放列表
设置
先决条件
- Node.js(v14或更高版本)
- Spotify开发者帐户和注册应用程序
- Claude通过MCP(机器对话协议)访问
安装
- 克隆此存储库:
git clone https://github.com/lechiffre1/Spotify-Playlist-Curator-MCP-Server.git
cd Spotify-Playlist-Curator-MCP-Server- 安装依赖项:
npm install- 创建一个
.env基于提供的文件.env.example:
cp .env.example .env- 设置您的Spotify开发者凭据:
- 首选 Spotify开发者仪表板 - 创建新应用程序 - 添加 http://localhost:3000/callback 作为重定向URI - 将您的客户ID和客户密码复制到 .env 文件
- 启动服务器:
npm start用法
认证
启动服务器时,您需要先通过Spotify的身份验证:
- 访问
http://localhost:3000/login在您的浏览器中 - 使用您的Spotify帐户登录并授权该应用程序
- 成功验证后,您可以关闭浏览器窗口并返回MCP客户端
MCP方法
以下MCP方法可用:
getPlaylists
返回您的Spotify播放列表列表。
const response = await client.getPlaylists();getPlaylistDetails
获取特定播放列表的详细信息,包括曲目分析。
const response = await client.getPlaylistDetails({
playlistId: "your_playlist_id"
});getClaudeRecommendations
根据播放列表分析从Claude AI获取歌曲推荐。
const response = await client.getClaudeRecommendations({
playlistId: "your_playlist_id",
count: 10 // Optional, defaults to 10
});addRecommendationsToPlaylist
将推荐曲目添加到播放列表中。
const response = await client.addRecommendationsToPlaylist({
playlistId: "your_playlist_id",
trackUris: ["spotify:track:id1", "spotify:track:id2", ...]
});searchTracks
在Spotify上搜索曲目。
const response = await client.searchTracks({
query: "search query",
limit: 10 // Optional, defaults to 10
});createPlaylist
创建新的Spotify播放列表。
const response = await client.createPlaylist({
name: "My New Playlist",
description: "Created by Spotify Playlist Curator", // Optional
isPublic: false // Optional, defaults to false
});客户端使用示例
import { createClient } from '@anthropic-ai/mcp-client';
async function main() {
// Create MCP client
const client = createClient({
serverUrl: 'http://localhost:3000',
anthropicApiKey: 'your_anthropic_api_key' // Required for Claude integration
});
// 1. Get user playlists
const playlists = await client.getPlaylists();
console.log('Your playlists:', playlists);
// 2. Select a playlist and get its details
const playlistId = playlists.playlists[0].id;
const playlistDetails = await client.getPlaylistDetails({ playlistId });
console.log('Playlist summary:', playlistDetails.summary);
// 3. Get recommendations from Claude
const recommendations = await client.getClaudeRecommendations({ playlistId });
console.log('Claude recommendations:', recommendations.claudeRecommendations);
// 4. Add recommendations to the playlist
const trackUris = recommendations.claudeRecommendations
.filter(track => track.matched)
.map(track => track.uri);
if (trackUris.length > 0) {
const result = await client.addRecommendationsToPlaylist({ playlistId, trackUris });
console.log('Added recommendations:', result);
}
}
main().catch(console.error);许可证
麻省理工学院
