Integrations
Spotify MCP サーバー
Spotify Web APIおよびModel Context Protocol(MCP)と統合されたNode.jsベースのサーバーで、Spotifyコンテンツの検索、再生制御、管理ツールを提供します。ユーザーは、stdioトランスポートを介した標準化されたMCPインターフェースを介して、プログラムでSpotifyアカウントを操作できます。
🧠 プロジェクト概要
名前: Spotify MCP サーバー
説明: Spotify Web API を MCP 標準に接続し、stdio 経由の JSON ベースのツールを使用して検索、再生制御、プレイリスト管理を可能にするプログラム可能なインターフェイスです。
主な機能:
- 🔍 Spotifyでトラックを検索
- 🎵 現在の再生状態を確認する
- ▶️ URIで特定のトラックを再生する
- 📋 ユーザーのプレイリストを取得する
- ⏸ 再生中の動画を一時停止する
- 🔐 Spotify での OAuth 認証
- 📉 Spotify APIリクエストのレート制限処理
⚙️ 前提条件
- Node.js (v16以上を推奨)
- アプリの認証情報を持つSpotify開発者アカウント
- npm (ノード パッケージ マネージャー)
📦 インストール手順
Copy
Copy
注:
your_spotify_client_id
とyour_spotify_client_secret
をSpotify Developerアプリの認証情報に置き換えてください。リダイレクトURIはSpotifyアプリの設定で設定されているものと一致している必要があります。
Copy
これにより、Spotify 認証用のブラウザが開き、stdio トランスポートを使用してサーバーが起動します。
🔧 ツール
1. search_tracks
- **説明:**クエリ文字列に基づいて Spotify 上のトラックを検索します。
- 入力スキーマ:
query
(文字列、必須): 検索用語 (例: アーティスト名、曲のタイトル)。
- 出力:
name
、artist
、album
、release_date
、popularity
、id
、uri
を含む最大 5 つのトラック オブジェクトの JSON 配列。 - 例:
Copy
2. get_playback_state
- **説明:**ユーザーの Spotify アカウントの現在の再生状態を取得します。
- **入力スキーマ:**なし
- **出力:**現在のトラック情報、再生ステータス、デバイスの詳細を含む JSON オブジェクト。何も再生されていない場合は「アクティブな再生なし」が表示されます。
- 例:
Copy
3. play_track
- 説明: Spotify URI を使用して特定のトラックを再生します。
- 入力スキーマ:
uri
(文字列、必須): Spotify トラックの URI (例:spotify:track:xxx
)。
- 出力:
status
とuri
を含む JSON 確認。 - 例:
Copy
4. get_user_playlists
- 説明: Spotify からユーザーのプレイリストを取得します。
- 入力スキーマ:
limit
(数値、オプション): 返されるプレイリストの最大数 (デフォルト: 20)。
- 出力:
name
、id
、track_count
、uri
、およびpublic
ステータスを持つプレイリスト オブジェクトの JSON 配列。 - 例:
Copy
5. pause_playback
- **説明:**ユーザーのアクティブな Spotify デバイスで現在の再生を一時停止します。
- **入力スキーマ:**なし
- 出力: 「再生が一時停止されました」というステータスの JSON 確認。
- 例:
Copy
🌐 ユースケース
- 音楽発見ボット:
search_tracks
とplay_track
を使用して、気分に基づいた音楽チャットボットを実装します。
- プレイリスト管理ツール:
get_user_playlists
とsearch_tracks
を使用して、プレイリストをプレビューおよび整理します。
- 再生コントロールの自動化:
get_playback_state
、play_track
、pause_playback
を使用して再生アクションを自動化します。
- Spotifyダッシュボード:
get_playback_state
、get_user_playlists
、pause_playback
、play_track
を使用してデスクトップ ウィジェットを構築します。
- Spotify API の学習:
- すべてのツールを試して、Spotify Web API がどのように機能するかを学習します。
🔐 認証の詳細
- 初回実行時に、サーバーは Spotify OAuth 認証用のブラウザを開きます。
http://localhost:8888/callback
経由でコードを受信します。- コードをアクセス トークンおよびリフレッシュ トークンと交換します。
- 有効期限の 5 分以内にトークンが自動的に更新されます。
⏱ レート制限
- 再試行戦略を使用して Spotify API レート制限を処理します。
- 各リクエスト後に 10 秒間のクールダウンが発生します。
- 429 Too Many Requests エラーが発生した場合は 1 分間待機します。
📊 依存関係
Copy
dotenv
:.env
から環境変数を読み込みます。spotify-web-api-node
: Spotify API クライアント。@modelcontextprotocol/sdk
: MCP サーバーを実装します。http
、url
: OAuth リダイレクト サーバー用の Node.js 組み込み。open
: 認証用のデフォルトのブラウザを開きます。
📁 開発情報
- エントリポイント:
index.js
- 言語: JavaScript (ES モジュール付き Node.js)
- 実行コマンド:
node index.js
- **デバッグ:**コンソール ログで MCP または認証エラーを確認します。
⚠️制限事項
- 再生コントロールにはSpotify Premiumが必要です。
- stdio トランスポートのみをサポートします (HTTP、WebSocket などはサポートされません)。
search_tracks
最大 5 件の結果を返します。- 再生には 1 つのアクティブデバイスを想定します。
🚀 貢献する
お気軽に問題を開いたり、プル リクエストを送信してください。
- 新しいツールを追加する
- 既存の機能を強化する
- ドキュメントの改善
✍️ ライセンス
MIT ライセンス - 個人または商用目的での使用、変更、配布が自由です。
❤️ フッター
2025年3月17日、Rakshitha C Devadiga が❤️を込めて作成
This server cannot be installed
モデルコンテキスト プロトコルを介して Spotify Web API と統合し、ユーザーがトラックを検索したり、再生を制御したり、プログラムでプレイリストを管理したりできるようにします。