spotify-library-mcp
spotify-library-mcp
Lokaler MCP-Server + CLI zur Verwaltung deiner eigenen Spotify-Bibliothek. Einzelbenutzer, läuft auf deinem Rechner, PKCE-Auth (kein Client-Secret nötig).
Einrichtung (einmalig)
https://developer.spotify.com/dashboard → Create app
Redirect URI:
http://127.0.0.1:8888/callbackAPI: Web API
Kopiere die Client-ID in
.env(SPOTIFY_CLIENT_ID=...)npm install && npm run auth→ der Browser öffnet sich → bestätigen → Refresh-Token wird in.envgeschriebenÜberprüfen:
node bin/spot.js playlists
Related MCP server: Spotify MCP Server
Verwendung mit Claude Code
.mcp.json in diesem Projektordner registriert den Server für dieses Projekt. Für jedes Projekt:
claude mcp add --scope user spotify-library -- node /path/to/spotify-library-mcp/src/server.jsCLI
node bin/spot.js playlists
node bin/spot.js playlist <id>
node bin/spot.js rename <id> "New name"
node bin/spot.js merge '{"sourceIds":["a","b"],"newName":"Merged","deleteSources":true}'
node bin/spot.js delete <id>
node bin/spot.js top short_term 20
node bin/spot.js summary # whole library
node bin/spot.js summary <id> # one playlist
node bin/spot.js find "Sultans" # which playlists contain it
node bin/spot.js dupes
node bin/spot.js diff <a> <b>
node bin/spot.js snapshot weekly && node bin/spot.js changes
node bin/spot.js rediscover 4 50Werkzeuge
Playlists — list_playlists, get_playlist, create_playlist, update_playlist, add_tracks, remove_tracks, delete_playlist, merge_playlists Bibliothek — get_saved_tracks, save_tracks, remove_saved_tracks, get_top_tracks, get_top_artists, get_recently_played Suche — search, find_track (artist-verified), get_search_budget, get_api_limits Analyse (serverseitig berechnet, kompakte Ausgabe — Dinge, die Spotify-Nutzer seit einem Jahrzehnt fordern):
summarize_library— gemerkte Songs in keiner Playlist, veraltete/leere Playlists, Überschneidungen zwischen Playlists, Jahrzehnte, Duplikatesummarize_playlist— Laufzeit, Top-Interpreten, Jahrzehnte, Duplikate, Überreprésentationfind_in_playlists— „In welchein meiner Playlists steckt dieser Song?"dedupe_report— gleicher Interpret in gleicher Titl, Remaster/Live/Edit-Suffixe ignoriert, mit zu entfernenden IDsplaylists_diff— nur-in-A / nur-in-B / geteiltsnapshot_library·list_snapshots·changes_since— Backup + „was geänderte seit letzter Woche" (Umbenennungen, Hinzugefügtes, Entferntes, Likes)rediscoverer— vor Jahren geliebt, aber nicht in Top-Tracks und letzten Plays; über Interpreten verteilt
Bei meiner Bibliothek fanden diese Werkzeuge: 233 gemerkte Songs in keiner Playlist, 210 Fast-Duplikate innerhalb von Playlists, 1.113 vergessene Likes aus 2018–2021.
Bibliotheksskripte (wie ich 40 Playlists → 9 reorganisiert habe)
node scripts/pull.js library.json # snapshot playlists + likes + tops
node scripts/build.js library.json # file every track into genre collections (additive)
node scripts/moods.js # collapse genre collections into mood playlists
node scripts/curate.js library.json # like picks, build Programming + שישי
node scripts/nostalgia.js library.json # 3-generation nostalgia
node scripts/explore.js library.json # 🧭 Explore: ~400 new artists, many languages (search-heavy, resumable)
node scripts/genz.js # 🚗 Gen Z
node scripts/trending.js library.json # 📈 Trending from live popularityDie Künstlerlisten in scripts/classify.js und Verwandten sind mein Geschmack — forken und anpassen. Jedes Skript ist additiv; Löschungen erfolgen über separate, explizite spot delete-Aufrufe.
Tests
npm test lässt den gesamten Ablauf gegen einen In-Memory-Mock-Spotify (src/mock-spotify.js) laufen. Es werden keine echten Anmeldedaten angefasst.
claude.ai-Connector (remote)
npm run tunnel startet src/http.js (Streamable HTTP unter /<MCP_SECRET>/mcp) sowie einen Cloudflare-Quick-Tunnel und gibt die URL aus, die du in claude.ai → Settings → Connectors → Custom connector hinzufügen einfügst (kein OAuth; der geheime Pfad ist das Tor).
Quick-Tunnel erhalten bei jedem Start einen neuen Hostnamen. Für eine stabile URL betreibe einen benannten Cloudflare-Tunnel auf deiner eigenen Domain oder deploye src/http.js hinter deinem vorhandenen Reverse-Proxy (z. B. der Nightscout-Box) mit MCP_SECRET, SPOTIFY_CLIENT_ID, SPOTIFY_REFRESH_TOKEN in der Umgebung.
Spotify-API-Limits (2026, Apps nach Nov. 2024 erstellt) — eingebaut
Was | Status | Wie damit umgegangen wird | |
| entfernt | Der Client sieht eine klare Fehlermeldung, bevor ein Anfrage ausgelöst wird | |
Batch- | 403 | dasselbe Version + returnn | Unterschied |
Künstler- | weg | Keine Genres-Daten verfügbar, verwende dein eigenes Wisssen | |
| umbenannt in | Client nutzt die neuen Pfade | |
| veraltet |
| |
| veraltet |
| |
Nur-Name-Suche | liefert Karaoke/Cover |
| |
| ~1000/Tag pro App → 429 mit | filterares Tagesbudget (Standard 800, | |
~500 schnelle Aufrufe | stillle drop auf-TLS-Ebene für ~10 min (kein 429) | 150 ms-Teuerung + Retry mit Backoff |
Das get_api_limits-Werkzeug gibt diese Liste an das Modell zurück; die MCP-Anweisungen des Servers enthalten ebenfalls die Zusammenfassung.
Suchbudget (ermittelt am 2026-08-23)
~1.000 /search-Aufrufe an einem Tag brachten dieser App ein 429 mit retry-after: 75469 (21 h). Das Limit ist pro App (Client-ID), nicht pro Benutzer, und es ist die einzige Kontingent, die wir erreicht haben, die für einen Tag aussperrt.
Was der Server dagegen tut (src/budget.js, Zustand in .search-budget.json):
zählt Suchen pro UTC-Tag und lehnt Anfragen über
SPOTIFY_SEARCH_DAILY_CAP(Standard: 800) mit klarer Fehlermeldung abcached jedes Suchergebnis, sodass erneute Skriptläufe 0 Suchen kosten
speichert einen Bann aus einem langen
retry-afterab und schlägt schnell fehl, bis er abläuft — keine 21-stündigen Schlafphasenget_search_budget-Tool /searchBudget()melden verbleichende, gecachte und gebannt-bis
Bulk-Skripte (scripts/explore.js, genz.js, trending.js) geben zuerst das Budget aus, stoppen sauber am Limit und setzen beim Neutern fort (sie überspringene, was bereits in der Playlist ist). Plantalen ≈ 250 Suche pro Skript pro Tag oder verwende eine zweite Spotify-App für Unmassgeschäfte.
Morgenplan: Bann endet 2026-08-24 ~14:00 IDT → explore ausführen (≈400, zwei Tage) oder eine frische Client-ID darauf zeigen.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseDqualityDmaintenanceEnables Claude to interact with Spotify by searching songs, creating playlists, getting recommendations, and managing your music through your Spotify account.73
- AlicenseNot gradedqualityNot gradedmaintenanceConnects Claude to Spotify for music discovery, playlist creation, and collection analysis through natural language. Enables searching songs, analyzing music diversity, creating playlists, and getting recommendations using Spotify's API.
- FlicenseNot gradedqualityDmaintenanceEnables Claude to control Spotify features including playback control, playlist management, search, and accessing user's listening history and preferences through the Spotify API.1
- FlicenseAqualityDmaintenanceIntegrates Spotify with Claude to enable voice-controlled music playback, playlist management, and personalized recommendations through conversational AI. It provides comprehensive tools for searching tracks, managing liked songs, and analyzing listening habits.151
Related MCP Connectors
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/oliver-virt/spotify-library-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server