Skip to main content
Glama
marcelmarais

Spotify MCP Server

by marcelmarais

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

やり取りの例

  • 「エルヴィスの最初の曲を再生」

  • 「テイラー・スウィフトとスリップノットのフュージョンプレイリストを作成」

  • 「ワークアウトプレイリストからすべてのテクノトラックを仕事用プレイリストにコピーする」

Related MCP server: Sonic Pi 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")

  5. 最近再生されたもの

    • 説明: Spotify から最近再生されたトラックのリストを取得します。

    • パラメータ:

      • limit (数値、オプション): 返されるトラックの最大数を指定する数値。

    • 戻り値: トラックが見つかった場合は、最近再生されたトラックのフォーマットされたリストを返します。そうでない場合は、「Spotify で最近再生されたトラックはありません」というメッセージを返します。

    • : getRecentlyPlayed({ limit: 10 })

  6. 最近再生したデータ

    • 説明: Spotify から最近再生されたトラックのリストを取得します。

    • パラメータ:

      • limit (数値、オプション): 返されるトラックの最大数を指定する数値。

    • 戻り値: トラックが見つかった場合は、最近再生されたトラックのフォーマットされたリストを返します。そうでない場合は、「Spotify で最近再生されたトラックはありません」というメッセージを返します。

    • : getRecentlyPlayed({ limit: 10 })

再生/作成操作

  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. サーバーは、必要に応じてリフレッシュ トークンを使用してアクセス トークンを自動的に更新します。

Cline モデル拡張を介してClaude Desktop、Cursor、VsCode と統合する

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

Cline を使用して MCP を正しく設定するには、次のファイル構成がcline_mcp_settings.jsonに設定されていることを確認してください。

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

自動承認配列にツールを追加して、介入なしでツールを実行できます。

Install Server
F
license - not found
B
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marcelmarais/spotify-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server