Enables control of Apple Music on macOS, providing tools to play/pause music, skip tracks, adjust volume, search for songs/albums/artists, and get information about the currently playing track.
Interfaces with macOS through AppleScript commands to control the Apple Music application, requiring the server to run directly on a macOS machine.
MCP AppleMusic Server
MCP server for controlling Apple Music on macOS.
Overview
This project provides a Model-Context-Protocol (MCP) server that allows you to control the Apple Music application on a macOS device. It works by executing AppleScript commands (osascript
) under the hood.
The server is built with TypeScript, using Express.js to handle HTTP connections and the @modelcontextprotocol/sdk
for MCP communication.
Note: This server is designed to run directly on a macOS machine, as it depends on osascript
to interact with Apple Music.
Features
- Control Apple Music playback (play, pause, next track).
- Adjust volume.
- Search for songs, albums, and artists in your library.
- Search and immediately play a song.
- Get the currently playing track name.
- Exposes functionality as MCP tools.
Requirements
- Operating System: macOS
- Runtime: Node.js v20+
⚙️ Setup and Installation
- Clone the repository:
- Install dependencies:
- Configure environment variables:
Create a
.env
file in the root of the project. You can copy the example if one is provided, or create it from scratch.
🚀 Usage
Development
To run the server in development mode with hot-reloading (thanks to tsx
):
Production
To build and run the server for production:
Once running, the server will be available at http://localhost:3000
(or your configured PORT
).
🛠️ Available Tools
The server exposes the following tools for an MCP client to use:
Tool Name | Description | Parameters |
---|---|---|
apple-music-set-volume | Adjust Apple Music volume | level : number (0-10) |
apple-music-next-track | Play next track | None |
apple-music-pause | Pause music playback | None |
apple-music-play | Resume music playback | None |
apple-music-search-album | Search for tracks by album | album : string |
apple-music-search-and-play | Search and play a song | song : string |
apple-music-search-song | Search for specific songs | song : string |
apple-music-search-artist | Search for tracks by artist | artist : string |
apple-music-get-current-track | Get currently playing track | None |
🔌 API Endpoints
The server exposes the following HTTP endpoints:
GET /health
: A health check endpoint. Returns{ "status": "ok", "service": "mcp-applemusic-server" }
./mcp
(GET, POST, DELETE): The primary endpoint for MCP communication.
🐳 Docker
A Dockerfile
is included in this project. You can build a Docker image using:
However, please be aware of the following critical limitation:
⚠️ The Docker container will not function correctly. ⚠️
The server relies on osascript
to control Apple Music, which is a macOS-specific utility. Standard Docker images are Linux-based and do not include this utility. Running the server in the provided Docker container will result in errors when any Apple Music tool is called.
This Dockerfile
should be seen as a starting template for a generic Node.js application and would require a macOS-based environment to run successfully.
🔬 Development Scripts
npm run lint
: Lint the code using ESLint.npm run lint:fix
: Automatically fix linting issues.npm test
: Run tests using Jest (test files need to be created).
This server cannot be installed
Allows controlling Apple Music on macOS through an MCP server that supports playback control, volume adjustment, and music search functionality.
Related MCP Servers
- AsecurityAlicenseAqualityAn MCP Server Integration with Apple ShortcutsLast updated -263214JavaScriptApache 2.0
- -securityAlicense-qualityFacilitates controlling Apple Music on macOS via AppleScript through MCP commands, allowing users to manage playback, search for tracks, and create playlists.Last updated -42PythonMIT License
- AsecurityFlicenseAqualityMCP server that enables reading and writing macOS system preferences and application settings through the defaults system.Last updated -411Python
- AsecurityAlicenseAqualityThe first open-source MCP server that enables AI to fully control remote macOS systems.Last updated -6274PythonMIT License