Spotify MCP について
Spotify MCPは、Spotify Web APIをリスナーや自動化ワークフロー向けのMCPサーバーとして提供し、再生、検索、ライブラリ、プレイリスト、ポッドキャストを扱います。ツール構成を調整でき、読み取り専用モードや書き込み前の確認などを備えています。
主な機能
- 01デバイスを考慮した再生操作
- 02曲、アルバム、ポッドキャストの検索
- 03ライブラリとプレイリストの管理
- 04任意で追加できるstats.fmツール
- 05読み取り専用モードと書き込み保護
活用シーン
- 01好みに合わせたプレイリストの作成
- 02プレイリスト内の重複曲の整理
- 03新しいポッドキャストエピソードの確認
- 04再生データと認証状態の確認
MCP 対応
Spotify Web APIのツール、リソース、リソーステンプレート、プロンプトをMCPクライアントに公開します。既定では選別されたツールセットを登録し、全ツールやstats.fmツールも選択できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
131掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | 種類ごとの結果数、1~10。デフォルト:5 |
| query | string | はい | 検索クエリ |
| types | array | いいえ | 検索するコンテンツの種類を配列で指定します。デフォルト:["track","artist","album"]。例として ["artist"] を渡すと、アーティストのみを検索します。"audiobook" は米国、英国、カナダ、アイルランド、ニュージーランド、オーストラリアの市場でのみ利用できます。 |
| market | string | いいえ | ISO 3166-1 alpha-2 の国コード。例:'US'。自動的に大文字に変換されます |
| offset | integer | いいえ | 返す最初の結果のインデックス、0~1000。limit と併用して結果をページ分割します |
| max_results | integer | いいえ | 返す最大項目数(デフォルト:環境変数 SPOTIFY_MCP_MAX_ITEMS、または 50) |
| response_format | enum | いいえ | 'concise' = 人間向けの簡潔な文章、'detailed' = より多くのフィールドを含む文章、'json' = 生の API オブジェクトconcise | detailed | json |
| include_external | enum | いいえ | "audio" を渡すと、再生可能としてマークされた外部ホストのオーディオ項目を含めますaudio |
詳細
SpotifyMCP
Spotify Web API の MCP サーバーです。再生、ライブラリ、プレイリスト、検索、ポッドキャストに対応しています。Spotify とは提携していません。
Spotify Web API の幅広いツールを提供し、他の多くのサーバーが省略している機能も備えています。登録が必要なラッパーについても、隠さず説明しています。生成された一覧は、登録が必要なエンドポイントをご覧ください。
デフォルトで利用できるものと、それ以外の設定方法。 環境変数を設定せずにサーバーを起動すると、検索、再生、プレイリスト、ライブラリ、フォロー機能を含む、厳選されたツール群が登録されます。これは、何も入力する前にツール一覧がコンテキストウィンドウを占有しないように調整されています。SPOTIFY_MCP_TOOLSETS=all を設定するとレジストリ全体が登録され、stats.fm ツールは SPOTIFY_MCP_STATSFM=1 でオプトインできます。どちらも docs/configuration.md にある1行の設定で利用できます。
SPOTIFY_MCP_TOOLSETS を設定せずにサーバーを起動すると、131 個のツール(スキーマは150,111バイト)が登録されます。これは厳選されたデフォルトのツール群です(#889)。SPOTIFY_MCP_TOOLSETS=all を設定すると、562 個のツールに加えて、17 個の固定リソース、28 個のリソーステンプレート、14 個のプロンプトが登録されます。ツールセットと本番環境向けゲートによって、設定済みのホストでさらに絞り込めます。どちらの数値も、ファイナライザー適用後の実際の本番環境の tools/list を示しています。
3.0 以降
3.0 は、未解決の Issue がゼロになったリリースです — すべてのエピック、その配下のすべての Issue、自分たちで監査して見つけたすべての矛盾を解消しました。バックログの大部分は、クラッシュを引き起こすような意味での「バグ」ではありませんでした。このサーバーが、実際には確認していない値を報告していた箇所です。それこそが、本当に危険な誤りです。
また、2026 年 2 月に Spotify がその下位のエンドポイントを削除したため、ツールも削除しました。アーティストのフォロー機能も含まれており、こちらには移行先がまったくありません。
🤖 これをエージェントに貼り付けてください
以下のブロックを Claude Code、Cursor、OpenClaw、または任意のコーディングエージェントにコピーしてください。SpotifyMCP をセットアップしてくれます。
⚠️ Spotify の認証情報をチャットに貼り付けないでください。 Spotify の Developer Terms では、Client ID は認証情報として扱われます。§VI.1.1 では「I.D.s, client I.D.s, keys, passwords, security codes, or tokens」をまとめて Security Codes と定義し、§VI.1.3 では第三者への開示を禁じ、§VI.1.4 ではそれらの機密保持について利用者が責任を負うと定めています。会話に入力した情報は、モデルプロバイダーによって保持され、シェルの履歴に書き込まれ、エージェントのコンテキストウィンドウに取り込まれます。このサーバーが必要とする認証情報は Client ID だけですが、公開識別子ではなく Security Code です。パスワードと同じように扱ってください。
https://github.com/NovaLux12/spotify-mcp-server から Spotify MCP サーバーをセットアップしてください。 1. https://developer.spotify.com/dashboard で Spotify アプリを作成する手順を案内してください。 リダイレクト URI は http://127.0.0.1:8888/callback にします。ダッシュボードの どこに Client ID が表示されるかを示したら、そこで止めてください。自分でコピーします。 2. クローンしてビルドします。 git clone https://github.com/NovaLux12/spotify-mcp-server.git cd spotify-mcp-server && npm ci && npm run build 3. MCP ホストがサーバー環境変数を読み込むファイルを教えてください。ホストのサーバー 設定は常に動作します。ローカルの .env が読み込まれるのは、このリポジトリの npm run dev または npm start 経由で起動した場合のみです。これらのコマンドは Node >=22.9 で --env-file-if-exists を渡します。公開済みのバイナリは読み込みません。 追加する正確な行を表示してください。Client ID は自分で入力します。尋ねたり、 入力した ID をそのまま表示したりしないでください。 4. サーバーを起動して認証コマンドを実行し、ブラウザーが開いたらログインを完了してください。 このサーバーは PKCE を使用するため、クライアントシークレットは不要です。Client ID 以外に 取得が必要な認証情報もありません。 5. 読み取り専用の spotify_doctor ツールで検証し、その結果の行を報告してください。
この MCP サーバーを選ぶ理由
| 充実した機能 | 再生、検索、カタログ、ライブラリ、プレイリスト、フォローに加え、重複の整理、M3U/CSV のインポート・エクスポート、ポッドキャストのセッション、スナップショットの差分確認、リスニング分析、マーケットチェック、stats.fm の好み分析、好みに基づく概要・プレイリスト・レポートなども利用できます。 |
| 安全 | 書き込み時には dry_run で事前確認でき、変更内容を証明するレシートが発行され、一括削除には人間の確認が必要です。また、READONLY を指定すると、書き込み可能なモジュールが非表示になります。 |
| 機能範囲を正直に説明 | リスニング履歴を派生指標(時間別ヒストグラム、曜日別プロフィール、楽曲発見率など)に変換するツールは、SPOTIFY_MCP_EXPERIMENTAL_ANALYTICS=1 で明示的に有効化するまで無効です。これは、Spotify の Developer Policy Sec. III.13 で、派生リスナーシップ指標の作成が禁止されているためです。ご自身のデータを再提示するその他の分析機能は、常に有効です。docs/compliance.md をご覧ください。 |
| 誠実 | 実行できないツールが実行できるとうたうことはありません。利用制限のあるエンドポイントにもラッパーを用意し、代替の読み取り機能があれば提供します。また、クラッシュするのではなく、403 の理由を平易な言葉で説明します。登録が必要なエンドポイント をご覧ください。この情報は src/gating.ts から生成されています。 |
| 洗練 | 最大 500 件までのページネーション、ポッドキャストへの標準対応、デバイスを考慮した再生、spotify_doctor による自己診断、実際のテストスイートを備えています。 |
クイックスタート
1. Spotify アプリを作成する
Spotify Developer Dashboard → アプリを作成 → 次のリダイレクト URI を正確に追加します:
http://127.0.0.1:8888/callback
Client ID をコピーします。
2. 認証する
SPOTIFY_CLIENT_ID=your_client_id_here npx -y @novalux12/spotify-mcp@latest auth
ブラウザーが開き、トークンが ~/.spotify-mcp/tokens.json に保存されます。以後、トークンは自動的に更新されます。
Windows とヘッドレス環境
Windows(コマンドプロンプト):
set SPOTIFY_CLIENT_ID=your_client_id_here && npx -y @novalux12/spotify-mcp@latest auth
Windows(PowerShell):
$env:SPOTIFY_CLIENT_ID="your_client_id_here"; npx -y @novalux12/spotify-mcp@latest auth
Windows はインストールと日常的な利用に対応していますが、CI の対象外です。 上記のコマンドはサポート対象の手順ですが、テストスイートは Linux でのみ実行されるため、Windows 固有のリグレッションはリリース前に検出されない可能性があります。 Windows で検証済みの内容と未検証の内容、既知の不足点については、 docs/platform-support.md をご覧ください。
ヘッドレス環境/リモートホスト:
SPOTIFY_HEADLESS=1 SPOTIFY_CLIENT_ID=your_client_id_here npx -y @novalux12/spotify-mcp@latest auth
# prints a URL → open it on any machine → paste the redirect back
確認:npx -y @novalux12/spotify-mcp@latest doctor を実行し、終了コードが 0 なら準備完了です。
3. MCP ホストに追加する
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["-y", "@novalux12/spotify-mcp@latest"],
"env": { "SPOTIFY_CLIENT_ID": "your_client_id_here" }
}
}
}
ホストを再起動します。チャット入力欄にハンマーのアイコンが表示されれば接続済みです。
Claude Code・OpenClaw・その他のホスト
Claude Code(JSON の編集不要):
claude mcp add spotify -- npx -y @novalux12/spotify-mcp@latest
export SPOTIFY_CLIENT_ID=your_client_id_here
OpenClaw — ~/.openclaw/openclaw.json の mcp.servers:
"spotify": {
"command": "node",
"args": ["/path/to/spotify-mcp-server/dist/index.js"],
"cwd": "/path/to/spotify-mcp-server",
"env": { "SPOTIFY_CLIENT_ID": "your_client_id_here" }
}
仕様に準拠したホストならどれでも動作します。mcpServers または servers の下に、同じ形式の command/args/env を指定します。ホストが環境変数を渡せない場合は、事前に一度認証してください。トークンキャッシュは保持されます。
できること
- 「今月のトップトラックは?」
- 「深夜のドライブ用プレイリストを作って」
- 「Blinding Lights をワークアウト用プレイリストに追加して」
- 「新しいエピソードが配信されたポッドキャストは?」
- 「すべてのプレイリストから重複を整理して」
- 「自分の好みはどんな感じ?それをもとにプレイリストを作って」
- 「stats.fm の生涯ジャンルと、今月再生したジャンルは一致している?」
設定
すべて環境変数で設定します。設定ファイルはありません。必須なのは SPOTIFY_CLIENT_ID のみです。
| 変数 | 例 | 目的 |
|---|---|---|
SPOTIFY_MCP_TOOLSETS | unset | ツール数に上限があるホスト向けに、グループ単位で絞り込みます。未設定の場合は厳選されたデフォルトの構成を登録し、all を指定するとすべて登録します。それぞれのツール数は上記の生成済み一覧に記載されています。 |
SPOTIFY_MCP_STATSFM | 1 | 4 つの登録キー(statsfm、taste、tastecomposites、tastejukebox)にまたがる、stats.fm がバックエンドの 50 個のツールを登録します。デフォルトでは無効です。別途 stats.fm のユーザー名が必要です。そのうち 2 つ(taste_to_playlist と statsfm_jukebox)は Spotify に書き込みます。それ以外は読み取り専用です。spotify-mcp tools で、実際に環境に登録されているツールを確認できます。 |
SPOTIFY_MCP_READONLY | 1 | 書き込み可能なモジュールを非表示にします。読み取り専用のリソースとプロンプトは引き続き利用できます。 |
SPOTIFY_MCP_HISTORY | 1 | 取り消しと監査のため、変更を JSONL に記録します。 |
SPOTIFY_MCP_RECEIPTS | 1 | 変更のレシートを永続化し、再起動後も verify_receipt/undo_mutation を利用できるようにします。 |
SPOTIFY_MCP_ATTRIBUTION | 0 | 「Spotify が提供する音楽データ」というフッターと、行ごとの open.spotify.com リンクを無効にします。0/false/no/off に設定しない限り有効です。この開示は必須のため、明示的に偽の値を設定した場合のみ削除されます。 |
詳細なリファレンス:docs/configuration.md
spotify_doctor(CLI およびサーバー内ツール)は、追加設定なしで、トークンの状態、スコープの不足、Premium による制限、レート制限のクールダウン、リクエスト/クォータの使用状況(累積数とローリングウィンドウ内の数、#904)、読み取りキャッシュの負荷(保持中のエントリ数、保持バイト数、キャッシュには大きすぎるレスポンス、#894)を診断します。
2.0 へのアップグレード
2.0 は契約上のリリースです。ツール名が 1 つ廃止され、4 つの項目が移動し、1 つの保証が強化されました。
-
get_show_episodesは削除されました。list_show_episodesを使用してください(同じエンドポイント、同じ引数で、ずれていた別名だけがなくなっています)。名前が変更されたのはこれだけで、インターフェース上のほかのすべての名前はそのままです。正確な登録数はこのファイルの先頭に自動生成されるため、数が古くならないよう、この文ではあえて独自の数を記載していません。 -
破壊的な書き込みはフェイルクローズになります。 確認が必要な一括書き込みはすべて、クライアントで確認を求められない場合、確認なしに進めず拒否するようになりました。
archive_played_episodesのconfirm: trueでは、削除が承認されなくなりました(引き続き受け付けられますが、すべての結果で無視されたことが示されます)。ヘッドレス自動化では、SPOTIFY_MCP_CONFIRM=neverを明示的に設定してください。 -
プレイリストの集合演算では、入力が正規化されています。 A/B ペアは
playlist_a/playlist_b、順序付きリストはplaylists、playlist_subtractでは基準となるプレイリストにbase_playlist_idを使用します。これが 2.0 の契約であり、併用が認められていた古い表記は 3.0 で廃止されました(#1287)。それらはどのツールのスキーマにも含まれなくなりました。引き続き古い表記を送信する呼び出しは、Spotify へのリクエスト前に拒否され、送信された値と代わりに送る値の両方を示すvalidationエラーが返されます。そのreasonはretired_inputです。各ツールで宣言されていたエイリアスのペアまたはリストは 1 つだけなので、以下の表は一括ではなくツールごとの移行マップです。種類 正規名 そのツールで以前宣言されていた表記 A/B ペア playlist_a,playlist_ba/b、またはplaylist_id_a/playlist_id_b、またはplaylist_a_id/playlist_b_id— ツールごとにいずれか 1 つ順序付きリスト playlistsplaylist_ids、またはsource_playlist_ids、またはsources— ツールごとにいずれか 1 つ減算 base_playlist_id+playlistssubtract_playlist_ids、または位置指定形式のplaylists: [base, ...sources]— ツールごとにいずれか 1 つ位置指定形式がなくなったため、省略できる基準プレイリストはなくなり、
base_playlist_idは再び必須になりました。ツールで宣言されておらず、廃止された表記でもない名前はunknown_paramエラーになります。これは、サーバーが 3.0 までその名前を公開していたことを示すretired_inputとは異なるエラーです。 -
数値上限の名前が正規化されました。
max_resultsは返される件数を制限し、limitとscan_capは各ソースから読み取る量を制限します。 -
不明な引数は拒否されます。 無視される代わりに、型付きの
unknown_paramエラーが返されるため、名前が変更されたパラメーターは何も起こらず無視されるのではなく、明確にエラーになります。
アップグレード後に spotify_doctor を実行してください。登録されているインターフェース、モジュールを非表示にしたゲート、許可されたスコープを 1 回の呼び出しで報告します。
ドキュメント
- docs/v3-roadmap.md — 3.0 で予定されていることと、そのすべての根底にある 1 つのバグ
- docs/migration-v3.md — 3.0 で廃止されたすべての名前とその置き換え先(代替がない操作も 1 つ含む)
- SPEC.md — すべてのツール、リソース、プロンプト
- ARCHITECTURE.md — 構築方法
- docs/configuration.md — すべての環境変数
- docs/cli.md —
tools、call、watch、export、init:MCP クライアントとしての CLI - docs/schema-budgets.md — モジュールごとのスキーマ予算と登録順序
- docs/statsfm.md — 2 つ目のデータソース stats.fm:セットアップ、ツールの早見表、注意点
- docs/cookbook.md — コピーして使えるエージェントのレシピ
- docs/non-goals.md — v2 で対応しないこと、その理由、代わりに提供するもの
- docs/taste.md — プレイリストを作成する、匿名化された嗜好のショーケース
- docs/wave2-composites.md — 読み取り専用の嗜好コンポジット
- docs/distribution.md — 配布とリリースノート
- docs/faq.md — 認証、Premium、403、ヘッドレス、トークン
- docs/compliance.md — ブランドマーク、帰属表示、送信時の
User-Agent - CONTRIBUTING.md — 開発環境のセットアップと規約
- CHANGELOG.md — リリース履歴
要件
- 再生操作(再生/一時停止/スキップ/シーク/音量/キュー)には Premium が必要です。無料アカウントでも検索、ライブラリ、プレイリストは引き続き利用できます。
- Node 22.9 以降、開発モードの Spotify アプリ(拡張クォータが適用されるまではユーザー 5 人)。
- オーディオブックは Spotify により US/UK/CA/IE/NZ/AU に制限されています。
- 一部のエンドポイントは アプリ登録による制限があります。現在のアプリ登録では、スコープや Premium の有無にかかわらず 403 が返されます。以前からある登録で引き続き
200が返されるかは未検証です(#1338)。これはツールではなく、アプリ登録の特性です。登録制限のあるエンドポイントを参照してください。
登録制限のあるエンドポイント
一部の Web API エンドポイントはアプリ登録レベルで拒否されます。現在の Spotify アプリ登録では、付与する OAuth スコープやアカウントが Premium かどうかにかかわらず、403 Forbidden が返されます。これは Spotify 側の制限であり、設定ミスではありません。
ここにあるものは、単に「削除」されたわけではありません。 この分類について説明する情報源は 3 つありますが、内容は一致していません。そのため、以下の表には断定的な結論ではなく、実行時の挙動を記載しています。
- Spotify の2026 年 2 月の変更履歴では、一連の操作に
[REMOVED]のマークが付けられています。 - 公開中の OpenAPI スキーマでは、同じパスの大半が引き続き公開されています。削除されずに
deprecated: trueと記載されており、その中には/artists/{id}/top-tracksと、7 つすべてのGet Severalバッチパスが含まれます。 - 実行時の実態は、どちらのドキュメントにもありません。あなたのアプリ登録に読み取りが許可されているかどうかが実態です。許可のない登録では
403/404/410が返されます。以前からある登録で引き続き200が返されるかは未検証です(#1338)。このリポジトリにはそれを示す調査結果がなく、かつてその根拠として引用された唯一の調査記録では、該当するすべてのパスで403が記録されています。
したがって、ここでの 403 はツールではなく登録の特性です。制限対象だからといってツールが非表示になることはなく、ゾンビ化した制限対象ツールもありません。どのツールも、文書化された代替手段を読み取って応答するか、呼び出しを実行して 403 の理由を平易な英語で説明します。正とする一覧は src/gating.ts の GATED_FAMILIES 配列です。GATED_PATH_PATTERNS はこの配列から導出されるため、分類器とこの表に食い違いは生じません。
| エンドポイントのファミリー | これを呼び出す同梱ツール | 現在の登録での状態 |
|---|---|---|
browse-categories — /browse/categories*(一覧、{id}、{id}/playlists) | get_category、browse_category_deepdive、category_resolver | 403 の説明あり |
browse-new-releases — /browse/new-releases | (なし — このパスを読み取る同梱ツールはありません) | 置き換え済み。呼び出し箇所なし |
markets — /markets | get_available_markets、market_validate | 403 の説明あり |
artist-top-tracks — /artists/{id}/top-tracks | get_artist_top_tracks、queue_playlist、artist_collab_network、artist_completeness_score、batch_add_to_playlist、copy_playlist、move_items_between_playlists | 403 の説明あり |
user-profile — /users/{id} および /users/{id}/playlists | get_user_profile、get_user_playlists_by_id、get_playlist_followers | 403 の説明あり |
me-type-contains — ドキュメントに記載された /me/{type}/contains の確認(tracks、albums、shows、episodes、audiobooks、following) | (なし — GET /me/library/contains に移行済み) | 置き換え済み。呼び出し箇所なし |
playlist-followers-contains — /playlists/{id}/followers/contains | (なし — GET /me/library/contains に移行済み) | 置き換え済み。呼び出し箇所なし |
batch-several — 複数 ID を指定する ?ids= のバッチエンドポイント(/tracks、/albums、/artists、/episodes、/shows、/audiobooks、/chapters) | get_several_tracks、get_several_albums、get_several_artists、get_several_episodes、get_several_shows、get_several_audiobooks、get_several_chapters、catalog_batch_lookup | ID ごとの読み取りに置き換え済み |
上記の 8 つのファミリーはいずれも、Spotify の 2026 年 2 月の変更履歴で [REMOVED] とされています。
信頼できる情報源と照らし合わせて、ご自身で一覧を確認してください。
grep -n "id: '" src/gating.ts # the families, with tools and fallback per row
注記:
- この一覧にあるファミリーは、実行時の分類器であり、ツールが呼び出すことを保証するものではありません。3 つのファミリー(
browse-new-releases、me-type-contains、playlist-followers-contains)には、現在有効な呼び出し箇所がありません。これらを使用していたツールは代替手段に移行済みです。将来呼び出しが追加された場合にも 403 の契約が適用され、対象からひそかに漏れることがないよう、パターンは保持されています。 GET /me/library/containsはゲート対象ではなく、同じプローブで 200 を返しました。このエンドポイントは、check_playlist_following、restore_library_snapshot、レシート検証で使用する保存状態の読み取りを支えています。上記のcontainsファミリーは、変更履歴でこのエンドポイントに置き換えられた、ドキュメントに記載されたタイプごとの確認です。(プレイリストの重複クリーンアップツールはこのセットに含まれません。これらは/playlists/{id}/itemsをページングします。)- バッチのフォールバック(#725)。
Get Severalバッチエンドポイントが 403 を返すと、fetchSeveralはクライアントの既存のキューとバックオフを使い、ID ごとのGET /<kind>/{id}呼び出しで再試行します。ID ごとのパスはゲート対象のクラスに含まれないため、読み取りは引き続き成功します。レスポンスにはdegraded: trueと、文章内の[degraded: batch endpoint returned 403; … fetched individually]というフッターに加え、structuredContentのdegraded_reasonが含まれます。これにより、呼び出し元は通常のバッチ読み取りと、項目ごとに往復した読み取りを判別できます。 - Spotify が削除済みとして掲載しているものの、このサーバーではまったくラップしていないエンドポイント(同梱ツールがなく、説明の対象もありません):
/recommendations、/recommendations/available-genre-seeds、/me/apps、/me/chapters、/artists/{id}/related-artists、/audio-features、/audio-analysis、/browse/featured-playlistsの読み取り、および/playlists/{id}/tracksファミリー(/playlists/{id}/itemsに置き換え済み)。ツールが存在しないことが正確な答えであり、説明すべき 403 もないため、これらは上の表に含まれていません。
トラブルシューティング
- **「認証されていません」** → `auth` を再実行してください。`~/.spotify-mcp/tokens.json` が存在することと、リダイレクト URI が完全に一致していること(末尾にスラッシュがないこと)を確認してください。 - **認証ループ/S256 エラー** → プライベートウィンドウを開き、まず spotify.com にログインしてから、そのウィンドウで認証 URL を再試行してください。 - **ポートが使用中(8888)** → ポートを解放するか、`SPOTIFY_REDIRECT_URI` を別のポートに設定するか、`SPOTIFY_HEADLESS=1` を使用してください。通常の原因は、以前の `auth` がまだポートを保持していることなので、メッセージには `EADDRINUSE` とポート番号が表示されます。 - **ブラウザーのコールバック待機中にタイムアウトしました** → ポートの競合ではありません。リスナーはポートにバインドされた後、閉じられています。再試行し、リダイレクト URI が正確に登録されていることを確認してください。`SPOTIFY_AUTH_TIMEOUT_MS`(デフォルトは 5 min)でタイムアウトを設定できます。 - 再生時の **「Premium が必要です」** → Free アカウントでは想定される動作です。回避策はありません。 - **検索ツール**(カテゴリ、マーケット、トップトラック、ユーザープロフィール、タイプごとの `contains` チェック)での **`Forbidden`** → これらのエンドポイントは Spotify による登録制です。[登録制エンドポイント](#registration-gated-endpoints)を参照してください。(`GET /me/library/contains` は対象ではないため、ここでの 403 は登録制によるものではなく、実際の問題です。) - **それでも解決しない場合** → `npx -y @novalux12/spotify-mcp@latest doctor` を実行するか、エージェントに [spotify-mcp-doctor スキル](skills/spotify-mcp-doctor/SKILL.md)を実行するよう依頼してください。このサーバーが対象としないもの
v2 には明文化された非目標の一覧があるため、対象外のリクエストには、対応するかもしれないという曖昧な回答ではなく、明確な回答が得られます。以下の各項目の根拠は SPEC §1に記載されており、 docs/non-goals.mdには、その両方の根拠となる記録があります。各項目で除外されるもの、その根拠となる情報源、そしてサーバーが代わりに提供するものを確認できます。
- オーディオストリーミング、オーディオ分析、オフライン再生
- Web UI、ダッシュボード、MCP UI サーフェス
- マルチテナント運用またはホスト型運用
- あるユーザーの認証情報を複数のユーザー間で共有すること
- 歌詞
- Spotify Connect SDK とネイティブクライアント統合
- 音声コントロール
- Spotify データを使ったモデルのトレーニング、または派生プロフィールのエクスポート
- 2つ目のサードパーティー上流、アドテック、または収益化を目的とする外部へのデータ送信
- Spotify 独自の制御を回避すること
開発
git clone https://github.com/NovaLux12/spotify-mcp-server.git && cd spotify-mcp-server
npm ci && npm run build
cp .env.example .env # add your Client ID
npm run auth # one-time login
npm run dev # run from source
npm test # unit + MCP smoke tests
Spotify とは提携していません。Spotify Developer Termsに従ってご利用ください。
MIT © Carme99 および NovaLux12 のコントリビューター · calebWei/SpotifyMCP および varunneal/spotify-mcpに謝意を表します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。