Deep Apple Music curation: grounded selection, narrative arcs, and flow-aware sequencing.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español | Português do Brasil | Deutsch | Français
Deep playlist curation for Apple Music: describe a feeling, scene, era, tension, or narrative arc; your agent turns it into a catalog-grounded selection whose versions, pacing, and transitions hold together as a listening experience.
See the 12-track curation demo: 22 grounded candidates become a three-act story, including a case where the numerically cheaper order damaged the narrative.
Pure Python standard library — no pip install required to run, and no Apple Developer Program
membership needed. Requires Python 3.10+ and works on Windows / macOS / Linux.
The primary interface is the local am-mcp stdio server. The language model already running in
your MCP client interprets the brief and chooses candidates; this project searches the Apple Music
catalog, resolves exact tracks, and performs account operations. There is no bundled model, LLM
API key, artist list, or fixed theme. The CLI remains available for login, diagnostics, scripting,
audits, and advanced sequencing.
Recommended — install the MCP stdio service:
Already use uv? Run the published package without a permanent install:
For an MCP client, the equivalent Registry-aligned configuration is:
Register am-mcp in the client. The common configuration shape is:
Then describe the result, not the implementation:
Create a 25-track late-night driving playlist: atmospheric alternative R&B and electronic, mostly from the last ten years, no live versions, with a calm landing.
Clients with MCP Prompt support can select create_playlist_from_description. In every other
client, send the same request in chat: the server instructions and typed tools expose the same
status → candidate pool → catalog grounding → direct comparison → dry-run → create workflow.
From a clone (nothing to install):
Installation also puts the CLI and MCP commands on your PATH:
For development, pip install -e . from a clone makes edits take effect without reinstalling.
See SETUP.en.md for the credential walkthrough (three ways to get the user token, including a zero-dependency one).
This is deliberately harder than “make me a workout playlist.” The brief asks music to carry a plot, and some of its constraints cannot be expressed as tempo or mood sliders:
Build a 12-track, three-act story in which a machine wakes in a city, mistakes attention for intimacy, asks to be touched, becomes vulnerable, and sees dawn. Cross electronic music and art pop from the late 1970s to the present; use one track per artist, studio recordings only, and let the voices become progressively more human. The ending must feel quiet and earned, not merely low-energy.
The run below used the public US Apple Music catalog on 2026-09-23. It did not read or write a private library.
Each title below opens the exact US catalog recording returned by the resolver, so the sequence can be auditioned rather than taken on trust.
| Act | Grounded order | What the sequence is doing |
|---|---|---|
| I — Boot | The Robots — Kraftwerk Technopolis — Yellow Magic Orchestra Kid A — Radiohead | A body, then a city, then an unstable first-person voice. |
| II — Desire | Oblivion — Grimes Digital Witness — St. Vincent Is It Cold In The Water? — SOPHIE Touch — Daft Punk & Paul Williams All Is Full of Love — Björk | Public attention becomes bodily risk, transformation, a request for contact, and finally an answer. |
| III — Re-entry | Cellophane — FKA twigs Retrograde — James Blake Long Road Home — Oneohtrix Point Never An Ending (Ascent) — Brian Eno | The synthetic shell fails; retreat becomes return, and the story lands at dawn. |
The interesting failure happened during ordering. With only the three acts locked, the numerical
optimizer cut the measured cost from 48.28 to 14.88 — but put Retrograde after the dawn and
made All Is Full of Love answer a request that had not happened yet. That is cheaper and worse.
The host model therefore added semantic beat boundaries (request → answer, return → dawn) and
let am_optimize_order make only local changes inside those boundaries. Selection and story stayed
linguistic; BPM, key, energy, and valence remained supporting evidence.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/apple-music-playlist-curator)<a href="https://allmcps.com/mcp/apple-music-playlist-curator"><img src="https://allmcps.com/api/badge/apple-music-playlist-curator?style=directory" alt="Apple Music Playlist Curator on AllMCPs" /></a>