io.github.Cifero74/mcp-apple-music

Official registry Search and web

Apple Music MCP server — search catalog, manage playlists, and access your library via Claude.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

PYPI package mcp-apple-music-server
Claude Code
claude mcp add mcp-apple-music -e 'APPLE_TEAM_ID=<APPLE_TEAM_ID>' -e 'APPLE_KEY_ID=<APPLE_KEY_ID>' -e 'APPLE_PRIVATE_KEY=<your apple_private_key>' -e 'APPLE_MUSIC_USER_TOKEN=<your apple_music_user_token>' -e 'APPLE_STOREFRONT=<APPLE_STOREFRONT>' -- uvx mcp-apple-music-server==1.3.0
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "mcp-apple-music": {
            "command": "uvx",
            "args": [
                "mcp-apple-music-server==1.3.0"
            ],
            "env": {
                "APPLE_TEAM_ID": "<APPLE_TEAM_ID>",
                "APPLE_KEY_ID": "<APPLE_KEY_ID>",
                "APPLE_PRIVATE_KEY": "<your apple_private_key>",
                "APPLE_MUSIC_USER_TOKEN": "<your apple_music_user_token>",
                "APPLE_STOREFRONT": "<APPLE_STOREFRONT>"
            }
        }
    }
}

Environment variables

  • APPLE_TEAM_ID required Apple Developer Team ID
  • APPLE_KEY_ID required Apple MusicKit Key ID
  • APPLE_PRIVATE_KEY required secret Apple MusicKit private key content (ES256, PEM format)
  • APPLE_MUSIC_USER_TOKEN required secret Apple Music user token for personal library access
  • APPLE_STOREFRONT Apple Music storefront country code (default: us)

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. mcp-apple-music 🎵
  2. Features
  3. Requirements
  4. Setup
  5. How it works
  6. Project structure
  7. Example prompts
  8. Authors
  9. License

mcp-apple-music 🎵

mcp-name: io.github.Cifero74/mcp-apple-music

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

ToolDescription
search_catalogSearch Apple Music catalog (songs, albums, artists, playlists)
search_librarySearch within your personal library
get_library_songsList songs saved in your library (paginated)
get_library_albumsList albums in your library (paginated)
get_library_artistsList artists in your library
get_library_playlistsList all your playlists with IDs
get_playlist_tracksGet tracks inside one of your playlists or an Apple Music catalog playlist (pl. IDs)
create_playlistCreate a new playlist
add_tracks_to_playlistAdd songs to a playlist (library or catalog tracks)
add_to_librarySave catalog songs, albums or playlists into your library
get_recently_playedSee recently played albums/playlists/stations
get_recommendationsGet personalised Apple Music picks
favorite_songMark a catalog song as favorite (star)
unfavorite_songRemove a catalog song from favorites
get_song_favorite_statusCheck which catalog songs are favorited

Requirements

  • Python 3.10+
  • uv (recommended) or pip
  • A paid Apple Developer Program membership (99 USD/year) to create a MusicKit key. The free Apple Developer account can't create MusicKit keys.
  • 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/Cifero74/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.

For playback control, check out chrome-relay — a companion CLI that lets an MCP server drive a music.apple.com tab already open in Chrome, enabling play/pause/skip without shipping a MusicKit JS shim.


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 14 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.

Frequently asked questions

What is io.github.Cifero74/mcp-apple-music?

Apple Music MCP server — search catalog, manage playlists, and access your library via Claude.

How do I install io.github.Cifero74/mcp-apple-music?

It runs on your machine. In Claude Code: claude mcp add mcp-apple-music -e 'APPLE_TEAM_ID=<APPLE_TEAM_ID>' -e 'APPLE_KEY_ID=<APPLE_KEY_ID>' -e 'APPLE_PRIVATE_KEY=<your apple_private_key>' -e 'APPLE_MUSIC_USER_TOKEN=<your apple_music_user_token>' -e 'APPLE_STOREFRONT=<APPLE_STOREFRONT>' -- uvx mcp-apple-music-server==1.3.0. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.Cifero74/mcp-apple-music need an API key?

Yes. It expects APPLE_TEAM_ID, APPLE_KEY_ID, APPLE_PRIVATE_KEY, APPLE_MUSIC_USER_TOKEN, which you set in its configuration.

Is io.github.Cifero74/mcp-apple-music open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains io.github.Cifero74/mcp-apple-music?

It is published by Cifero74. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.