Spotify语音控制服务

一个通过自然语言命令控制Spotify播放的音乐控制服务,支持播放列表、专辑、曲目搜索、播放控制和睡眠定时器功能。

  • by Ackberry
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Ackberry/spotify_mcp

使用说明

用于Gemini CLI的Spotify MCP服务器

一种模型上下文协议(MCP)服务器,使Google Gemini CLI能够通过自然语言命令控制Spotify。

特性

  • 播放控制:播放播放列表、专辑和曲目
  • 搜索:按歌曲、艺术家或专辑查找音乐
  • 回放控制:播放、暂停、跳过和调整音量
  • 睡眠定时器:在指定的持续时间后自动暂停播放

先决条件

  • Node.js 18+
  • npm或纱线
  • Spotify开发者帐户
  • 已安装Google Gemini CLI(npm install -g @google/gemini-cli)

快速开始

1.安装依赖项

npm install
npm run build

2.Spotify开发者设置

  1. 首选 Spotify开发者仪表板
  2. 创建新应用程序
  3. 复制您的 客户端ID 和 客户端密钥
  4. 点击“编辑设置”→添加重定向类型: http://127.0.0.1:3000/callback
  5. 点击“保存”

重要提示: Spotify需要 127.0.0.1 (不是 localhost)用于重定向URI。

3.配置环境

创建一个 .env 项目根目录中的文件:

SPOTIFY_CLIENT_ID=your_client_id_here
SPOTIFY_CLIENT_SECRET=your_client_secret_here
SPOTIFY_REDIRECT_URI=http://127.0.0.1:3000/callback

4.身份验证

npm run auth

这将打开您的浏览器进行Spotify授权,并将令牌保存到 tokens.json (一次性设置)。

5.配置Gemini CLI

生成 .gemini/settings.json 从你的 .env 文件:

npm run setup:gemini

此脚本会自动执行以下操作:

  • 阅读您的 .env 文件
  • 创造 .gemini/settings.json 使用正确的路径和API密钥
  • 填充您的所有环境变量 .env 文件

注: 跑 npm run setup:gemini 每当您更新您的 .env 文件或构建项目后。

6.使用它!

配置后,启动Gemini CLI并询问:

  • “播放我的每周发现播放列表”
  • “搜索披头士乐队的歌曲”
  • “暂停Spotify”
  • “设置30分钟睡眠计时器”
  • “现在在玩什么?”

可用的MCP工具

  • play_playlist -按名称播放播放列表
  • play_album -按名称播放专辑
  • play_track -按名称播放曲目
  • search_music -搜索音乐
  • control_playback -控制播放(播放、暂停、跳过、音量)
  • get_current_playing -获取当前播放的曲目
  • set_sleep_timer -设置睡眠定时器
  • cancel_sleep_timer -取消活动计时器
  • get_active_timers -列出活动计时器

故障排除

身份验证问题

  • 重定向URI不匹配:确保 .env Spotify Dashboard具有完全相同的URI(http://127.0.0.1:3000/callback)
  • 重定向URI无效:必须使用 127.0.0.1 不 localhost (Spotify要求)
  • 令牌已过期:删除 tokens.json 然后跑 npm run auth 再次

Gemini CLI找不到服务器

  • 验证到的绝对路径 dist/server.js 是正确的
  • 检查是否设置了环境变量(如果使用方法2)
  • 确保Node.js在PATH中
  • 手动测试服务器: node dist/server.js (应该开始时没有错误)

服务器错误

  • 确保Spotify应用程序已打开并且设备处于活动状态
  • 验证 tokens.json 存在且有效
  • 检查网络连接

发展

# Build TypeScript
npm run build

# Run MCP server (for testing)
npm start

# Authenticate with Spotify
npm run auth

# Development mode (auto-reload)
npm run dev

项目结构

src/
  server.ts              # MCP server entry point
  auth-helper.ts         # Authentication helper script
  spotify/
    auth.ts             # OAuth authentication
    client.ts           # Spotify API client
  tools/                # MCP tool implementations
  timer.ts              # Timer manager