Apple Music MCP
Provides tools for managing and controlling the local Apple Music app on macOS, including library inspection, playlist management, playback control, metadata editing, and audit history.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Apple Music MCPCreate a playlist named 'Focus' from my top 20 most-played tracks."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Apple Music MCP
A safe, structured Model Context Protocol server for the local Apple Music app on macOS. It lets an MCP client inspect a library, analyze and manage playlists, control playback, edit supported metadata, and keep a local audit trail. It does not call the online Apple Music catalog API and never exposes a network transport.
Highlights
Structured JSON results with stable Music
persistent IDvaluesOpaque pagination for large libraries and playlists
Deterministic duplicate, statistics, favorite, recent, stale, and play-count analysis
Playlist and folder management, metadata updates, downloads, local imports, and exports
Playback, volume, shuffle, repeat, EQ, and AirPlay control
Mandatory preview/apply workflow for Music library writes
Single-use, 10-minute approval tokens and optimistic concurrency checks
Managed trash, persistent SQLite audit history, and best-effort undo
No shell interpolation: Python passes bounded base64 JSON to one packaged JXA bridge
Related MCP server: Sound
Requirements
macOS 13 or newer with the Music app
Python 3.11 through 3.13
An MCP client that supports stdio servers
uvfor the recommended installation
Install uv with Homebrew if necessary:
brew install uvInstall and run
From a source checkout:
uv sync
uv run apple-music-mcpAfter the package is published, it can be launched without a checkout:
uvx apple-music-mcpThe server communicates only over stdio. It does not bind a TCP port.
Codex configuration
For a local checkout, add this to ~/.codex/config.toml, replacing the path if needed:
[mcp_servers.apple_music]
command = "/Users/kz/Documents/Codex/2026-08-03/mcp-applemusic-py-https-github-com/work/apple-music-mcp/.venv/bin/apple-music-mcp"For a published package:
[mcp_servers.apple_music]
command = "/opt/homebrew/bin/uvx"
args = ["apple-music-mcp"]Claude Desktop configuration
{
"mcpServers": {
"apple_music": {
"command": "/opt/homebrew/bin/uvx",
"args": ["apple-music-mcp"]
}
}
}On first use, macOS may ask whether the MCP client may control Music. Allow it in System Settings > Privacy & Security > Automation. The permission belongs to the host application that launched the MCP server, not to the Python package by itself.
Tools
Library and playlists
Tool | Purpose |
| Check macOS, Music, JXA, and writable playlist support |
| Read current playback and track state |
| Read library and playlist counts |
| Page through playlists, kinds, parents, and capabilities |
| Resolve one playlist by persistent ID |
| Page through ordered playlist membership |
| Search, filter, sort, and page through local tracks |
| Resolve an ordered batch of persistent track IDs |
| Run deterministic library or playlist analysis |
Playback
Tool | Purpose |
| List AirPlay outputs and EQ presets |
| Play, pause, stop, seek, and navigate tracks |
| Set volume, mute, shuffle, repeat, EQ, and outputs |
Safe changes
Tool | Purpose |
| Validate changes and return a preview plus approval token |
| Read plan state without secret hashes |
| Cancel a pending plan |
| Apply an explicitly approved, still-current plan |
| Page through redacted persistent audit history |
| Preview the reversible part of a previous change |
The server also exposes the organize_library, clean_playlist, and build_playlist
prompts, plus music://capabilities and music://safety resources.
Safe write workflow
All Music library writes use two calls. Planning reads the target state, validates object types and paths, and returns a short-lived token:
{
"operations": [
{
"type": "playlist.create",
"name": "Focused Work",
"description": "Built from the local library",
"track_ids": ["A1B2C3D4", "E5F6A7B8"]
}
]
}The client must show the preview to the user and receive explicit approval before passing
the returned plan_id and approval_token to music_apply_changes. Apply re-reads every
target and rejects the operation with STALE_PLAN if Music changed in the meantime.
Supported operation types:
playlist.create,playlist.update,playlist.add_tracks,playlist.remove_tracksplaylist.rebuild,playlist.archive,playlist.restore,playlist.purgefolder.create,track.update,track.download,file.import,playlist.export
Ordinary user playlists and folders are writable. Library, Smart, Genius, subscription, and special playlists are read-only. Rebuilding an existing playlist creates a replacement with the requested order and archives the original, so the playlist persistent ID changes.
Archive moves an item into a server-managed MCP Trash folder. Permanent purge is accepted
only for an item already inside that folder and requires the second confirmation phrase from
the plan. The server never deletes a song from the Music library or its source file.
Metadata policy
track.update accepts common tags, sort tags, rating and favorite state, playback preferences,
and classical work/movement fields. It rejects identifiers, file locations, artwork, account
information, play/skip history, dates, and Music read-only fields. Large or incorrectly typed
values are rejected during planning. Lyrics are omitted from default track results and returned
only when lyrics is explicitly requested in fields.
Imports require existing absolute regular-file paths. Exports require an absolute path with an existing writable parent and refuse to overwrite by default. Import undo removes membership from the target playlist but deliberately leaves the imported library item in place.
Audit and privacy
Plan and change state is stored at:
~/Library/Application Support/apple-music-mcp/state.sqlite3The directory and database are owner-only (0700 and 0600). History is pruned to 30 days
and the latest 500 changes. Tool logs go to stderr and do not log full track lists, lyrics, or
file contents. Stored before-values may include metadata needed for undo, so protect the macOS
account and remove the database when history is no longer needed.
Undo is best effort. Membership can be restored, but Music may append restored tracks in a different order. Purge, downloads, and exports cannot be undone. Import undo does not remove the library item.
Error codes
Expected failures are returned in the normal structured result with ok: false and a stable
error code. Common codes include:
AUTOMATION_PERMISSION_DENIEDUNSUPPORTED_PLATFORMNOT_FOUNDREAD_ONLY_PLAYLISTVALIDATION_ERRORPLAN_EXPIRED,PLAN_NOT_PENDING,INVALID_APPROVAL_TOKENSTALE_PLANIRREVERSIBLE_CONFIRMATION_REQUIRED,PURGE_REQUIRES_TRASHMUSIC_TIMEOUT,MUSIC_ERROR,APPLY_FAILED
Development
uv sync
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run pyright
uv buildRead-only integration tests are marked integration. Isolated write tests are marked
integration_write; they create uniquely named objects, retain their exact persistent IDs,
and clean up only those objects. Neither group runs unless explicitly selected.
Limitations
Local Music only; no Apple Music catalog search or MusicKit authentication
No HTTP/SSE server mode
No library-song deletion, transcoding, artwork writes, or Music window automation
Music does not expose safe in-place track reordering; rebuilding changes playlist identity
AirPlay and subscription behavior depends on current Music and account availability
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceAllows controlling Apple Music on macOS through an MCP server that supports playback control, volume adjustment, and music search functionality.Last updated2
- Alicense-qualityBmaintenanceApple Music playback control, library search, playlist management, and queue operations via MCP.Last updated1MIT
- Alicense-qualityFmaintenanceMCP server for controlling Apple Music on macOS using JXA (JavaScript for Automation). Manage playback, search tracks, create playlists, and more without API keys.Last updated17MIT
- Alicense-qualityCmaintenanceMCP server for controlling Apple Music on macOS via AppleScript, enabling playlist management, playback control, and library search through natural language.Last updated171MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP Spec Compliance MCP — audits any MCP server.json against the official Model Context Protocol
Remote MCP server for full read/write access to a Zotero library
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Zheng-Kun/apple-music-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server