Spotify MCP Server

by marcelmarais
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Enables control of Spotify playback and playlist management, including searching for tracks/albums/artists, playing music, creating playlists, adding tracks to playlists, and controlling playback (pause, skip, etc.).

Cursor や Claude などの AI アシスタントが Spotify の再生を制御し、プレイリストを管理できるようにする軽量のModel Context Protocol (MCP)サーバー。

やり取りの例

  • 「エルヴィスの最初の曲を再生」
  • 「テイラー・スウィフトとスリップノットのフュージョンプレイリストを作成」
  • 「ワークアウトプレイリストからすべてのテクノトラックを仕事用プレイリストにコピーする」

ツール

読み取り操作

  1. Spotifyを検索
    • 説明: Spotifyでトラック、アルバム、アーティスト、プレイリストを検索します
    • パラメータ:
      • query (文字列): 検索語
      • type (文字列): 検索するアイテムの種類 (トラック、アルバム、アーティスト、プレイリスト)
      • limit (数値、オプション): 返される結果の最大数 (10~50)
    • 戻り値: 一致するアイテムのID、名前、追加の詳細のリスト
    • : searchSpotify("bohemian rhapsody", "track", 20)
  2. getNowPlaying
    • 説明: Spotifyで現在再生中のトラックの情報を取得します
    • パラメータ: なし
    • 戻り値: トラック名、アーティスト、アルバム、再生の進行状況、再生時間、再生状態を含むオブジェクト
    • : getNowPlaying()
  3. プレイリストを取得する
    • 説明: Spotify 上の現在のユーザーのプレイリストのリストを取得します
    • パラメータ:
      • limit (数値、オプション): 返されるプレイリストの最大数 (デフォルト: 20)
      • offset (数値、オプション):返される最初のプレイリストのインデックス(デフォルト:0)
    • 戻り値: ID、名前、トラック数、公開ステータスを含むプレイリストの配列
    • : getMyPlaylists(10, 0)
  4. プレイリストトラックを取得する
    • 説明: 特定のSpotifyプレイリスト内のトラックのリストを取得します
    • パラメータ:
      • playlistId (文字列): プレイリストのSpotify ID
      • limit (数値、オプション): 返されるトラックの最大数 (デフォルト: 100)
      • offset (数値、オプション):返される最初のトラックのインデックス(デフォルト:0)
    • 戻り値: ID、名前、アーティスト、アルバム、継続時間、追加日を含むトラックの配列
    • : getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")

