Spotify数据分析服务器

一个用于Spotify播放列表分析和艺术家趋势发现的模型上下文协议(MCP)服务器,提供认证、数据分析和趋势发现功能。

  • by eLiebman
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 eliebman/spotify-mcp-server

使用说明

Spotify MCP服务器

用于Spotify分析和播放列表分析的模型上下文协议(MCP)服务器。该服务器提供工具,用于与Spotify进行身份验证,并分析播放列表数据,以发现相关艺术家的趋势。

特性

  • 播放列表分析:按曲目搜索播放列表,分析艺术家关系
  • 轨迹分析:获取曲目受欢迎程度和详细信息
  • 艺术家趋势分析:发现相关艺术家和流派模式

快速开始

1.设置Spotify应用程序

  1. 首选 Spotify开发者仪表板
  2. 创建新应用程序
  3. 记下你的 客户端ID 和 客户端密钥
  4. 添加 https://example.com/callback 作为重定向URI(用于OAuth流)

2.安装依赖项

cd spotify-mcp-server
npm install

3.配置环境

cp env.example .env

编辑 .env 使用您的Spotify应用凭据:

SPOTIFY_CLIENT_ID=your_client_id_here
SPOTIFY_CLIENT_SECRET=your_client_secret_here
SPOTIFY_REDIRECT_URI=https://example.com/callback

4.运行MCP服务器

npm run dev

身份验证方法

方法1:简单CLI身份验证(建议用于测试)

使用客户端凭据流-无需浏览器交互:

node spotify-cli.js login

此方法适用于公共数据访问(曲目、专辑、播放列表、艺术家信息)。

方法2:完整的OAuth 2.0流程(针对用户特定数据)

要访问用户的私人播放列表和个人数据:

  1. 生成身份验证URL: node spotify-cli.js generate
  2. 用户授权:访问URL,登录Spotify
  3. 完成身份验证: node spotify-cli.js auth "CODE" "CODE_VERIFIER"

身份验证持久性

  • 令牌保存到 .spotify-tokens.json (忽略)
  • 过期令牌的自动令牌刷新
  • OAuth与客户端凭据令牌的单独存储

可用CLI命令

快速命令参考


# Help
help                              # Show all commands grouped by category
help CATEGORY                     # Show detailed help for a given category

# Authentication
login                             # Simple CLI auth
status                            # Check auth status
generate                          # Generate OAuth URL
auth "CODE" "VERIFIER"            # Complete OAuth

# User & System
profile                           # Get user profile
tools                             # List available MCP tools

# Search
search "TRACK_NAME" "ARTIST"      # Search for tracks
albums "ARTIST_NAME"              # Find artist's albums
playlists "TRACK_NAME" "ARTIST"   # Find playlists containing track

# Analytics
popularity "TRACK_ID"             # Get track popularity
album-popularity "ALBUM_ID"       # Get album popularity score
artist-popularity "ARTIST_ID"     # Get artist popularity score
analyze-single "TRACK_ID"         # Comprehensive single analysis
analyze-genre "ARTIST_ID"         # Analyze artist genre information
trends "ARTIST_ID"                # Analyze artist trends
explore-metrics "ARTIST_ID"       # Explore comprehensive artist metrics

# Utility
album-tracks "ALBUM_ID"           # Get album tracks with popularity

获取Spotify ID

  • 轨道ID:来自Spotify URL https://open.spotify.com/track/TRACK_ID
  • 艺术家ID:来自Spotify URL https://open.spotify.com/artist/ARTIST_ID
  • 播放列表ID:来自Spotify URL https://open.spotify.com/playlist/PLAYLIST_ID

可用的MCP工具

  • authenticateSimple:使用客户端凭据的简单CLI身份验证

    • 无需参数
    • 返回:身份验证状态
    • 公共数据访问工作
  • generateAuthUrl:为完整OAuth生成Spotify授权URL

    • 可选: state 安全参数
    • 返回:验证URL和代码验证器
  • authenticate:完成OAuth流程

    • 必修的: code (来自回调), codeVerifier (来自generateAuthUrl)
    • 返回:身份验证状态
  • getAuthStatus:检查当前身份验证状态

  • getCurrentUserProfile:获取当前用户的Spotify个人资料

    • 返回:用户ID、显示名称、电子邮件、国家、关注者等。
  • testConnection:测试API连接和身份验证

  • getTrackPopularity:获取曲目的流行度得分

    • 必修的: trackId (Spotify曲目ID)
    • 返回:人气得分(0-100),曲目详情
  • searchPlaylistsByTrack:查找包含特定曲目的播放列表

    • 必修的: trackName, artistName
    • 可选: limit (默认值:20)
    • 返回:包含曲目计数、所有者和描述的播放列表列表
  • analyzeArtistTrends:分析艺术家关系和趋势

    • 必修的: artistId (Spotify艺术家ID)
    • 返回:艺术家信息、相关艺术家、流派分析、流行趋势
  • searchTracks:按姓名和艺术家搜索曲目

    • 必修的: query (搜索查询,例如,'曲目:“歌曲名称”艺术家:“艺术家名称”')
    • 可选: limit (默认值:20)
    • 返回:曲目详细信息,包括ID、流行度、专辑信息
  • searchArtistAlbums:查找艺术家的专辑和单曲

    • 必修的: artistName (要搜索的艺术家姓名)
    • 可选: limit (默认值:10)
    • 返回:艺术家信息、按发行日期排序的完整唱片、最新专辑
  • getAlbumTracks:获取包含流行度评分的专辑中的所有曲目

    • 必修的: albumId (Spotify专辑ID)
    • 可选: limit (默认值:50)
    • 返回:专辑信息、所有受欢迎程度评分的曲目、分析(平均、最受欢迎/最不受欢迎的曲目)
  • getAlbumPopularity:获取专辑流行度和详细信息

    • 必修的: albumId (Spotify专辑ID)
    • 返回:专辑流行度得分、发行信息、标签、流派、总曲目
  • getArtistPopularity:获取艺术家人气和个人资料信息

    • 必修的: artistId (Spotify艺术家ID)
    • 返回:艺术家人气评分、关注者数量、流派、个人资料图片
  • analyzeSingle:具有视觉元素的综合单项分析

    • 必修的: trackId (Spotify曲目ID)
    • 可选: includeAlbumTracks (分析专辑中的其他曲目,默认值:false)
    • 回报:曲目与专辑流行度比较、专辑封面、表演见解、营销建议

故障排除

调试模式

集 NODE_ENV=development 对于详细日志记录:

NODE_ENV=development npm run dev

许可证

麻省理工学院