loading…
Search for a command to run...
loading…
Integrates Apple Music with MCP clients to search the global catalog, manage personal playlists, and access library data. It enables users to perform actions li
Integrates Apple Music with MCP clients to search the global catalog, manage personal playlists, and access library data. It enables users to perform actions like creating playlists, adding tracks, and viewing recommendations through natural language commands.
An MCP (Model Context Protocol) server that integrates with Apple Music, allowing Claude and other MCP clients to search the catalog, manage playlists, and access your library.

com.yourname.musicmcp)Your Team ID is visible at the top right of the Apple Developer portal, or under Membership Details.
git clone <this-repo>
cd AppleMusicMCP
npm install
npm run build
The server is configured via environment variables:
| Variable | Required | Description |
|---|---|---|
APPLE_MUSIC_TEAM_ID |
Yes | Your Apple Developer Team ID |
APPLE_MUSIC_KEY_ID |
Yes | Your MusicKit Key ID (from the key you created) |
APPLE_MUSIC_PRIVATE_KEY_PATH |
Yes | Absolute path to your .p8 private key file |
APPLE_MUSIC_STOREFRONT |
No | ISO 3166 alpha-2 country code (default: us) |
APPLE_MUSIC_CONFIG_DIR |
No | Config directory path (default: ~/.apple-music-mcp/) |
APPLE_MUSIC_AUTH_PORT |
No | Port for auth server (default: 7829) |
Before using library features (playlists, library songs, recommendations), you need to authorize with your Apple Music account:
APPLE_MUSIC_TEAM_ID=YOUR_TEAM_ID \
APPLE_MUSIC_KEY_ID=YOUR_KEY_ID \
APPLE_MUSIC_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 \
node dist/index.js auth
This will:
~/.apple-music-mcp/tokens.jsonNote: Catalog search works without authorization. Only library/personal features require it.
Add this to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"apple-music": {
"command": "node",
"args": ["/absolute/path/to/AppleMusicMCP/dist/index.js"],
"env": {
"APPLE_MUSIC_TEAM_ID": "YOUR_TEAM_ID",
"APPLE_MUSIC_KEY_ID": "YOUR_KEY_ID",
"APPLE_MUSIC_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXXXXXX.p8",
"APPLE_MUSIC_STOREFRONT": "us"
}
}
}
}
Add to your Claude Code settings (.claude/settings.json or global settings):
{
"mcpServers": {
"apple-music": {
"command": "node",
"args": ["/absolute/path/to/AppleMusicMCP/dist/index.js"],
"env": {
"APPLE_MUSIC_TEAM_ID": "YOUR_TEAM_ID",
"APPLE_MUSIC_KEY_ID": "YOUR_KEY_ID",
"APPLE_MUSIC_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXXXXXX.p8"
}
}
}
}
search_musicSearch the Apple Music catalog.
query (string, required): Search termtypes (array, optional): ["songs", "albums", "artists", "playlists"] (default: songs, albums, artists)limit (number, optional): 1-25 results per type (default: 10)storefront (string, optional): Country codeget_user_playlistsList your playlists.
limit (number, optional): 1-100 (default: 25)offset (number, optional): Pagination offsetget_playlist_tracksGet tracks from a playlist.
playlist_id (string, required): Playlist IDlimit (number, optional): 1-100 (default: 100)offset (number, optional): Pagination offsetcreate_playlistCreate a new playlist.
name (string, required): Playlist namedescription (string, optional): Playlist descriptiontrack_ids (string[], optional): Song IDs to add initiallyadd_tracks_to_playlistAdd tracks to an existing playlist.
playlist_id (string, required): Playlist IDtrack_ids (string[], required): Song IDs to add (max 100)remove_tracks_from_playlistRemove tracks from a playlist (limited Apple API support).
playlist_id (string, required): Playlist IDtrack_ids (string[], required): Song IDs to removeget_library_songsGet songs from your library.
limit (number, optional): 1-100 (default: 25)offset (number, optional): Pagination offsetget_recently_playedGet recently played tracks.
limit (number, optional): 1-10 (default: 10)get_recommendationsGet personalized music recommendations.
limit (number, optional): 1-30 recommendation groups (default: 10)Once configured, you can ask Claude things like:
Run the auth flow: node dist/index.js auth
Your developer token may be invalid. Check your Team ID, Key ID, and private key path.
Your Music User Token may have expired (they last ~6 months). Re-run: node dist/index.js auth
Ensure port 7829 isn't in use. Set a different port with APPLE_MUSIC_AUTH_PORT.
This is a known Apple Music API limitation. The API has limited DELETE support for playlist tracks. Use the workaround: create a new playlist with the tracks you want to keep.
npm run dev # Run with tsx (no build needed)
npm run build # Compile TypeScript
npm start # Run compiled version
api.music.apple.com/v1/Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"apple-music-mcp-server": {
"command": "npx",
"args": []
}
}
}Transcripts, channel stats, search
AI image generation using various models.
Unified GPU inference API with 30 AI services (LLM, image gen, video, TTS, whisper, embeddings, reranking, OCR) as MCP tools. Pay-per-use via x402 USDC or API k
A powerful image generation tool using Google's Imagen 3.0 API through MCP. Generate high-quality images from text prompts with advanced photography, artistic,