再生/作成操作

  1. 音楽を再生する
    • 説明: Spotifyでトラック、アルバム、アーティスト、またはプレイリストの再生を開始します
    • パラメータ:
      • uri (文字列、オプション): 再生するアイテムの Spotify URI (type と id をオーバーライドします)
      • type (文字列、オプション): 再生するアイテムの種類 (トラック、アルバム、アーティスト、プレイリスト)
      • id (文字列、オプション): 再生するアイテムの Spotify ID
      • deviceId (文字列、オプション): 再生するデバイスのID
    • 戻り値: 成功ステータス
    • : playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
    • 代替: playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
  2. 一時停止再生
    • 説明: Spotifyで現在再生中のトラックを一時停止します
    • パラメータ:
      • deviceId (文字列、オプション): 一時停止するデバイスのID
    • 戻り値: 成功ステータス
    • : pausePlayback()
  3. 次へスキップ
    • 説明: 現在の再生キューの次のトラックにスキップします
    • パラメータ:
      • deviceId (文字列、オプション): デバイスのID
    • 戻り値: 成功ステータス
    • : skipToNext()
  4. 前へスキップ
    • 説明: 現在の再生キュー内の前のトラックにスキップします
    • パラメータ:
      • deviceId (文字列、オプション): デバイスのID
    • 戻り値: 成功ステータス
    • : skipToPrevious()
  5. プレイリストを作成
    • 説明: Spotifyで新しいプレイリストを作成する
    • パラメータ:
      • name (文字列): 新しいプレイリストの名前
      • description (文字列、オプション): プレイリストの説明
      • public (ブール値、オプション):プレイリストを公開するかどうか(デフォルト:false)
    • 戻り値: 新しいプレイリストのIDとURLを持つオブジェクト
    • : createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })
  6. プレイリストにトラックを追加
    • 説明: 既存のSpotifyプレイリストにトラックを追加する
    • パラメータ:
      • playlistId (文字列): プレイリストのID
      • trackUris (配列): 追加するトラックURIまたはIDの配列
      • position (数値、オプション):トラックを挿入する位置
    • 戻り値: 成功ステータスとスナップショットID
    • : addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })
  7. キューに追加
    • 説明: トラック、アルバム、アーティスト、またはプレイリストを現在の再生キューに追加します
      • パラメータ:
      • uri (文字列、オプション): キューに追加するアイテムの Spotify URI (type と id をオーバーライドします)
      • type (文字列、オプション): キューに追加するアイテムの種類 (トラック、アルバム、アーティスト、プレイリスト)
      • id (文字列、オプション): キューに追加するアイテムの Spotify ID
      • deviceId (文字列、オプション): キューに入れるデバイスのID
    • 戻り値: 成功ステータス
    • : addToQueue({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
    • 代替: addToQueue({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })

設定

前提条件

  • Node.js v16+
  • Spotifyプレミアムアカウント
  • 登録済みのSpotify開発者アプリケーション

インストール

git clone https://github.com/marcelmarais/spotify-mcp-server.git cd spotify-mcp-server npm install npm run build

Spotify開発者アプリケーションの作成

  1. Spotify開発者ダッシュボード
  2. Spotifyアカウントでログイン
  3. 「アプリを作成」ボタンをクリックします
  4. アプリ名と説明を入力してください
  5. 利用規約に同意して「作成」をクリックします
  6. 新しいアプリのダッシュボードにクライアントIDが表示されます
  7. 「クライアントシークレットを表示」をクリックするとクライアントシークレットが表示されます
  8. 「設定の編集」をクリックし、リダイレクト URI を追加します (例: http://localhost:8888/callback )
  9. 変更を保存する

Spotify API 設定

プロジェクト ルートにspotify-config.jsonファイルを作成します (提供されている例をコピーして変更できます)。

# Copy the example config file cp spotify-config.example.json spotify-config.json

次に、資格情報を使用してファイルを編集します。

{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "redirectUri": "http://localhost:8888/callback" }

認証プロセス

Spotify APIは認証にOAuth 2.0を使用します。アプリケーションの認証は以下の手順に従ってください。

  1. 認証スクリプトを実行します。
npm run auth
  1. スクリプトは認証URLを生成します。このURLをWebブラウザで開いてください。
  2. Spotify にログインしてアプリケーションを承認するように求められます。
  3. 承認後、Spotify は URL にコード パラメータを含む指定されたリダイレクト URI にリダイレクトします。
  4. 認証スクリプトは、このコードをアクセス トークンとリフレッシュ トークンに自動的に交換します。
  5. これらのトークンはspotify-config.jsonファイルに保存され、次のような内容になります。
{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "redirectUri": "http://localhost:8888/callback", "accessToken": "BQAi9Pn...kKQ", "refreshToken": "AQDQcj...7w", "expiresAt": 1677889354671 }
  1. サーバーは、必要に応じてリフレッシュ トークンを使用してアクセス トークンを自動的に更新します。

Claude DesktopとCursorとの統合

Claude Desktop で MCP サーバーを使用するには、Claude 構成に追加します。

{ "mcpServers": { "spotify": { "command": "node", "args": ["spotify-mcp-server/build/index.js"] } } }

カーソルについては、 Cursor Settings (command + Shift + J)の「MCP」タブに移動し、次のコマンドでサーバーを追加します。

node path/to/spotify-mcp-server/build/index.js

You must be authenticated.

A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Cursor や Claude などの AI アシスタントが Spotify の再生を制御し、プレイリストを管理できるようにする軽量のモデル コンテキスト プロトコル サーバー。

  1. Tools
    1. Read Operations
    2. Play / Create Operations
  2. Setup
    1. Prerequisites
    2. Installation
    3. Creating a Spotify Developer Application
    4. Spotify API Configuration
    5. Authentication Process
  3. Integrating with Claude Desktop and Cursor
    ID: wu15pi580l