Skip to main content
Glama
Cifero74

mcp-apple-music

mcp-apple-music 🎡

Python 3.10+ License: MIT MCP

An MCP (Model Context Protocol) server that gives Claude full access to your Apple Music account β€” search the catalog, browse your personal library, manage playlists, and explore your listening history and recommendations.

Ask Claude things like:

  • "Based on what I've been listening to lately, recommend 15 songs I don't have yet and add them to a new playlist"

  • "Show me all my playlists and tell me which artists appear most"

  • "Search for albums by Nick Cave and add my three favourites to a playlist called Dark Picks"


Features

Tool

Description

search_catalog

Search Apple Music catalog (songs, albums, artists, playlists)

search_library

Search within your personal library

get_library_songs

List songs saved in your library (paginated)

get_library_albums

List albums in your library (paginated)

get_library_artists

List artists in your library

get_library_playlists

List all your playlists with IDs

get_playlist_tracks

Get tracks inside a specific playlist

create_playlist

Create a new playlist

add_tracks_to_playlist

Add songs to a playlist (library or catalog tracks)

get_recently_played

See recently played albums/playlists/stations

get_recommendations

Get personalised Apple Music picks


Requirements

  • Python 3.10+

  • uv (recommended) or pip

  • An Apple Developer account (free tier is fine) with a MusicKit key

  • An active Apple Music subscription


Setup

1. Create a MusicKit Key

  1. Go to developer.apple.com β†’ Certificates, Identifiers & Profiles

  2. Under Keys, click + to create a new key

  3. Give it any name, enable MusicKit, and click Continue β†’ Register

  4. Download the .p8 file β€” you can only download it once, keep it safe!

  5. Note your Key ID (e.g. ABC123DEF4) and your Team ID (found under Membership Details)

⚠️ The Key ID is the alphanumeric code shown next to the key name β€” not the filename of the .p8 file.

2. Clone and install

git clone https://github.com/marioinghilleri/mcp-apple-music
cd mcp-apple-music

# with uv (recommended)
uv sync

# or with pip
pip install -e .

3. Run the one-time setup wizard

# with uv
uv run mcp-apple-music-setup

# or directly
python -m mcp_apple_music.setup

The wizard will ask for your Team ID, Key ID, and the path to your .p8 file. It then opens a browser page where you click "Authorise Apple Music" β€” this uses Apple's official MusicKit JS to obtain your Music User Token, which is stored securely at ~/.config/mcp-apple-music/config.json (file permissions: 600).

4. Add to Claude Desktop

Open your Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "apple-music": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/absolute/path/to/mcp-apple-music",
        "mcp-apple-music"
      ]
    }
  }
}

Restart Claude Desktop β€” you should see the apple-music tools available in the toolbar.


How it works

Apple Music requires two separate tokens:

  • Developer Token β€” a JWT you sign locally with your .p8 private key. Valid up to 6 months; the server regenerates it automatically before expiry. Your key never leaves your machine.

  • Music User Token β€” obtained once via MusicKit JS OAuth in the browser (the setup wizard handles this). Stored locally at ~/.config/mcp-apple-music/config.json.

Your .p8 key  ──►  Developer Token (JWT, auto-renewed)  ─┐
                                                           β”œβ”€β”€β–Ί Apple Music API
Browser OAuth ──►  Music User Token (stored locally)    β”€β”˜

⚠️ Playback control (play/pause/skip) is not available via Apple's REST API. It requires native MusicKit frameworks (iOS/macOS app) or MusicKit JS running in a browser context.


Project structure

mcp-apple-music/
β”œβ”€β”€ src/
β”‚   └── mcp_apple_music/
β”‚       β”œβ”€β”€ __init__.py
β”‚       β”œβ”€β”€ auth.py      β€” Developer Token generation + User Token management
β”‚       β”œβ”€β”€ client.py    β€” Async HTTP client for api.music.apple.com
β”‚       β”œβ”€β”€ server.py    β€” FastMCP server with all 11 tools
β”‚       └── setup.py     β€” One-time setup wizard (browser-based OAuth)
β”œβ”€β”€ config.example.json  β€” Example config structure (no secrets)
β”œβ”€β”€ pyproject.toml
└── README.md

Example prompts

Once connected, you can ask Claude:

"What have I been listening to this week? Based on that, find 10 songs
 I don't own yet that I'd probably enjoy and create a playlist with them."

"Search for all albums by Joni Mitchell and tell me which ones
 I already have in my library."

"List my playlists, pick the one that looks most like a workout mix,
 and add 5 high-energy songs from the catalog to it."

"Create a playlist called 'Rainy Sunday' with the 10 most mellow tracks
 you can find from my library."

Authors

Built by Cifero74 and Claude (Anthropic) as part of a personal MCP ecosystem for Claude Desktop.

This project was conceived, designed, debugged, and shipped entirely through a collaborative conversation between Mario and Claude β€” from API research and auth flow design, through the setup wizard, to live testing with a real Apple Music library.

Contributions, issues and PRs are welcome!


License

MIT β€” use it, fork it, build on it.

-
security - not tested
-
license - not tested
-
quality - not tested

Latest Blog Posts

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/Cifero74/mcp-apple-music'

If you have feedback or need assistance with the MCP directory API, please join our Discord server