Spotify MCP 服务器
一个通过Spotify Web API提供访问Spotify音乐数据的FastMCP服务器。
🎵 特点
- 搜索曲目按歌曲名、歌手或歌词查找歌曲
- 搜索艺术家发现艺术家并获取他们的信息
- 艺术家热门曲目获取任何艺术家的最热门曲目
注自2024年11月27日起,推荐API将不再适用于新的Spotify应用。请参阅 Spotify的公告 如需更多详情。
🚀 快速入门
先决条件
- Python 3.8及以上版本
- Spotify开发者账户
- Spotify 应用凭据(客户端ID和客户端密钥)
本地开发
- 克隆并导航到仓库:
git clone
cd mcp-spotify- 创建一个虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 设置Spotify API凭据:
export SPOTIFY_CLIENT_ID="your_client_id"
export SPOTIFY_CLIENT_SECRET="your_client_secret"- 启动服务器:
python src/server.py服务器将在 http://localhost:8000 以MCP端点位于 http://localhost:8000/mcp。
获取Spotify API凭据
- 首选 Spotify开发者仪表板
- 使用您的Spotify帐户登录
- 点击“创建应用”
- 填写应用程序详情:
- 应用名称: Your MCP Server (或任何你喜欢的名字) - 应用描述: MCP server for Spotify integration - 网站: https://spotify-mcp.onrender.com (使用您已部署的URL) - 重定向URI: https://spotify-mcp.onrender.com (使用你已部署的URL)
- 选择“Web API” 当被问及API/SDK时
- 点击“保存”
- 复制你的
Client ID和Client Secret
注: 由于Spotify出于安全考虑要求使用HTTPS,因此请使用您已部署的Render URL(而非localhost)作为重定向URI。
🚢 部署
部署到Render

步骤:
- 点击下方的“部署到Render”按钮 (或者前往 render.com(可直接作为域名翻译,不改变其形式,意为“渲染网”或保持原域名不变,具体翻译取决于上下文或品牌意图) 并注册/登录)
- 将您的GitHub帐户连接到Render (如果你还没有的话)
- 创建一个新的Web服务:
- 连接这个仓库 - 名字: spotify-mcp - 环境: Python 3 - 计划: Free - 构建命令: pip install -r requirements.txt - 启动命令: python src/server.py
- 设置环境变量:
- 前往您的渲染服务仪表板 - 点击“环境”选项卡 - 添加: - SPOTIFY_CLIENT_ID = your_client_id - SPOTIFY_CLIENT_SECRET 等于 your_client_secret - 点击“保存更改”
- 部署!
注:在Render的免费套餐中,服务在无活动约15分钟后会进入闲置状态,并且可能需要手动执行“部署”操作来唤醒服务或获取最新的提交。与Vercel不同,默认情况下推送不会自动部署。
您的服务器将在 https://spotify-mcp.onrender.com/mcp
🎯 披萨(Poke)集成
- 首选 poke.com/设置/连接
- 添加MCP URL:
https://spotify-mcp.onrender.com/mcp - 给它起个像“Spotify”这样的名字
- 尝试:“你能用Spotify的MCP来搜索‘Bohemian Rhapsody’这首歌吗?”
参考文献
- 基于Interaction MCP服务器模板: MCP服务器模板
- 通过Interaction的HackMIT挑战发现: “Interaction HackMIT Challenge”可以翻译为“交互黑客马拉松MIT挑战赛”或“MIT交互黑客挑战赛”。这里,“Interaction”指的是交互设计或交互技术,“HackMIT”可能是一个特定于麻省理工学院(MIT)的黑客马拉松或技术挑战活动名称,“Challenge”则表示挑战赛。因此,整个短语可以理解为麻省理工学院举办的一个关于交互设计或技术的黑客马拉松或挑战赛
🛠️ 可用工具
search_tracks(query, limit=10)
在Spotify上搜索歌曲。
参数:
query(字符串):搜索查询(歌曲名、艺术家、歌词等)limit(int, 可选): 要返回的结果数量 (1-50,默认: 10)
示例:
search_tracks("Bohemian Rhapsody", 5)search_artists(query, limit=10)
在Spotify上搜索艺术家。
参数:
query(字符串):搜索查询(艺术家名称、流派等)limit(int, 可选):要返回的结果数量(1-50,默认:10)
示例:
search_artists("Queen", 3)get_artist_top_tracks(artist_id, market="US")
获取特定艺术家的热门曲目。
参数:
artist_id(字符串):Spotify 艺术家 IDmarket(字符串,可选):市场代码(默认:“US”)
示例:
get_artist_top_tracks("1dfeR4HaWDbWqFHLkxsg1d") # Queen's artist ID🧪 测试
在本地测试服务器:
# Test health endpoint
curl http://localhost:8000/
# Test MCP endpoint
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'📝 笔记
- 速率限制Spotify API设有速率限制。服务器包含自动令牌刷新功能。
- 认证使用Spotify的客户端凭证流(无需用户登录)。
- 数据格式所有响应均采用JSON格式,便于集成。
- 错误处理全面的错误处理,附带描述性错误信息。
