Spotify播放列表生成器MCP服务器
模型上下文协议(MCP)服务器,使人工智能应用程序能够使用官方Spotify Web API搜索音乐曲目并管理播放列表。
特性
- 搜索音乐曲目:使用可自定义的搜索参数在Spotify上查找音乐曲目
- 获取曲目详细信息:检索有关特定曲目的全面信息
- 获取播放列表曲目:列出播放列表中的曲目
- 播放列表管理:完整的播放列表管理,包括创建、编辑和管理播放列表(需要OAuth设置)
设置
先决条件
- Node.js 18或更高版本
- Spotify开发者帐户
- Spotify应用程序凭据(客户端ID和客户端密码)
安装
- 克隆此存储库:
git clone https://github.com/danisss9/spotify-playlist-generator-mcp-server- 安装依赖项:
npm install- 创建Spotify应用程序:
- 转到 Spotify开发者仪表板 - 创建新应用程序 - 记下你的客户ID和客户密码 - 添加 http://localhost:8888/callback 重定向URI
- 设置环境变量:
# Create a .env file
echo "SPOTIFY_CLIENT_ID=your_client_id_here" > .env
echo "SPOTIFY_CLIENT_SECRET=your_client_secret_here" >> .env- 构建TypeScript代码:
npm run build运行服务器
对于自动重建的开发:
npm run dev生产:
npm start与MCP客户端一起使用
此服务器使用stdio传输,因此它可以与任何支持stdio的MCP客户端一起使用。
Claude桌面配置
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"spotify-playlist-generator": {
"command": "node",
"args": ["/absolute/path/to/spotify-playlist-generator/build/index.js"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}Visual Studio代码与GitHub副本配置
要在Visual Studio Code中将此MCP服务器与GitHub Copilot一起使用,您需要在VS Code设置中对其进行配置:
- 打开VS代码设置:新闻
Ctrl+,(Windows/Linux)或Cmd+,(macOS)
- 搜索MCP:在搜索栏中键入“mcp”
- 添加MCP服务器配置:将以下内容添加到您的VS代码设置JSON中:
{
"github.copilot.chat.mcp.servers": {
"spotify-playlist-generator": {
"command": "node",
"args": ["/absolute/path/to/spotify-playlist-generator/build/index.js"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}替代方案:使用设置UI
- 首选 文件>首选项>设置 (或使用
Ctrl+,) - 搜索“GitHub Copilot MCP”
- 点击“Github›Copilot \\8250 Chat:Mcp服务器”旁边的“在settings.json中编辑”
- 添加如上所示的服务器配置
环境变量设置
为了安全起见,您还可以在系统范围内设置环境变量,而不是在配置中设置:
Windows(PowerShell):
[Environment]::SetEnvironmentVariable("SPOTIFY_CLIENT_ID", "your_client_id_here", "User")
[Environment]::SetEnvironmentVariable("SPOTIFY_CLIENT_SECRET", "your_client_secret_here", "User")Windows(命令提示符):
setx SPOTIFY_CLIENT_ID "your_client_id_here"
setx SPOTIFY_CLIENT_SECRET "your_client_secret_here"macOS/Linux:
export SPOTIFY_CLIENT_ID="your_client_id_here"
export SPOTIFY_CLIENT_SECRET="your_client_secret_here"
# Add to ~/.bashrc, ~/.zshrc, or ~/.profile to persist
echo 'export SPOTIFY_CLIENT_ID="your_client_id_here"' >> ~/.bashrc
echo 'export SPOTIFY_CLIENT_SECRET="your_client_secret_here"' >> ~/.bashrc然后移除 env VS代码配置中的部分:
{
"github.copilot.chat.mcp.servers": {
"spotify-playlist-generator": {
"command": "node",
"args": ["/absolute/path/to/spotify-playlist-generator/build/index.js"]
}
}
}VS代码中的用法
配置后,您可以通过GitHub Copilot Chat使用MCP服务器:
- 打开Copilot聊天(
Ctrl+Alt+I或点击聊天图标) - 使用自然语言与Spotify互动:
- “搜索爵士乐曲目” - “创建一个名为“我的收藏夹”的新播放列表” - “将这些曲目添加到我的播放列表” - “显示此Spotify曲目的详细信息”
可用工具
OAuth必需工具(所有功能都需要身份验证)
authenticate_spotify
使用Spotify OAuth进行身份验证,以启用音乐搜索和播放列表管理功能。
参数:
getAuthUrl(boolean,默认值:false):设置为true以获取授权URLauthCode(字符串,可选):来自OAuth流的授权代码
获取auth_status
检查当前的Spotify身份验证状态。
参数: 无
搜索轨迹
在Spotify上搜索音乐曲目。
参数:
query(string):搜索曲目查询limit(数字,1-50,默认值:20):最大结果数market(字符串,可选):用于过滤结果的ISO 3166-1 alpha-2国家代码
get_track_details
获取特定Spotify曲目的详细信息。
参数:
trackId(字符串):Spotify曲目IDmarket(字符串,可选):市场的ISO 3166-1 alpha-2国家代码
创建播放列表
创建新的Spotify播放列表(需要身份验证)。
参数:
name(string):播放列表名称description(字符串,可选):播放列表描述public(boolean,默认值:false):播放列表是否应公开collaborative(boolean,默认值:false):播放列表是否应该是协作的
edit_playlist
编辑现有播放列表信息(需要身份验证)。
参数:
playlistId(string):要编辑的播放列表的IDname(字符串,可选):播放列表的新名称description(字符串,可选):播放列表的新描述public(布尔值,可选):新建公共设置collaborative(布尔值,可选):新的协作设置
注: 必须至少提供一个字段(名称、描述、公开或协作)才能更新。
add_to_playlist
将曲目添加到Spotify播放列表(需要身份验证)。
参数:
playlistId(string):目标播放列表IDtrackUris(字符串数组):要添加的Spotify曲目URI数组position(数字,可选):插入轨迹的位置(从0开始的索引)
list_playlists
列出用户的Spotify播放列表(需要身份验证)。
参数:
limit(数字,1-50,默认值:20):播放列表的最大数量offset(数字,最小值:0,默认值:0):分页的索引偏移量
get_playlist_tracks
从Spotify播放列表中获取曲目(需要身份验证)。
参数:
playlistId(string):要从中获取曲目的播放列表的IDlimit(数字,1-100,默认值:50):要返回的最大曲目数offset(数字,最小值:0,默认值:0):分页的索引偏移量
remove_from_playlist
从Spotify播放列表中删除曲目(需要身份验证)。
参数:
playlistId(string):要从中删除曲目的播放列表的IDtrackUris(字符串数组):要删除的Spotify曲目URI数组snapshotId(字符串,可选):用于版本控制的播放列表快照ID
OAuth身份验证设置
对于所有功能,您需要在Spotify上设置OAuth 2.0:
1.Spotify开发者仪表板设置
- 首选 Spotify开发者仪表板
- 使用您的Spotify帐户登录
- 点击“创建应用程序”
- 填写应用程序名称和描述
- 添加
http://localhost:8888/callback重定向URI - 复制您的客户端ID和客户端密码
2.环境配置
将您的OAuth凭据添加到 .env 文件:
SPOTIFY_CLIENT_ID=your_client_id_here
SPOTIFY_CLIENT_SECRET=your_client_secret_here3.身份验证流程
- 使用
authenticate_spotify工具与getAuthUrl: true - 在浏览器中打开提供的URL
- 登录您的Spotify帐户并授予权限
- 从回调URL复制授权码
- 使用
authenticate_spotify再次使用工具authCode参数
4.使用经过身份验证的功能
一旦通过身份验证,您可以:
- 搜索音乐曲目
- 获取详细的赛道信息
- 创建新播放列表
- 编辑现有播放列表信息(名称、描述、隐私)
- 将曲目添加到播放列表
- 列出您的播放列表
- 从播放列表中获取曲目
- 从播放列表中删除曲目
API限制
- 速率限制:Spotify API有费率限制(因端点而异)
- OAuth令牌:访问令牌在1小时后过期,需要刷新
- 市场限制:某些市场可能无法提供某些曲目
- 权限:OAuth作用域决定可用操作
发展
建筑
npm run build发展模式
npm run dev项目结构
src/
└── index.ts # Main server implementation
build/ # Compiled JavaScript output贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
故障排除
常见问题
- “SPOTIY_LIENT_ID和SPOTIF_LIENT_SECRET环境变量是必需的”
- 确保您已设置了两个环境变量 - 验证您的Spotify应用程序中的凭据是否有效
- “需要身份验证”错误
- 使用 authenticate_spotify 首先进行身份验证的工具 - 检查您的访问令牌是否已过期并重新进行身份验证
- “超出速率限制”错误
- 等待速率限制重置 - 降低API调用频率
- 构建错误
- 请确保您已安装Node.js 18+ - 跑 npm install 确保所有依赖项都已安装 - 检查TypeScript编译 npm run build
- “轨道不可用”错误
- 某些曲目可能在您的市场上不可用 - 尝试指定其他市场参数
安全考虑
- 永远不要将API密钥提交到版本控制
- 使用环境变量进行敏感配置
- 验证所有用户输入
- 实施适当的错误处理和日志记录
- 注意Spotify的API服务条款
______________________________________________________________________
*此项目是使用GitHub Copilot创建的*
