Cursor や Claude などの AI アシスタントが Spotify の再生を制御し、プレイリストを管理できるようにする軽量のModel Context Protocol (MCP)サーバー。
やり取りの例
- 「エルヴィスの最初の曲を再生」
- 「テイラー・スウィフトとスリップノットのフュージョンプレイリストを作成」
- 「ワークアウトプレイリストからすべてのテクノトラックを仕事用プレイリストにコピーする」
ツール
読み取り操作
- Spotifyを検索
- 説明: Spotifyでトラック、アルバム、アーティスト、プレイリストを検索します
- パラメータ:
query
(文字列): 検索語type
(文字列): 検索するアイテムの種類 (トラック、アルバム、アーティスト、プレイリスト)limit
(数値、オプション): 返される結果の最大数 (10~50)
- 戻り値: 一致するアイテムのID、名前、追加の詳細のリスト
- 例:
searchSpotify("bohemian rhapsody", "track", 20)
- getNowPlaying
- 説明: Spotifyで現在再生中のトラックの情報を取得します
- パラメータ: なし
- 戻り値: トラック名、アーティスト、アルバム、再生の進行状況、再生時間、再生状態を含むオブジェクト
- 例:
getNowPlaying()
- プレイリストを取得する
- 説明: Spotify 上の現在のユーザーのプレイリストのリストを取得します
- パラメータ:
limit
(数値、オプション): 返されるプレイリストの最大数 (デフォルト: 20)offset
(数値、オプション):返される最初のプレイリストのインデックス(デフォルト:0)
- 戻り値: ID、名前、トラック数、公開ステータスを含むプレイリストの配列
- 例:
getMyPlaylists(10, 0)
- プレイリストトラックを取得する
- 説明: 特定のSpotifyプレイリスト内のトラックのリストを取得します
- パラメータ:
playlistId
(文字列): プレイリストのSpotify IDlimit
(数値、オプション): 返されるトラックの最大数 (デフォルト: 100)offset
(数値、オプション):返される最初のトラックのインデックス(デフォルト:0)
- 戻り値: ID、名前、アーティスト、アルバム、継続時間、追加日を含むトラックの配列
- 例:
getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")
- 最近再生されたもの
- 説明: Spotify から最近再生されたトラックのリストを取得します。
- パラメータ:
limit
(数値、オプション): 返されるトラックの最大数を指定する数値。
- 戻り値: トラックが見つかった場合は、最近再生されたトラックのフォーマットされたリストを返します。そうでない場合は、「Spotify で最近再生されたトラックはありません」というメッセージを返します。
- 例:
getRecentlyPlayed({ limit: 10 })
- 最近再生したデータ
- 説明: Spotify から最近再生されたトラックのリストを取得します。
- パラメータ:
limit
(数値、オプション): 返されるトラックの最大数を指定する数値。
- 戻り値: トラックが見つかった場合は、最近再生されたトラックのフォーマットされたリストを返します。そうでない場合は、「Spotify で最近再生されたトラックはありません」というメッセージを返します。
- 例:
getRecentlyPlayed({ limit: 10 })
再生/作成操作
- 音楽を再生する
- 説明: Spotifyでトラック、アルバム、アーティスト、またはプレイリストの再生を開始します
- パラメータ:
uri
(文字列、オプション): 再生するアイテムの Spotify URI (type と id をオーバーライドします)type
(文字列、オプション): 再生するアイテムの種類 (トラック、アルバム、アーティスト、プレイリスト)id
(文字列、オプション): 再生するアイテムの Spotify IDdeviceId
(文字列、オプション): 再生するデバイスのID
- 戻り値: 成功ステータス
- 例:
playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
- 代替:
playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
- 一時停止再生
- 説明: Spotifyで現在再生中のトラックを一時停止します
- パラメータ:
deviceId
(文字列、オプション): 一時停止するデバイスのID
- 戻り値: 成功ステータス
- 例:
pausePlayback()
- 次へスキップ
- 説明: 現在の再生キューの次のトラックにスキップします
- パラメータ:
deviceId
(文字列、オプション): デバイスのID
- 戻り値: 成功ステータス
- 例:
skipToNext()
- 前へスキップ
- 説明: 現在の再生キュー内の前のトラックにスキップします
- パラメータ:
deviceId
(文字列、オプション): デバイスのID
- 戻り値: 成功ステータス
- 例:
skipToPrevious()
- プレイリストを作成
- 説明: Spotifyで新しいプレイリストを作成する
- パラメータ:
name
(文字列): 新しいプレイリストの名前description
(文字列、オプション): プレイリストの説明public
(ブール値、オプション):プレイリストを公開するかどうか(デフォルト:false)
- 戻り値: 新しいプレイリストのIDとURLを持つオブジェクト
- 例:
createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })
- プレイリストにトラックを追加
- 説明: 既存のSpotifyプレイリストにトラックを追加する
- パラメータ:
playlistId
(文字列): プレイリストのIDtrackUris
(配列): 追加するトラックURIまたはIDの配列position
(数値、オプション):トラックを挿入する位置
- 戻り値: 成功ステータスとスナップショットID
- 例:
addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })
- キューに追加
- 説明: トラック、アルバム、アーティスト、またはプレイリストを現在の再生キューに追加します
- パラメータ:
uri
(文字列、オプション): キューに追加するアイテムの Spotify URI (type と id をオーバーライドします)type
(文字列、オプション): キューに追加するアイテムの種類 (トラック、アルバム、アーティスト、プレイリスト)id
(文字列、オプション): キューに追加するアイテムの Spotify IDdeviceId
(文字列、オプション): キューに入れるデバイスのID
- 戻り値: 成功ステータス
- 例:
addToQueue({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
- 代替:
addToQueue({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
設定
前提条件
- Node.js v16+
- Spotifyプレミアムアカウント
- 登録済みのSpotify開発者アプリケーション
インストール
Spotify開発者アプリケーションの作成
- Spotify開発者ダッシュボードへ
- Spotifyアカウントでログイン
- 「アプリを作成」ボタンをクリックします
- アプリ名と説明を入力してください
- 利用規約に同意して「作成」をクリックします
- 新しいアプリのダッシュボードにクライアントIDが表示されます
- 「クライアントシークレットを表示」をクリックするとクライアントシークレットが表示されます
- 「設定の編集」をクリックし、リダイレクト URI を追加します (例:
http://localhost:8888/callback
) - 変更を保存する
Spotify API 設定
プロジェクト ルートにspotify-config.json
ファイルを作成します (提供されている例をコピーして変更できます)。
次に、資格情報を使用してファイルを編集します。
認証プロセス
Spotify APIは認証にOAuth 2.0を使用します。アプリケーションの認証は以下の手順に従ってください。
- 認証スクリプトを実行します。
- スクリプトは認証URLを生成します。このURLをWebブラウザで開いてください。
- Spotify にログインしてアプリケーションを承認するように求められます。
- 承認後、Spotify は URL にコード パラメータを含む指定されたリダイレクト URI にリダイレクトします。
- 認証スクリプトは、このコードをアクセス トークンとリフレッシュ トークンに自動的に交換します。
- これらのトークンは
spotify-config.json
ファイルに保存され、次のような内容になります。
- サーバーは、必要に応じてリフレッシュ トークンを使用してアクセス トークンを自動的に更新します。
Cline モデル拡張を介してClaude Desktop、Cursor、VsCode と統合する
Claude Desktop で MCP サーバーを使用するには、Claude 構成に追加します。
カーソルについては、 Cursor Settings
(command + Shift + J)の「MCP」タブに移動し、次のコマンドでサーバーを追加します。
Cline を使用して MCP を正しく設定するには、次のファイル構成がcline_mcp_settings.json
に設定されていることを確認してください。
自動承認配列にツールを追加して、介入なしでツールを実行できます。
You must be authenticated.
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Tools
Cursor や Claude などの AI アシスタントが Spotify の再生を制御し、プレイリストを管理できるようにする軽量のモデル コンテキスト プロトコル サーバー。
Related MCP Servers
- -security-license-qualityA Model Context Protocol server that enables controlling Spotify playback through natural language commands in MCP clients like Cursor or Claude for Desktop.Last updated -1TypeScript
- -securityAlicense-qualityA Model Context Protocol server that allows AI assistants like Claude and Cursor to create music and control Sonic Pi programmatically through OSC messages.Last updated -JavaScriptMIT License
- -securityFlicense-qualityA Model Context Protocol server that enables AI assistants like Claude to interact with Spotify, allowing them to search for tracks, control playback, and manage playlists.Last updated -1TypeScript
- AsecurityAlicenseAqualityA Model Context Protocol server that enables real-time interaction with Ableton Live, allowing AI assistants to control song creation, track management, clip operations, and audio recording workflows.Last updated -232019TypeScriptMIT License