Music MCP

Music MCP

Enables AI assistants to control Apple Music on macOS using AppleScript for playback, library management, and playlist operations. It supports features like searching tracks, managing the play queue, and retrieving detailed metadata through a structured interface.

Category
Visit Server

README

Music MCP

npm version License: MIT

A Model Context Protocol (MCP) server for controlling Apple Music on macOS using AppleScript. This connector provides a structured interface for AI assistants like Claude to interact with the Music app, enabling playback control, library management, and music information retrieval.

Features

  • Playback Control: Play, pause, skip tracks, and control volume
  • Current Track Information: Get detailed track metadata and playback status
  • Library Management: Search tracks, albums, artists, and browse your library
  • Playlist Management: Create, manage, modify, and play playlists
  • Enhanced Queue Management: Add tracks to play next, view queue status, and control playback order
  • Smart "Play Next" Feature: Queue tracks to play after the current song using temporary playlists
  • Diagnostic Tools: Built-in info command for troubleshooting

Requirements

  • macOS (required for Apple Music and AppleScript)
  • Node.js 18.0.0 or higher
  • Apple Music app installed and accessible
  • Automation permissions granted to your terminal/app

Installation

Via npm (Recommended)

npx @pedrocid/music-mcp@latest

For Development

git clone https://github.com/pedrocid/music-mcp.git
cd music-mcp
npm install
npm run build

Building as Desktop Extension

If you want to create a Desktop Extension (.dxt) for distribution:

# Install the DXT CLI tool
npm install -g @anthropic-ai/dxt

# Initialize Desktop Extension (if not already done)
dxt init

# Build the project
npm run build

# Package the extension
dxt pack

This creates a music-mcp.dxt file that can be installed directly in Claude Desktop or submitted to the Anthropic extension directory.

Note: The .dxt file is not included in the repository as it's a build artifact. Users who want the Desktop Extension should build it themselves using the instructions above.

Configuration

Claude Desktop Configuration

Add this to your Claude Desktop MCP configuration:

{
  "mcpServers": {
    "music": {
      "command": "npx",
      "args": ["@pedrocid/music-mcp@latest"]
    }
  }
}

Environment Variables (Optional)

All environment variables are optional. The server uses stderr logging by default and works without any configuration.

Variable Default Description
MUSIC_MCP_LOG_LEVEL info Log level (debug, info, warn, error)
MUSIC_MCP_FILE_LOGGING false Enable file logging (disabled by default)
MUSIC_MCP_LOG_FILE ~/Library/Logs/music-mcp.log Log file location (only used if file logging enabled)
MUSIC_MCP_CACHE_TTL 300 Cache timeout in seconds
MUSIC_MCP_MAX_SEARCH_RESULTS 50 Maximum search results
MUSIC_MCP_TIMEOUT_SECONDS 30 Default timeout for operations
MUSIC_MCP_ARTWORK_EXPORT true Enable album artwork export
MUSIC_MCP_LENIENT_PARSING true Accept variations in parameter names

Available Tools

info

Get diagnostic information about the MCP server status.

{
  "command": "info"
}

Returns version information, Music app availability, and configuration status.

execute_music_command

Execute music playback control commands.

{
  "command": "play|pause|next|previous|toggle_playback",
  "volume": 75,
  "position": 30,
  "shuffleMode": true,
  "repeatMode": "all",
  "rating": 4
}

get_music_info

Retrieve information about current playback or library.

{
  "infoType": "current_track|playback_status|queue|library_stats",
  "format": "simple|detailed"
}

search_music

Search the music library.

{
  "query": "artist name or song title",
  "searchType": "all|track|album|artist|playlist",
  "limit": 25
}

manage_playlist

Create and manage playlists.

{
  "action": "create|add_track|remove_track|rename|delete|list|get_tracks",
  "playlistName": "My Playlist",
  "trackId": "search term for track",
  "newName": "New Playlist Name"
}

queue_musicNEW

Enhanced queue management and playlist control.

{
  "action": "view_queue|add_to_queue|play_queue|clear_queue|play_playlist",
  "trackSearchTerm": "song or artist name",
  "playlistName": "My Playlist",
  "shuffle": true
}

Queue Actions:

  • view_queue: See current track, playlist context, and playback status
  • add_to_queue: Add tracks to a temporary "Up Next" queue for sequential playback
  • play_queue: Play the tracks you've added to the queue
  • clear_queue: Clear all tracks from the up next queue
  • play_playlist: Play a specific playlist (with optional shuffle)

Permissions

When first using the MCP server, macOS will prompt you to grant automation permissions. You need to:

  1. Allow your terminal app (Terminal.app, iTerm2, etc.) to control "Music"
  2. Go to System Preferences > Security & Privacy > Privacy > Automation
  3. Ensure your terminal app has permission to control "Music"

Troubleshooting

Check Server Status

npx @pedrocid/music-mcp@latest
# Then use the info tool to check status

Common Issues

"Music app is not running"

  • The server automatically launches the Music app when needed
  • If issues persist, manually open the Music app first

"AppleScript execution failed"

  • Grant automation permissions in System Preferences
  • Ensure Music app is accessible and not restricted

"No tracks found"

  • Check that you have music in your library
  • Verify your Apple Music subscription is active

Debugging

The server logs to stderr by default, which Claude Desktop captures. For additional debugging, you can:

  1. Check Claude Desktop's MCP logs
  2. Enable file logging by setting MUSIC_MCP_FILE_LOGGING=true environment variable
  3. Use the info tool to check server diagnostics

Example Usage

Here are some example interactions you can have with Claude using this MCP server:

Basic Playback:

  • "Play my music and set the volume to 50%"
  • "What song is currently playing?"
  • "Skip to the next track"

Library & Search:

  • "Search for songs by Taylor Swift"
  • "Show me my library statistics"

Playlist Management:

  • "Create a playlist called 'Road Trip' and add some upbeat songs"
  • "Play my 'Chill' playlist with shuffle enabled"
  • "Remove all tracks by [artist] from my 'Favorites' playlist"

Queue Management (NEW):

  • "Add 'Bohemian Rhapsody' to play next"
  • "Show me what's in my up next queue"
  • "Clear my queue and add these 3 songs to play after the current track"
  • "Play my 'Party Mix' playlist next"

Development

Building

npm run build

Testing

npm test              # Unit tests
npm run test:e2e      # Integration tests

Linting

npm run lint

Release Preparation

npm run prepare-release

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes and add tests
  4. Run the test suite: npm test
  5. Run the release preparation: npm run prepare-release
  6. Commit your changes: git commit -am 'Add feature'
  7. Push to the branch: git push origin feature-name
  8. Submit a pull request

License

MIT License - see the LICENSE file for details.

Support

Related Projects

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured