Lineupify
MCP server · Claude Desktop, Claude Code, Cursor

Say what you want to hear.

A festival poster, a mood, a song you like or a friend’s playlist. Lineupify finds the artists, picks the songs and hands you a draft you can read and edit. Nothing is written to Spotify until you say publish.

$ npx -y lineupify-mcp init
What you need
With Spotify: your own free developer app, about two minutes, no client secret. The account that creates it needs Premium.
Without Spotify: Deezer mode needs no account at all. The same drafts, exported as links, CSV or M3U instead of published.
Node.js 20 or newer. Everything runs on your machine.
No account with us, no server, no telemetry. MIT licensed.
A Claude Code session: a poster image is attached to the message “Make me a playlist for this lineup”. Lineupify builds a 92-track draft covering every tier, publishes it as a private playlist, and names the four acts it could not match.
One sentence and a photo of a poster, in Claude Code. Ninety-two tracks across every billing tier, published private in under a minute, with the four acts it could not match named rather than quietly dropped. Swipe the panel to read it.

Where a playlist comes from

Four ways in, one draft out.

Your assistant turns what you said into artists and seeds. Lineupify resolves each artist, ranks their songs with Deezer’s public data and optionally Last.fm, then matches every track to Spotify by ISRC so you get the exact recording.

A festival poster

Paste it, or photograph it.

Names are sorted into headliner, sub and undercard, and each tier gets its own number of songs. Dates, stages and ticket lines are dropped.

Artists 9 (resolved 8 · unresolved 1)
Tracks 27 · 1h42m · via isrc 25 / text 2
Tiers headliner 2×5 · sub 3×3 · undercard 4×2
Not found (1): DJ Fluffhead
A sentence

A mood, a genre, a decade.

Or a country, or an artist you like. Say how long it should be and whether it should stay clean; both are filters, not suggestions.

“Rainy Sunday jazz for cooking,
 about an hour, nothing explicit”

Tracks 10 · 52:10 · clean only · private
A song you already love

More like this, other artists.

Neighbours come from Last.fm and ListenBrainz co-listening data at the recording level, not from a genre guess.

“Songs like Ritviz – Udd Gaye,
 other artists only”

seed similar_songs · pinned exact recordings
Two playlists

Yours and a friend’s.

See what they share and why, then get one mix built from the artists several of you already like, plus their neighbours.

“What do our playlists share?
 Then make us a mix.”

seed blend · 2 to 4 sources

The part that matters

Nothing is written to Spotify until you say publish.

An assistant with write access to your music library is only comfortable if you see the work first. Every build stops at a draft on your disk.

1

Read it

Every track with the artist it came from and how it was matched, plus the artists that were not found, by name.

2

Change it

Swap a song, drop an artist, reorder, undo. Ten revisions of history. Or export to CSV, M3U, Markdown or plain links.

3

Publish it

Private by default. A read-only switch disables writes entirely, and Spotify’s API has no way to delete a playlist.

A published Spotify playlist named “Metal · Lineupify” with 78 songs, about 6 hours, and a four-album cover mosaic.
A draft after publishing. The name and description are yours to set, and since 0.6.0 so is the cover art.

How it works

Readable at every step.

No black box in the middle. Each stage leaves something you can inspect, and a build that is interrupted picks up where it stopped.

Step one

Seeds

Poster text, a mood, a genre, a song, a chart, a country, a playlist or your own taste become a list of artists with tiers.

Step two

Resolve

Each artist is found on Deezer, then Last.fm if you added a key, then Spotify. Collaborations are split. Misses are recorded.

Step three

Match

Songs are ranked, matched to Spotify by ISRC, deduplicated by recording, filtered by year, tempo or explicitness, then ordered.

Step four

Review

The draft is checkpointed to disk after every artist, so a quota, a closed laptop or a dropped connection pauses it instead of losing it.

Worth knowing first

The limits, before you install.

Most of these come from Spotify’s terms for new developer apps rather than from Lineupify. They are the reason it is built the way it is.

Development Mode

A new Spotify app serves at most five people and its owner must have Premium. Production access is granted only to registered businesses with 250,000 monthly users, so everyone brings their own free app. Add up to four other people under User Management in the dashboard.

Ranking without Spotify

Spotify removed artist top tracks, recommendations, popularity and audio features for new apps. Songs are ranked with Deezer’s public API and optionally Last.fm, then matched back to Spotify by ISRC. Very small or brand-new acts may be missing from Deezer and show up as unresolved.

Deezer is read-only

Deezer stopped issuing API credentials to new developers in 2025, so Deezer drafts are exported rather than published. Reads, ranking, related artists and tempo stay keyless and unaffected.

Logins expire

Spotify refresh tokens die six months after you sign in; status warns you thirty days out. The daily request quota pauses a build rather than failing it, and the next get_draft resumes from the last checkpoint.

There is a playlist hiding in every lineup.

Install it, point your assistant at a poster, and see what comes back. It costs nothing and it publishes nothing without you.

$ npx -y lineupify-mcp init