Spotify について
Spotify の検索、プレイリストや「いいね」した曲の管理、再生操作を MCP クライアントから行うローカル Python 製 MCP サーバーです。28 のツールに加え、リソースとプロンプトを備え、大規模な読み取りやプレイリスト操作には保護機能があります。
主な機能
- 01曲、アルバム、アーティスト、プレイリストの検索
- 02再生と Spotify Connect デバイスの操作
- 03プレイリストと「いいね」した曲の管理
- 046 種類の Spotify リソースの読み取り
- 05進捗表示付きの一括読み取り
活用シーン
- 01アーティスト、アルバム、プレイリストから曲を検索
- 02曲をキューに追加して再生を操作
- 03プレイリストの作成や曲順の変更
- 04保存済みや最近再生した曲の確認
MCP 対応
stdio でローカル実行し、28 のツール、6 種類のリソース、5 つのプロンプトを MCP クライアントに提供します。Spotify の検索、再生、プレイリスト、ライブラリを操作できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx spotify-mcp-jamiewSPOTIFY_CLIENT_IDシークレットSpotify app Client ID from developer.spotify.comSPOTIFY_CLIENT_SECRETシークレットSpotify app Client Secret from developer.spotify.comSPOTIFY_REDIRECT_URIOAuth redirect URI registered in your Spotify appローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
28掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細

