🎵 DJ Spotify MCP服务器
FastAPI + FastAPI-MCP 中构建的Spotify Web API 的,之MCP(Model Context Protocol)服务器
AI 助手(Claude、Cursor等)用自然语言Spotify 的明细栏样式中定义的设置。FastAPI-MCP 来修改标记元素的显示属性HTTP 经过MCP 提供协议,所有Spotify 功能AI 中所述修改相应参数的值。
](https://github.com/Slevin06/dj-mcp-server-for-spotify)   
✨ 特徴
- 🚀 FastAPI MCP: FastAPI 自动端点MCP 工具化稳定HTTP 通讯
- 🎵 全面的Spotify 功能:检索、再生、播放列表管理、记录等
- 🤖 AI 支持助手: Claude、Cursor 等自然语言操作
- 🔐 OAuth2.0 认证: Spotify 公式API 安全认证
- 📋 自动工具生成: FastAPI 端点自动MCP 工具化
- 📖 开发者友好: Swagger UI、ReDoc 根据…;根据API 自动生成文档
🚀 快速启动
1.项目准备
# リポジトリをクローン
git clone https://github.com/Slevin06/dj-mcp-server-for-spotify.git
cd dj-mcp-server-for-spotify
# 仮想環境を作成・アクティベート
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# または .venv\Scripts\activate # Windows
# 依存関係をインストール
pip install -r requirements.txt2. Spotify API 设定
- Spotify开发者仪表板 创建应用程序
- 重定向URI 在…之上
http://127.0.0.1:8000/auth/callback添加 .env.example打开.env复制到API 设置信息:
cp .env.example .env.env 编辑文件:
SPOTIFY_CLIENT_ID=your_client_id_here
SPOTIFY_CLIENT_SECRET=your_client_secret_here
SPOTIFY_REDIRECT_URI=http://127.0.0.1:8000/auth/callback3.服务器启动
# FastAPI MCP サーバーを起動
./run_fastapi_mcp.sh启动后,以下可用:
- MCP 端点:
http://localhost:8000/mcp - API 文档:
http://localhost:8000/docs - Swagger用户界面:
http://localhost:8000/redoc
4. AI 助手设置
Cursor 的情况~/。cursor/mcp.json、Claude Desktop の场合~/.claude_desktop_config.json 添加:
{
"mcpServers": {
"dj-spotify-mcp-server": {
"url": "http://localhost:8000/mcp"
}
}
}5. Spotify 认证
- 在浏览器中
http://localhost:8000/auth/login访问 - Spotify 允许帐户登录
- 认证完成后AI 助手可用
🎯 主要功能
🔐 认证机能✅ 全部可以自由计划使用
start_spotify_authentication- Spotify OAuth2.0 认证开始handle_spotify_callback- OAuth 认证回调处理get_spotify_auth_status-验证状态确认令牌管理disconnect_spotify_account-取消帐户连接clear_auth_cache-认证高速缓存清除
🎵 播放列表管理✅ 全部可以自由计划使用
参照机能
get_my_playlists-获取播放列表列表列表get_playlist_tracks-播放列表内乐曲详细显示
编集机能(2段阶确认付き)
preview_playlist_creation-创建播放列表预览 \[新机能\]create_playlist-创建新播放列表(需要事先批准)preview_tracks_addition-乐曲追加预览 \[新机能\]add_tracks_to_playlist-向播放列表中添加乐曲(需要事先批准)reorder_playlist_track-更改播放列表中乐曲的顺序
💡 提高用户体验:制作播放列表、追加乐曲可以事先在预览中确认内容后执行,所以可以放心使用。
🔍 検索机能✅ 全部可以自由计划使用
search_tracks- 楽曲検索search_artists-艺人搜索get_artist_info-获取艺术家详细信息get_artist_top_tracks-获得艺人的人气歌曲get_multiple_tracks-复数楽曲情报の一括取得search_tracks_with_filters-查找带滤镜的歌曲
🎚️ 播放控件⚠️ 高级计划专用
再生状態取得 ✅ 自由计划可用
get_playback_state-获取当前的完整播放状态get_now_playing-现在再生中の楽曲情报取得get_available_devices-获取可用设备列表
再生操作 🔒 高级计划专用
play_music-开始播放乐曲pause_music-暂停播放skip_to_next-跳过下一首歌skip_to_previous-回到上一首歌seek_to_position- 楽曲内の再生位置移動
玩家设置🔒 高级计划专用
set_volume-音量调整set_shuffle_mode-设置洗牌模式set_repeat_mode-设置重复模式transfer_playback-切换播放设备
排队操作🔒 高级计划专用
add_to_queue-将乐曲添加到播放队列
🎯 记录✅ 全部可以自由计划使用
get_available_genres-获取可用类型get_recommendations-楽曲推荐取得get_recommendations_by_mood-推荐以心情、类别为标准的乐曲create_playlist_from_recommendations-从推荐歌曲创建自动播放列表
👤 用户信息历史记录✅ 全部可以自由计划使用
get_user_profile-获取用户配置文件get_recently_played_tracks-最近播放的歌曲历史记录get_user_top_items-用户首选项(音乐艺术家)get_followed_artists-获得跟踪艺人follow_artists_or_users-跟踪艺术家和用户unfollow_artists_or_users-取消跟踪
🛠️ 实用程序✅ 全部可以自由计划使用
health_check-服务器健康检查get_server_version-获取服务器版本信息get_available_markets-获取可用地区(国家/地区代码)
⚠️ Spotify 高级计划要求
🔒 关于高级专用功能
如果自由计划用户使用高级专用功能,则会出现以下错误:
常规权限错误(HTTP403)
{
"detail": "予期せぬエラー: 403: この操作を実行する権限がありません。"
}对象机能: play_music, pause_music, skip_to_next, skip_to_previous, set_volume, set_shuffle_mode, set_repeat_mode, seek_to_position, transfer_playback
显式高级请求错误
{
"detail": "Failed to add to queue: http status: 403, code: -1 - https://api.spotify.com/v1/me/player/queue?uri=spotify:track:xxxxx:\n Player command failed: Premium required, reason: PREMIUM_REQUIRED"
}对象机能: add_to_queue
✅ 自由计划也可以充分利用
DJ MCP Server 表示自由计划也可以充分利用以下用途:
- 🔍 音楽発见・検索:艺人乐曲的详细检索
- 📋 播放列表管理:作成・编集・楽曲追加・顺序变更
- 🎯 记录:根据心情和喜好推荐乐曲
- 📊 听力分析:再生履历·首位项目·跟踪管理
- 🎵 音乐库整理:高效的播放列表创建和管理
需要高级计划的是,只有实际的乐曲再生和玩家控制功能。
💡 使用例
AI 助手可以:
# プレイリスト作成
「リラックスできる音楽のプレイリストを作成して」
# 楽曲検索・再生
「藤井風の人気曲を検索して再生して」
# 状態確認
「今再生中の曲は何ですか?」
# レコメンデーション
「jazz っぽい音楽を推薦してください」📋 AI 利用交互规则
DJ MCP Server 那么AI 它提供了专门的交互规则,以实现与助手的安全、愉快的对话。
🔗 交互规则文件
docs/ai_interaction_rules.mdc 定义了以下规则:
- 播放列表操作的2阶段确认过程
- 如何使用预览功能
- 用户批准流程的最佳做法
- 播放描述标准化规则
🤖 AI 助手的使用步骤
1.将规则文件添加到上下文中
AI 在与助手的对话中,请参阅以下规则文件:
@docs/ai_interaction_rules.mdc プレイリストを作成したいです2.自动应用的安全功能
通过浏览规则文件,将自动应用以下内容:
- ✅ 预览显示:作成・追加前の属性确认
- ✅ 等待批准:等待运行,直到用户明确批准
- ✅ 标准化描述:统一的播放列表说明
- ✅ 防止错误:防止意外操作
3.对话例
# ルールに従った安全な対話フロー
You: @docs/ai_interaction_rules.mdc
チルアウトプレイリストを作成してください
AI: プレイリストを作成します。まず内容を確認いたします。
📋 作成予定のプレイリスト内容
• 名前: "チルアウトミックス"
• 説明: "リラックスタイムに最適な楽曲集。DJ MCP Server for Spotifyで作成。"
• 公開設定: プライベート
この内容でプレイリストを作成してよろしいですか?
You: はい、作成してください
AI: ✅ プレイリストを作成しました!💡 利用的好处
- 🛡️ 安全性:防止意外操作
- 👀 透明性:可在运行前确认内容
- 📝 一贯性:统一的播放列表管理
- 🤝 可用性:直观易懂的对话
📖 详细规则
有关完整规则的详细信息,请参见docs/ai_interaction_rules.mdc 来修改标记元素的显示属性。
🏗️ 项目结构
dj-mcp-server-for-spotify/
├── src/ # メインソースコード
│ ├── main.py # FastAPI + MCP メインアプリケーション
│ ├── spotify_client.py # Spotify ツールファクトリー(シンプル)
│ ├── auth/ # 認証関連
│ │ ├── spotify_auth.py # Spotify OAuth2 実装
│ │ ├── token_manager.py # トークン管理
│ │ └── cache_manager.py # 認証キャッシュ
│ ├── routers/ # API エンドポイント群
│ │ ├── authentication.py # 認証エンドポイント
│ │ ├── playlists.py # プレイリスト操作
│ │ ├── search.py # 検索機能
│ │ ├── player.py # 再生コントロール
│ │ ├── recommendations.py # レコメンデーション
│ │ └── utility.py # ユーティリティ
│ ├── spotify_features/ # 機能実装マネージャー
│ │ ├── playlist_manager.py # プレイリスト管理
│ │ ├── search_manager.py # 検索機能
│ │ ├── artist_manager.py # アーティスト情報
│ │ ├── player_manager.py # 再生制御
│ │ ├── recommendation_manager.py # レコメンデーション
│ │ ├── cache_handler.py # API キャッシュ処理
│ │ └── rate_limit_handler.py # レート制限管理
│ ├── spotify_tools.py # Spotify ツール統合ファサード
│ └── models.py # Pydantic モデル
├── tokens/ # 認証トークン保存
├── cache/ # 二層キャッシュシステム
│ ├── auth/ # 認証関連キャッシュ
│ └── spotify_api_cache/ # API レスポンスキャッシュ
├── docs/ # ドキュメント
│ └── ai_interaction_rules.mdc # AI インタラクションルール
├── .env # 環境変数(作成要)
├── requirements.txt # Python 依存関係
├── run_fastapi_mcp.sh # サーバー起動スクリプト
├── run.sh / run.bat # 環境セットアップ + 起動スクリプト
└── README.md # このファイル🔧 技术栈
- Python 3.11+:基础编程语言
- 快速API:高性能Web API 框架结构
- FastAPI MCP: FastAPI 自动端点MCP 工具化
- Spotipy 的: Spotify Web API Python 程序库
- 派丹蒂克:数据验证设置管理
- 乌维科恩: ASGI 服务器
🧪 开发测试
手动测试
# サーバー起動テスト
./run_fastapi_mcp.sh
# API エンドポイント確認
curl http://localhost:8000/utility/health
# MCP エンドポイント確認
curl http://localhost:8000/mcp开发工具
- API 文档:
http://localhost:8000/docs - Swagger用户界面:
http://localhost:8000/redoc - OpenAPI JSON:
http://localhost:8000/openapi.json
🔒 安全性和限制
认证隐私
- 个人利用专用:我的Spotify 仅使用帐户
- OAuth2.0: Spotify 正式认证流程
- 标记管理:本地加密保存和自动更新
API 制限
- 汇率限制: Spotify API 的限制
- 范围限制:仅要求最低限度的权限
- 设备限制:活动Spotify 需要应用程序(部分功能)
🛠️ 故障排除
常见问题
1.服务器未启动
# .env ファイルの確認
ls -la .env
# 仮想環境の確認
which python2.端口8000正在使用时
# ERROR: [Errno 48] address already in use が発生した場合
# ポート8000を使用しているプロセスを確認
lsof -i :8000
# 表示されたプロセスのPIDを確認してkill
# 例: PID が 12345 の場合
kill -9 12345
# 複数のプロセスが表示された場合は、すべてkill
# 一括でkillする場合(注意して実行)
lsof -ti :8000 | xargs kill -9
# サーバーを再起動
./run_fastapi_mcp.sh3. MCP 无法识别工具
# mcp.json の設定確認
cat ~/.cursor/mcp.json
# サーバー URL の確認
curl http://localhost:8000/mcp4.认证错误
# Spotify API 設定確認
echo $SPOTIFY_CLIENT_ID
# 認証状態確認
curl http://localhost:8000/auth/status5.播放控制不动作
- Spotify 应用程序(台式机移动Web Player)启动
- 检查设备列表:
curl http://localhost:8000/player/devices
📈 今后的计划
体系结构改进
- \[x\] Phase 1完了:删除遗留代码(mcp_server.py,spotify_mcp_server.py删除,依存关系整理)
- \[x\] Phase 2完了:依赖性注入简化(dependencies.py→spotify_client.py、LRU高速缓存部署)
- \[ \] 第三期:统一管理人集成错误处理(跳过)
- \[ \] 阶段4:监控测试文档增强(将来适用)
重构结果: 13KB 的旧代码删除,43%的代码简化,大大提高了可维护性。
机能扩张
- \[ \] Docker Compose 対応完全化
- \[\]扩展记录功能
- \[\]播放列表图像设定功能
- \[\]批量处理功能(大量乐曲操作)
- \[ \]详细な使用统计・分析机能
🤝 分发
个人发展项目,欢迎反馈和建议!
- Issue 制作并报告问题和提案
- Fork 发送抽取请求
- 文档改进建议
📄 许可证
MIT License - 了解更多信息 许可证 浏览文件
🙏 谢辞
- Spotify Web API -提供丰富的音乐数据
- 快速API -高性能Web API 框架结构
- MCP协议 - AI 助手协作标准化
- Spotipy 的 - Spotify API 的,之Python 包装
______________________________________________________________________
🎵 音乐和AI 请享受的融合!
