Spotify MCP服务

一个基于Model Context Protocol规范的Spotify集成服务,提供OAuth授权流程和播放控制功能。

  • by Tony-ArtZ
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 Tony-ArtZ/mcp-spotify

使用说明

Spotify MCP服务器

一个模型上下文协议(MCP)服务器,提供Spotify与OAuth授权流的集成,基于 模型上下文协议规范.

文件

  • index.ts -MCP服务器设置和StreamableHTTPServerTransport工具注册
  • spotify.ts -Spotify API代币管理服务
  • auth.ts -使用Drizzle适配器进行更好的口型配置
  • db/ -使用Drizzle ORMotocol(MCP)服务器的数据库模式和连接,该服务器提供Spotify与基于OAuth授权流的集成 模型上下文协议规范.

特性

  • OAuth授权流程:使用Spotify OAuth实现MCP的授权规范
  • 流式HTTP传输:使用MCP的StreamableHTTPServerTransport进行高效通信
  • 自动令牌刷新:处理Spotify访问令牌过期并自动刷新
  • 简单架构:身份验证、Spotify API调用和MCP工具之间的清晰分离
  • 全面的Spotify工具:用于控制Spotify播放的多种工具

可用工具

回放控制

  • getCurrentlyPlaying -获取当前播放曲目的信息
  • pausePlayback -暂停Spotify播放
  • resumePlayback -恢复Spotify播放
  • skipToNext -跳到下一首曲目
  • skipToPrevious -跳至上一曲目
  • setVolume -设置播放音量(当前默认为50%)

轨道发现

  • searchTracks -在Spotify上搜索曲目
  • playTrack -播放特定曲目(增强功能即将推出)

用户信息

  • getUserProfile -获取用户的Spotify个人资料信息

建筑

文件

  • index.ts -MCP服务器设置和工具注册
  • spotify.ts -Spotify API代币管理服务
  • auth.ts -更好的身份验证配置
  • db/ -数据库架构和连接

许可证管理

这 SpotifyService 类自动处理:

  • 令牌到期检查(带5分钟缓冲区)
  • 使用刷新令牌自动刷新令牌
  • 新令牌的数据库更新
  • 刷新失败的错误处理

主要特点

  • 令牌刷新:在令牌过期之前自动刷新令牌
  • 数据库集成:使用Drizzle ORM和PostgreSQL进行令牌存储
  • 错误处理:优雅地处理API错误和令牌问题
  • 会话管理:使用Better Auth进行安全会话处理

设置

  1. 设置环境变量:

    SPOTIFY_CLIENT_ID=your_spotify_client_id
    SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
    
  2. 在中配置数据库连接 db/index.ts

  3. 运行数据库迁移:

    bun run drizzle-kit push
    
  4. 启动服务器:

    bun run index.ts
    

用法

  1. 引导到 http://localhost:3000/sign-in 通过Spotify进行身份验证
  2. 通过MCP客户端使用MCP工具
  3. 服务器在后台自动处理令牌刷新

技术说明

  • 将BetterAuth与Drizzle适配器一起用于Spotify的OAuth流
  • 实施MCP授权规范以进行安全身份验证
  • 利用StreamableHTTPServerTransport进行高效通信
  • 通过Drizzle ORM将令牌安全地存储在PostgreSQL数据库中
  • 清晰地分离身份验证、API调用和MCP工具之间的问题

安装

要安装依赖项,请执行以下操作:

bun install

要运行:

bun run index.ts

此项目是使用创建的 bun init 在bun v1.2.13中。 包子 是一个快速的一体化JavaScript运行时。

许可证

MIT许可证