Spotify MCP Server

Spotify MCP Server

用于控制 Spotify 播放的媒体控制协议服务器

Jopgood

开发者工具
访问服务器

README

Spotify MCP 服务器

一个媒体控制协议 (MCP) 服务器,提供一个统一的接口,用于跨不同设备和应用程序控制 Spotify 播放。

功能

  • 控制 Spotify 播放(播放、暂停、跳过、上一首)
  • 调整音量
  • 搜索和播放特定的曲目、专辑或播放列表
  • 获取当前播放信息
  • RESTful API,便于与其他应用程序集成
  • AI 助手集成,用于通过自然语言控制 Spotify
  • 语音控制界面,用于向 Spotify 发出语音命令

前提条件

  • Node.js (v16 或更高版本)
  • npm (v8 或更高版本)
  • Spotify Premium 帐户
  • Spotify 开发者帐户和注册的应用程序

设置

  1. 克隆此存储库:

    git clone https://github.com/Jopgood/spotify-mcp-server.git
    cd spotify-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 在根目录中创建一个 .env 文件,内容如下:

    CLIENT_ID=your_spotify_client_id
    CLIENT_SECRET=your_spotify_client_secret
    REDIRECT_URI=http://localhost:8888/callback
    PORT=8888
    SESSION_SECRET=your_random_session_secret
    AI_WEBHOOK_API_KEY=your_secure_api_key_for_ai_assistant
    BRIDGE_PORT=3001
    VOICE_PORT=3002
    
  4. Spotify 开发者仪表板 注册一个 Spotify 应用程序,并记下您的 Client ID 和 Client Secret。

用法

  1. 启动 MCP 服务器:

    npm start
    
  2. 打开浏览器并导航到 http://localhost:8888 以使用 Spotify 进行身份验证。

  3. 身份验证后,您可以使用 API 端点来控制 Spotify。

API 端点

  • GET /api/status - 获取当前播放状态
  • POST /api/play - 开始或恢复播放
  • POST /api/pause - 暂停播放
  • POST /api/next - 跳到下一首曲目
  • POST /api/previous - 转到上一首曲目
  • POST /api/volume - 设置音量(body: { "volume": 50 }
  • POST /api/seek - 搜索位置(body: { "position_ms": 30000 }
  • POST /api/playTrack - 播放特定曲目(body: { "uri": "spotify:track:xxxx" }

客户端示例

使用 curl

# 播放
curl -X POST http://localhost:8888/api/play

# 暂停
curl -X POST http://localhost:8888/api/pause

# 下一首曲目
curl -X POST http://localhost:8888/api/next

使用 JavaScript (fetch)

// 播放特定曲目
fetch('http://localhost:8888/api/playTrack', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    uri: 'spotify:track:6rqhFgbbKwnb9MLmUQDhG6'
  })
})
.then(response => response.json())
.then(data => console.log(data));

命令行界面

包含一个命令行界面,用于从终端控制 Spotify:

# 运行 CLI
node client/spotify-cli.js

# 可用命令
status          # 显示当前播放状态
play            # 开始/恢复播放
pause           # 暂停播放
next            # 跳到下一首曲目
prev            # 转到上一首曲目
volume 50       # 将音量设置为 50%
search bohemian # 搜索标题中包含 "bohemian" 的曲目
play-track spotify:track:xxxx # 按 URI 播放特定曲目

AI 助手集成

此 MCP 服务器包含一个 AI Webhook,允许像 Claude 这样的 AI 助手通过自然语言命令控制您的 Spotify。

设置集成

  1. 在您的 .env 文件中配置 Webhook API 密钥:

    AI_WEBHOOK_API_KEY=your_secure_random_key
    
  2. 启动 Claude-Spotify 桥接服务:

    node bridge/claude-spotify-bridge.js
    
  3. 默认情况下,该桥接将在端口 3001 上运行。您可以通过将 BRIDGE_PORT=xxxx 添加到您的 .env 文件来自定义此设置。

运行 Claude Spotify 命令

使用提供的客户端脚本来执行 Claude 的 Spotify 命令:

node client/claude-spotify-client.js "play bohemian rhapsody"

支持的自然语言命令

AI Webhook 支持以下命令:

  • "Play Bohemian Rhapsody by Queen"
  • "Play playlist chill vibes"
  • "Pause the music"
  • "Resume playback"
  • "Skip to the next track"
  • "Go back to the previous song"
  • "Set volume to 50%"
  • "Turn volume up"
  • "Turn volume down"
  • "What's currently playing?"

语音控制

对于免提操作,您可以使用语音控制界面向 Spotify 发出语音命令。

设置语音控制

  1. 启动语音控制服务器:

    node speech/voice-server.js
    
  2. 打开浏览器并导航到 http://localhost:3002 以访问语音控制界面。

  3. 确保桥接服务正在运行:

    node bridge/claude-spotify-bridge.js
    
  4. 单击麦克风按钮并说出您的命令,以 "Claude" 开头(例如,"Claude, play some jazz music")。

浏览器兼容性

语音控制界面使用 Web Speech API,并非所有浏览器都支持该 API。 为了获得最佳效果,请使用:

  • Google Chrome(推荐)
  • Microsoft Edge
  • Safari

Firefox 对 Web Speech API 的支持有限,可能无法按预期工作。

自定义语音触发器

您可以通过以下方式将触发短语从 "Claude" 更改为您喜欢的任何内容:

  1. 转到语音控制界面中的“设置”部分
  2. 输入您喜欢的触发短语
  3. 单击“保存设置”

您的首选项将保存在您的浏览器中以供将来会话使用。

一次运行所有内容

要运行完整的系统(MCP 服务器、桥接和语音界面),您可以:

  1. 在单独的终端窗口中启动每个组件:

    # 终端 1:启动 MCP 服务器
    npm start
    
    # 终端 2:启动 Claude 桥接
    node bridge/claude-spotify-bridge.js
    
    # 终端 3:启动语音界面
    node speech/voice-server.js
    
  2. 或者创建一个简单的启动脚本来一次运行所有内容:

    // 在根目录中创建一个名为 start-all.js 的文件,内容如下:
    const { spawn } = require('child_process');
    
    const mcp = spawn('npm', ['start'], { stdio: 'inherit' });
    setTimeout(() => {
      const bridge = spawn('node', ['bridge/claude-spotify-bridge.js'], { stdio: 'inherit' });
      const voice = spawn('node', ['speech/voice-server.js'], { stdio: 'inherit' });
    }, 2000);
    
    // 用法:node start-all.js
    

故障排除

  • "端口已被占用" 错误:

    • 更改您的 .env 文件中的端口号:PORTBRIDGE_PORTVOICE_PORT
  • 身份验证问题:

    • 确保您已访问 http://localhost:8888 上的 Web 界面并使用 Spotify 进行了身份验证
    • 检查您的 Client ID 和 Secret 在 .env 中是否正确
  • 语音控制不起作用:

    • 确保您使用的是兼容的浏览器(推荐 Chrome)
    • 检查您的麦克风是否正常工作并具有必要的权限
    • 验证语音界面设置中的桥接 URL 是否与您的桥接服务器地址匹配
  • "没有活动设备" 错误:

    • 在任何设备上的 Spotify 中开始播放内容,然后重试
    • Spotify 需要一个活动设备来控制播放

开发

要在开发模式下运行并自动重新加载:

npm run dev

许可证

MIT

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript