Spotify播放列表管理服务

一个通过分析现有曲目并使用Claude AI根据心情、氛围、BPM等音乐属性推荐歌曲来帮助管理Spotify播放列表的MCP服务器。

  • by lechiffre1
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 lechiffre1/spotify-playlist-curator-mcp-server

使用说明

Spotify播放列表管理员MCP服务器

MCP服务器,通过分析您现有的曲目并使用Claude AI根据情绪、氛围、BPM和其他音乐属性推荐歌曲,帮助管理Spotify播放列表。

特性

  • 连接到您的Spotify帐户并访问您的播放列表
  • 分析播放列表中曲目的音频特性
  • 生成播放列表情绪、能量、节奏和其他特征的摘要
  • 根据播放列表分析从Claude AI获取歌曲推荐
  • 在Spotify上搜索曲目
  • 将推荐曲目添加到播放列表
  • 创建新播放列表

设置

先决条件

  • Node.js(v14或更高版本)
  • Spotify开发者帐户和注册应用程序
  • Claude通过MCP(机器对话协议)访问

安装

  1. 克隆此存储库:

    git clone https://github.com/lechiffre1/Spotify-Playlist-Curator-MCP-Server.git
    cd Spotify-Playlist-Curator-MCP-Server
    
  2. 安装依赖项:

    npm install
    
  3. 创建一个 .env 基于提供的文件 .env.example:

    cp .env.example .env
    
  4. 设置您的Spotify开发者凭据:

    • 首选 Spotify开发者仪表板
    • 创建新应用程序
    • 添加 http://localhost:3000/callback 作为重定向URI
    • 将您的客户ID和客户密码复制到 .env 文件
  5. 启动服务器:

    npm start
    

用法

认证

启动服务器时,您需要先通过Spotify的身份验证:

  1. 访问 http://localhost:3000/login 在您的浏览器中
  2. 使用您的Spotify帐户登录并授权该应用程序
  3. 成功验证后,您可以关闭浏览器窗口并返回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);

许可证

麻省理工学院