使用说明
Spotify MCP服务器
一种媒体控制协议(MCP)服务器,提供统一的接口,用于控制不同设备和应用程序之间的Spotify播放。
特性
- 控制Spotify播放(播放、暂停、跳过、上一页)
- 调节音量
- 搜索并播放特定曲目、专辑或播放列表
- 获取当前播放信息
- RESTful API,可轻松与其他应用程序集成
- AI助手集成,用自然语言控制Spotify
- 语音控制界面,用于向Spotify发出指令
先决条件
- Node.js(v16或更高版本)
- npm(v8或更高版本)
- Spotify高级帐户
- Spotify开发者帐户和注册应用程序
设置
-
克隆此存储库:
git clone https://github.com/Jopgood/spotify-mcp-server.git cd spotify-mcp-server -
安装依赖项:
npm install -
创建一个
.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 -
在以下网址注册Spotify应用程序 Spotify开发者仪表板 并记下您的客户端ID和客户端密码。
用法
-
启动MCP服务器:
npm start -
打开浏览器并导航到
http://localhost:8888通过Spotify进行身份验证。 -
一旦通过验证,您就可以使用API端点来控制Spotify。
API终点
GET /api/status-获取当前播放状态POST /api/play-开始或恢复播放POST /api/pause-暂停播放POST /api/next-跳到下一首曲目POST /api/previous-转到上一曲目POST /api/volume-设置体积(主体:{ "volume": 50 })POST /api/seek-寻求定位(身体:{ "position_ms": 30000 })POST /api/playTrack-播放特定曲目(身体:{ "uri": "spotify:track:xxxx" })
客户示例
使用curl
# Play
curl -X POST http://localhost:8888/api/play
# Pause
curl -X POST http://localhost:8888/api/pause
# Next track
curl -X POST http://localhost:8888/api/next
使用JavaScript(fetch)
// Play a specific track
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:
# Run the CLI
node client/spotify-cli.js
# Available commands
status # Show current playback status
play # Start/resume playback
pause # Pause playback
next # Skip to next track
prev # Go to previous track
volume 50 # Set volume to 50%
search bohemian # Search for tracks with "bohemian" in the title
play-track spotify:track:xxxx # Play a specific track by URI
AI助手集成
此MCP服务器包含一个AI webhook,允许像Claude这样的AI助手通过自然语言命令控制您的Spotify。
设置集成
-
在您的
.env文件:AI_WEBHOOK_API_KEY=your_secure_random_key -
启动Claude Spotify桥接服务:
node bridge/claude-spotify-bridge.js -
默认情况下,网桥将在端口3001上运行。您可以通过添加来对此进行自定义
BRIDGE_PORT=xxxx到你的.env文件。
运行Claude Spotify命令
使用提供的客户端脚本执行Claude的Spotify命令:
node client/claude-spotify-client.js "play bohemian rhapsody"
支持的自然语言命令
AI webhook支持以下命令:
- “演奏女王的波西米亚狂想曲”
- “播放播放列表寒意”
- “暂停音乐”
- “恢复播放”
- “跳到下一首曲目”
- “回到上一首歌”
- “将音量设置为50%”
- “调高音量”
- “调低音量”
- “现在在玩什么?”
语音控制
对于免提操作,您可以使用语音控制界面向Spotify发出命令。
设置语音控制
-
启动语音控制服务器:
node speech/voice-server.js -
打开浏览器并导航到
http://localhost:3002以访问语音控制界面。 -
确保网桥服务正在运行:
node bridge/claude-spotify-bridge.js -
点击麦克风按钮,说出你的命令,以“克劳德”开头(例如,“克劳德,播放一些爵士音乐”)。
浏览器兼容性
语音控制界面使用Web Speech API,这不是所有浏览器都支持的。为了获得最佳效果,请使用:
- 谷歌Chrome浏览器(推荐)
- 微软边缘
- 游猎
Firefox对Web Speech API的支持有限,可能无法正常工作。
自定义语音触发器
您可以通过以下方式将触发短语从“Claude”更改为您喜欢的任何短语:
- 转到语音控制界面中的设置部分
- 输入您偏好的触发短语
- 点击“保存设置”
您的偏好设置将保存在浏览器中,以备将来会话使用。
一次运行所有内容
要运行整个系统(MCP服务器、网桥和语音接口),您可以:
-
在单独的终端窗口中启动每个组件:
# Terminal 1: Start MCP server npm start # Terminal 2: Start Claude bridge node bridge/claude-spotify-bridge.js # Terminal 3: Start voice interface node speech/voice-server.js -
或者创建一个简单的启动脚本,一次运行所有内容:
// Create a file called start-all.js in the root directory with: 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); // Usage: node start-all.js
故障排除
-
“端口已在使用中”错误:
- 更改您的端口号
.env文件:PORT,BRIDGE_PORT,VOICE_PORT
- 更改您的端口号
-
身份验证问题:
- 确保您已访问了以下网址的web界面
http://localhost:8888并通过Spotify认证 - 检查您的客户ID和密码是否正确
.env
- 确保您已访问了以下网址的web界面
-
语音控制不工作:
- 确保您使用的是兼容的浏览器(建议使用Chrome浏览器)
- 检查您的麦克风是否正常工作并具有必要的权限
- 验证语音界面设置中的网桥URL是否与您的网桥服务器地址匹配
-
“无活动设备”错误:
- 在任何设备上开始播放Spotify中的内容,然后重试
- Spotify需要活动设备来控制播放
发展
要在开发模式下运行并自动重新加载,请执行以下操作:
npm run dev
许可证
麻省理工学院