Apple Music MCP server: playlists, library, catalog, playback and Up Next, on Mac/Windows/Linux.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
MCP server for Apple Music. It gives any MCP client (Claude, Cursor, Cline, Windsurf) control of your playlists, library, catalog, discovery, playback, and the Up Next queue. Runs on macOS, Windows, and Linux.
A Mac or an Apple Music subscription is all you need. Four engines, chosen per call: Music.app and Safari on a Mac, the Apple Music API and Chrome on any OS.
Four engines back the server. Native drives the local Music.app on macOS via AppleScript. API uses Apple Music's web API (amp-api.music.apple.com) on any OS. Safari drives your signed-in Safari's MusicKit on macOS (DRM-native, zero install). Chrome runs a local Google Chrome window with MusicKit for DRM audio on any OS. One mode preference picks the engine β auto (default) mixes the best of each: native Music.app for playback on macOS, Safari for the Up Next queue, the API for data, Chrome off-mac. Pin one with native / safari / chrome / api, or override a single playback/queue call with engine=. In the table below, the Browser column covers both the Safari and Chrome web players. β supported, β not possible on that engine, β not applicable there.
| Capability | Native (Music.app) macOS | API (amp-api) any OS | Browser (Safari macOS / Chrome any OS) |
|---|---|---|---|
| Catalog search / browse | β | β (+ tokenless resolve) | β |
| Recommendations / charts / suggestions | β | β | β |
| Library search / browse | β | β | β |
| Genre search | β | β | β |
| Recently played / added | β | β | β |
| Add catalog β library | β | β | β (in-page POST) |
| Remove from library | β | β | β |
| Love / dislike | β | β | β |
| 1β5 star ratings | β | β | β |
| Favorites list | β | β | β |
| Playlist create / add / remove / rename | β | β | β |
| Playlist copy | β | β | β |
| Playlist delete | β | β (web token) | β |
| Folders: single level + move in/out | β | β | β |
Folders: nested paths / tree / path | β | β | β |
| Playback: play song / album / playlist / URL | β | β | β |
| Controls: pause / stop / next / prev / seek | β | β | β |
| Settings: volume / shuffle / repeat | β | β | β |
| now_playing | β | β | β |
| Up Next queue: view / next / last / remove / jump / clear / autoplay | β | β | β |
| Reveal in app | β | β | β (navigates page) |
| AirPlay device select | β | β | β |
| Library snapshot / integrity | β | β | β |
| Works with no Apple account | β | β | β |
| Cross-platform (Win/Linux) | β | β | β |
Everything in the API column runs anywhere, no browser and no Music app. Browser playback and the queue need a desktop session and a web player β Safari on macOS (no install) or Google Chrome elsewhere.
Requirements: Python 3.10+, plus either a Mac or an Apple Music subscription. The Chrome web player (cross-platform playback + Up Next queue) needs Google Chrome + Playwright. On macOS you can skip both β sign in via Safari and play through the Music app β so the default macOS install is lightweight (no ~500 MB Playwright). Windows/Linux include Playwright automatically (it's the only path there).
Claude Code, one line:
Claude Desktop / Cursor / Cline / Windsurf, install once, then add the config block:
Restart your client and try "List my Apple Music playlists" or "Play my favorites." On macOS the local library and playback work immediately. To add catalog music or run on any OS, sign in.
Two paths capture the credentials for the cross-platform API.
Apple Developer token (preferred). The sanctioned route, an Apple Developer Program membership with a MusicKit key. One guided command writes the config, mints a 6-month token, and authorizes:
See the appendix for getting the MusicKit key.
Web sign-in. The quick path, and what plain applemusic-mcp login does. Your password never touches this tool, sign-in persists, and tokens re-fetch before they expire. You can also sign in conversationally β just ask your assistant. (Web sign-in uses Apple's web-player API, the same path as open-source clients like Cider and Music Assistant.)
macOS β reads from a signed-in Safari (no Chrome, no ~500 MB Playwright):
One-time Safari setting (a security toggle β you enable it, the tool never flips it): Safari β Settings β Advanced β "Show features for web developers", then the Develop menu β "Allow JavaScript from Apple Events." Sign into Apple Music at music.apple.com in Safari first. That setting only lets the tool read one cookie β your Apple Music token β from your own signed-in Safari, and you can switch it back off afterward. If it's off or you're not signed in, login prints exactly how to fix it (or use --dev, or --chrome). Prefer Chrome on a Mac? pip install 'applemusic-mcp[browser]', then applemusic-mcp login --chrome. Combined with native Music.app playback, a Mac needs no Chrome at all.
Windows / Linux β opens a local Chrome (Playwright ships by default there; it's the only path):
Bulk work wants --dev. Web sign-in uses Apple's public web-player token, and its request quota is shared rather than yours alone. Interactive use never gets near it, but a few hundred catalog searches in an hour β a playlist import, a library migration β will hit HTTP 429. Apple sends no Retry-After on this path and the window is rolling and ~60 minutes long, so a short cooldown doesn't clear it and retrying extends it. applemusic-mcp login --dev uses your own MusicKit key, which gets its own much larger quota. When you are throttled the tool says so explicitly, rather than letting the empty results read as "song not found."
Config file: Claude Desktop uses ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). Cursor, Cline, and Windsurf use the same mcpServers shape, see your client's docs.
mode preference picks the engine: auto (default β best of each: native Music.app for playback on macOS, Safari for the Up Next queue, the API for data; Chrome off-mac), native (Music.app only, no account), safari (drive your signed-in Safari β macOS, no Chrome/Playwright), chrome (Chrome web player, any OS), or api (REST only β data + writes, no playback). Set it conversationally: config(action="set-pref", preference="mode", string_value="safari"). A per-call engine= (native / safari / chrome / web) overrides one playback or queue call (e.g. queue in Safari, then playback(action="play", engine="safari")). Using the queue makes its engine the active one, so transport controls reach it. The Safari engine drives the actual Safari you're browsing in (only ever a music.apple.com tab); Chrome uses an isolated window.
Browser (Chrome web player) features β cross-platform playback + the Up Next queue β need Google Chrome plus Playwright. Off macOS, Playwright is installed by default; on macOS it's an opt-in extra (pip install 'applemusic-mcp[browser]') since Safari sign-in + native Music.app playback already cover the Mac. After installing, run the one-time browser download (playwright install chromium, or uvx --from applemusic-mcp playwright install chromium). The bundled Chromium can't decode Apple's DRM, so a real Chrome install is required, and these features open a local Chrome window (not for headless servers). You don't sign in twice: the web player authorizes off your existing sign-in (the Safari-harvested or developer token is bridged into its profile automatically), so on macOS a single login covers the API, native playback, and the Chrome web player/queue.
From source: git clone β¦ && pip install -e ., then point the config command at <repo>/venv/bin/applemusic-mcp or use python -m applemusic_mcp.
This server reaches Apple Music three ways and prefers the most official one available:
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/applemusic-mcp)<a href="https://allmcps.com/mcp/applemusic-mcp"><img src="https://allmcps.com/api/badge/applemusic-mcp?style=directory" alt="Applemusic MCP on AllMCPs" /></a>