Spotify MCP Server

Integrations

  • Used for loading environment variables from .env files to securely store Spotify API credentials.

  • Used for version control and cloning the repository during installation.

  • The server is built on Node.js runtime to create the MCP interface for Spotify.

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リクエストのレート制限処理

⚙️ 前提条件


📦 インストール手順

# 1. Clone the repository git clone <repository-url> cd spotify-mcp # 2. Install dependencies npm install # 3. Create a .env file and add the following:
SPOTIFY_CLIENT_ID=your_spotify_client_id SPOTIFY_CLIENT_SECRET=your_spotify_client_secret SPOTIFY_REDIRECT_URI=http://localhost:8888/callback

注: your_spotify_client_idyour_spotify_client_secretをSpotify Developerアプリの認証情報に置き換えてください。リダイレクトURIはSpotifyアプリの設定で設定されているものと一致している必要があります。

# 4. Build npm run build # 5. Run the server npm start

これにより、Spotify 認証用のブラウザが開き、stdio トランスポートを使用してサーバーが起動します。


🔧 ツール

1. search_tracks

  • **説明:**クエリ文字列に基づいて Spotify 上のトラックを検索します。
  • 入力スキーマ:
    • query (文字列、必須): 検索用語 (例: アーティスト名、曲のタイトル)。
  • 出力: nameartistalbumrelease_datepopularityiduriを含む最大 5 つのトラック オブジェクトの JSON 配列。
  • 例:
{ "name": "search_tracks", "arguments": {"query": "The Beatles"} }

2. get_playback_state

  • **説明:**ユーザーの Spotify アカウントの現在の再生状態を取得します。
  • **入力スキーマ:**なし
  • **出力:**現在のトラック情報、再生ステータス、デバイスの詳細を含む JSON オブジェクト。何も再生されていない場合は「アクティブな再生なし」が表示されます。
  • 例:
{ "name": "get_playback_state", "arguments": {} }

3. play_track

  • 説明: Spotify URI を使用して特定のトラックを再生します。
  • 入力スキーマ:
    • uri (文字列、必須): Spotify トラックの URI (例: spotify:track:xxx )。
  • 出力: statusuriを含む JSON 確認。
  • 例:
{ "name": "play_track", "arguments": {"uri": "spotify:track:7KXjTSCq5nL1LoYtL7XAwS"} }

4. get_user_playlists

  • 説明: Spotify からユーザーのプレイリストを取得します。
  • 入力スキーマ:
    • limit (数値、オプション): 返されるプレイリストの最大数 (デフォルト: 20)。
  • 出力: nameidtrack_counturi 、およびpublicステータスを持つプレイリスト オブジェクトの JSON 配列。
  • 例:
{ "name": "get_user_playlists", "arguments": {"limit": 10} }

5. pause_playback

  • **説明:**ユーザーのアクティブな Spotify デバイスで現在の再生を一時停止します。
  • **入力スキーマ:**なし
  • 出力: 「再生が一時停止されました」というステータスの JSON 確認。
  • 例:
{ "name": "pause_playback", "arguments": {} }

🌐 ユースケース

  1. 音楽発見ボット:
    • search_tracksplay_trackを使用して、気分に基づいた音楽チャットボットを実装します。
  2. プレイリスト管理ツール:
    • get_user_playlistssearch_tracksを使用して、プレイリストをプレビューおよび整理します。
  3. 再生コントロールの自動化:
    • get_playback_stateplay_trackpause_playbackを使用して再生アクションを自動化します。
  4. Spotifyダッシュボード:
    • get_playback_stateget_user_playlistspause_playbackplay_trackを使用してデスクトップ ウィジェットを構築します。
  5. Spotify API の学習:
    • すべてのツールを試して、Spotify Web API がどのように機能するかを学習します。

🔐 認証の詳細

  • 初回実行時に、サーバーは Spotify OAuth 認証用のブラウザを開きます。
  • http://localhost:8888/callback経由でコードを受信します。
  • コードをアクセス トークンおよびリフレッシュ トークンと交換します。
  • 有効期限の 5 分以内にトークンが自動的に更新されます。

⏱ レート制限

  • 再試行戦略を使用して Spotify API レート制限を処理します。
    • 各リクエスト後に 10 秒間のクールダウンが発生します。
    • 429 Too Many Requests エラーが発生した場合は 1 分間待機します。

📊 依存関係

npm install dotenv spotify-web-api-node @modelcontextprotocol/sdk open
  • dotenv : .envから環境変数を読み込みます。
  • spotify-web-api-node : Spotify API クライアント。
  • @modelcontextprotocol/sdk : MCP サーバーを実装します。
  • httpurl : 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 が❤️を込めて作成

-
security - not tested
F
license - not found
-
quality - not tested

モデルコンテキスト プロトコルを介して Spotify Web API と統合し、ユーザーがトラックを検索したり、再生を制御したり、プログラムでプレイリストを管理したりできるようにします。

  1. 🧠 Project Overview
    1. ⚙️ Prerequisites
      1. 📦 Installation Steps
        1. 🔧 Tools
          1. 1. search_tracks
          2. 2. get_playback_state
          3. 3. play_track
          4. 4. get_user_playlists
          5. 5. pause_playback
        2. 🌐 Use Cases
          1. 🔐 Authentication Details
            1. ⏱ Rate Limiting
              1. 📊 Dependencies
                1. 📁 Development Info
                  1. ⚠️ Limitations
                    1. 🚀 Contributing
                      1. ✍️ License
                        1. ❤️ Footer
                          ID: ykslfmd22l