MCP-AppleMusic
The MCP-AppleMusic server provides comprehensive control over Apple Music on macOS via AppleScript commands, enabling:
Playback Control: Start (
itunes_play), pause (itunes_pause), skip to next (itunes_next), or return to previous track (itunes_previous)Search and Play: Search library by query (
itunes_search) returning "Track Name - Artist" format, and play specific songs by exact name (itunes_play_song)Playlist Management: Create new playlists with specified names and add tracks using comma-separated exact song names (
itunes_create_playlist)Library Information: Get library statistics and user playlists (
itunes_library), current playing track details (itunes_current_song), and formatted list of all songs with names and artists (itunes_all_songs)
Enables control of Apple Music on macOS through AppleScript commands, including playback control, library search, song selection, and playlist creation.
Provides legacy support for controlling iTunes through AppleScript commands, offering functionality for playback control, library management, searching, and playlist creation.
Leverages macOS-specific AppleScript capabilities to enable music playback control and library management for Apple Music/iTunes applications.
Click on "Deploy 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., "@MCP-AppleMusic play Hey Jude by The Beatles"
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.
MCP-AppleMusic
A FastMCP server implementation for controlling Apple Music (formerly iTunes) on macOS through AppleScript commands.
Requirements
Python 3.13+
macOS with Apple Music app installed
MCP library ≥1.2.1
Related MCP server: Sound
Installation
First, ensure you have uv installed:
$ brew install uvThen, with Claude Desktop, add the following to claude_desktop_config.json:
{
"mcpServers": {
"iTunesControlServer": {
"command": "uvx",
"args": ["-p", "3.13", "-n", "mcp-applemusic"]
}
}
}Available Commands
The following commands are available through the MCP server:
itunes_play() # Start playback
itunes_pause() # Pause playback
itunes_next() # Skip to next track
itunes_previous() # Go to previous track
itunes_search(query) # Search library for tracks
itunes_play_song(song) # Play specific song
itunes_create_playlist(name, songs) # Create new playlist
itunes_library() # Get library statisticsUsage
Start the server:
python server.pyExample interactions:
# Search for a song
results = itunes_search("Hey Jude")
# Create a new playlist
itunes_create_playlist("Beatles Favorites", ["Yesterday", "Hey Jude", "Let It Be"])
# Play a specific song
itunes_play_song("Hey Jude")Development
Clone the repository:
git clone https://github.com/yourusername/mcp-applemusic.git
cd mcp-applemusicInstall development dependencies:
pip install -e ".[dev]"Contributing
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Notes
This tool only works on macOS systems due to its AppleScript dependency
Requires Apple Music (formerly iTunes) to be installed
Available Tools
10 toolsitunes_all_songsB
Get a list of all songs in the Music library. Returns a formatted list of all tracks with their names and artists.
Inputs: no named parameters. Returns: result
itunes_create_playlistA
Create a new playlist with the given name and add tracks to it. 'songs' should be a comma-separated list of exact track names. Returns a confirmation message including the number of tracks added.
Inputs: name (required), songs (required). Returns: result
itunes_current_songB
Get information about the currently playing track. Returns the track name, artist, and album.
Inputs: no named parameters. Returns: result
itunes_libraryB
Return a summary of the Music library, including total tracks and user playlists.
Inputs: no named parameters. Returns: result
itunes_nextA
Skip to the next track.
Inputs: no named parameters. Returns: result
itunes_pauseB
Pause playback in Music (iTunes).
Inputs: no named parameters. Returns: result
itunes_playB
Start playback in Music (iTunes).
Inputs: no named parameters. Returns: result
itunes_play_songA
Play the first track whose name exactly matches the given song name. Returns a confirmation message.
Inputs: song (required). Returns: result
itunes_previousB
Return to the previous track.
Inputs: no named parameters. Returns: result
itunes_searchB
Search the Music library for tracks whose names contain the given query. Returns a list of tracks formatted as "Track Name - Artist".
Inputs: query (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Most tools have distinct purposes, but there is some overlap between itunes_play and itunes_play_song, as both involve starting playback. However, itunes_play is a general playback start, while itunes_play_song targets a specific song, which helps differentiate them. All other tools are clearly distinct in function.
All tool names follow a consistent snake_case pattern with the prefix 'itunes_' and a descriptive verb or noun phrase. This uniformity makes the tool set predictable and easy to understand, with no deviations in naming style.
With 10 tools, the server is well-scoped for managing an Apple Music library, covering essential operations like playback control, library queries, playlist creation, and song search. Each tool serves a clear purpose without redundancy, making the count appropriate for the domain.
The tool set provides good coverage for core music library management, including playback, search, and playlist creation. However, there are minor gaps, such as the inability to delete or modify existing playlists, which could limit some agent workflows. Overall, it supports most common tasks effectively.
Maintenance
Related MCP Connectors
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Create, inspect, and manage Wubble music, speech, voice, and sound-effect requests through MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAllows controlling Apple Music on macOS through an MCP server that supports playback control, volume adjustment, and music search functionality.2MIT
- AlicenseNot gradedqualityCmaintenanceApple Music playback control, library search, playlist management, and queue operations via MCP.2MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for controlling Apple Music on macOS via AppleScript, enabling playlist management, playback control, and library search through natural language.14 npm1MIT
- AlicenseNot gradedqualityDmaintenanceControls Apple Music on macOS via AppleScript, enabling playback, lyrics retrieval, playlist management, and catalog search through an MCP interface.MIT