spotify-mcp
mcp-name: io.github.jamiew/spotify-mcp
Spotify を検索し、再生を操作し、MCP クライアントからプレイリストや「お気に入りの曲」を管理できる、ローカルの Python MCP サーバーです。Spotify アカウントを使用し、stdio 経由で動作します。 varunneal/spotify-mcp のサポート対象フォークです。
TypeScript 版はローカル利用とホスト型利用に対応し、MCP のインターフェースが異なります。
セットアップ
Python 3.12 以降、uv、再生には Spotify Premium が必要です。
- Spotify 開発者ダッシュボードでアプリを作成します。
- リダイレクト URI として
http://127.0.0.1:8888を記載どおり正確に登録します。 - アプリの Client ID と Client Secret を MCP クライアントの設定にコピーします。
{
"mcpServers": {
"spotify": {
"command": "uvx",
"args": ["spotify-mcp-jamiew"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id",
"SPOTIFY_CLIENT_SECRET": "your_client_secret",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8888"
}
}
}
}
クライアントを再起動します。初回使用時には Spotify の認証用にブラウザーが開き、トークンはローカルにキャッシュされます。クライアントシークレットとトークンキャッシュは非公開にしてください。再生には利用可能な Spotify Connect デバイスが必要なため、操作するデバイスで Spotify を開いてください。
クライアントごとのセットアップ方法:Claude Desktop、 Claude Code、および Codex。各クライアントの形式に合わせて、同じコマンドと環境変数を使用してください。
ソースから実行
上記のパッケージコマンドでは公開済みパッケージを使用するため、この README のソース変更がまだ反映されていない場合があります。現在のチェックアウトを実行するには、次のようにします。
git clone https://github.com/jamiew/spotify-mcp.git
cd spotify-mcp
uv sync
上記の設定で、command を uv に、args を
["--directory", "/absolute/path/to/spotify-mcp", "run", "spotify-mcp"] に変更します。
環境変数は同じものを使用してください。クローンせずに利用する場合は、
uvx --from git+https://github.com/jamiew/spotify-mcp.git spotify-mcp を使用します。
再認証: アーティストのフォロー状況の確認には user-follow-read が必要です。既存の許可には、新しいスコープが自動的に追加されません。プロンプトが表示されたら再起動して Spotify の認証を完了してください。それでもアクセスが拒否される場合は、Spotify アカウントでアプリの許可を確認し、再認証してください。認証キャッシュを自動的に削除しないでください。
機能
28 個のツール、6 個のリソース(ユーザー、再生、トラック、プレイリスト、アーティスト、アルバム)、5 個のプロンプトを備えています。ツールは型付き出力と動作アノテーションを提供します。大規模なプレイリストの読み取りでは進捗が報告されます。プレイリストの削除では、対応している場合に確認を求めます。並べ替えではスナップショットガードを使用します。再生の操作では、成功が保証されるものではありませんが、ベストエフォートで書き込み後の読み取りによる確認を試みます。
ツール
| ツール | 内容 |
|---|---|
get_me | プロフィールを読み取ります |
search_music | フィルターとページネーションを使って、トラック、アルバム、アーティスト、プレイリストを検索します |
get_tracks | 最大50件のトラックを読み取ります。バッチ処理が利用できない場合は、個別に読み取ります |
get_artist | 最大50人のアーティストを読み取ります。1人のアーティストの場合はトップトラックも取得します |
get_album | 最大20件のアルバムを読み取ります。1つのアルバムの場合はトラック一覧も取得します |
get_playback_state | 現在のトラック、デバイス、再生位置、シャッフル、リピートの状態を読み取ります |
control_playback | 再生、一時停止、スキップ、シーク、音量、シャッフル、リピートを操作します |
list_devices | Spotify Connect デバイスの一覧を取得します |
transfer_playback | 再生を別のデバイスに移します |
get_queue | 再生中および次に再生するトラックを読み取ります |
add_to_queue | トラックをキューに追加します |
list_playlists | ページネーションを使ってプレイリストの一覧を取得します |
get_playlist | トラックを含めずにプレイリストのメタデータを読み取ります |
get_playlist_tracks | ページネーションを使ってプレイリストのトラックを読み取ります |
create_playlist | 非公開プレイリストを作成します。公開するには public=true を設定します |
update_playlist_details | 名前、説明、公開設定を変更します |
add_tracks_to_playlist | 最大100件のトラックを追加します |
remove_tracks_from_playlist | 対応している場合は確認を行ってからトラックを削除します |
reorder_playlist | トラックのまとまりを移動します |
unfollow_playlist | 自分が作成したものも含め、プレイリストのフォローを解除します |
get_saved_tracks | ページネーションを使って「お気に入りの曲」を読み取ります |
save_tracks | トラックを「いいね」します |
remove_saved_tracks | トラックの「いいね」を取り消します |
check_saved_tracks | 最大50件のトラックが「お気に入りの曲」にあるか確認します |
check_saved_albums | 保存済みの最大20件のアルバムを確認します |
check_following_artists | フォロー中の最大50人のアーティストを確認します |
get_top_items | 期間を指定して、トップアーティストまたはトップトラックを読み取ります |
get_recently_played | 最近再生したトラックをタイムスタンプ付きで読み取ります |
知っておくべき動作
- 新しいプレイリストはデフォルトで非公開です。 既存のプレイリストは変更されません。Spotify が予期しない公開設定を報告することがあるため、機密性の高いプレイリストは Spotify アプリで確認してください。
- トラックの保存・削除と、トラック/アーティストの登録状況の確認では、50件を受け付け、上流には40件ずつバッチで送信します。アルバムの確認では20件を受け付けます。登録状況の結果は入力順に対応します。不完全なチャンクは失敗します。チャンクをまたぐ書き込みはアトミックではありません。エラー後も先行する変更が残っている場合があります。再試行する前に登録状況を確認してください。
- 制限付きアプリでは、検索ページの上限は10件です。要求した件数ではなく、返された
offset + limitを使って次のページに進んでください。トラックを個別に取得するフォールバックでは、Spotify へのリクエストが最大50回発生することがあります。 - プレイリストのページネーションでは、未解決の行や
id: nullのローカルファイルを含め、位置がカウントされます。ローカルファイルにはis_localも設定されます。これらの位置は並べ替えにも有効です。
Spotify のアクセスとポリシー
- 権限とアプリのアクセスモードによって、利用できるエンドポイントとプレイリストへのアクセスが決まります。 403 は、エンドポイントが廃止されたのではなく、権限が不足していることを意味する場合があります。既存のインテグレーションに対する 2 月の 制限は延期されました。 制限対象のアプリでは、2026 年 2 月の API ルートを使用します。
- 開発モードでは、 通常、許可リストに登録できるユーザーは 5 人で、アプリの所有者は Premium に加入している必要があります。以前の大規模な 許可リストは、既存のものとして引き続き認められる場合があります。拡張アクセスは、趣味のプロジェクトで通常承認されるものでは ありません。承認基準には、組織、法人、公開済みのサービス、月間アクティブユーザー 250,000 人が含まれます。公開 URL があっても、 これらの制限は解除されません。
- 開発者アカウント上のすべての開発モードアプリは、許可される 25 個の Client IDを使っていても、1 つのクォータを共有します。
このサーバーは、
QUOTA_EXCEEDEDを含む 429 エラーと、Retry-Afterが指定されている場合は通常のレート制限エラーを、再試行せずに そのまま返します。クォータのリセット時刻は保証されていません。 - このサーバーが使用するのは単一のローカル IDです。そのトークンキャッシュを共有したり、認証なしの公開サービスとして公開したりしないでください。 他のユーザーは、自分でホストして自身のアカウントを認可する必要があります。
- AI ポリシーは別個の制約です。Spotify 開発者ポリシー III.14 では、Spotify コンテンツを AI/ML モデルに取り込んで学習させること、またはそれ以外の方法で取り込むことを制限しています。 「学習には使わない」または「メタデータのみ」だからといって、自動的に許可されるわけではありません。III.13 では分析と 派生指標が、III.3 では音声制御アシスタントが制限されています。AI への一般公開アクセスを提供する前に、Spotify に確認または承認を求めてください。 これはリスクに関する注意喚起であり、法的助言でも許可でもありません。
実装間の移行
バージョンやツール名が共通していても、他の実装とそのまま置き換えられるとは限りません。切り替える前に、引数、制限、結果の形式を確認してください。 このサーバーのリソース、5 つのプロンプト、スナップショットガード、削除確認、再生確認に依存するワークフローがある場合は維持してください。 これらの動作は、すべての実装で共通するわけではありません。
クレジット
MIT ライセンス、著作権 2025 Varun Neal Srivastava。 オリジナルプロジェクトを制作した@varunneal、 @jamiew、@jonico、 @tedeuxx、および @karimStekelenburgに感謝します。
バナーはGlifで作成しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。