Apple Music for your AI tools.
Sound is a native macOS MCP server that lets AI tools like Claude Code, Cursor, and Windsurf search, play, and manage Apple Music through natural language.
No API keys. No browser auth flows. One command to install, one prompt to set up.
| Tool | Description |
|---|---|
search_catalog |
Search Apple Music for songs, albums, or artists |
get_song_details |
Get full metadata for a song |
get_album_details |
Get album info with track listing |
play_song |
Play a specific song by catalog ID |
play_pause |
Toggle playback |
skip_next / skip_previous |
Track navigation |
get_now_playing |
Current track info and playback state |
get_queue / set_queue |
Read or replace the playback queue |
get_library_playlists |
List your playlists |
get_recently_played |
Recent listening history |
create_playlist |
Create a new playlist |
add_to_playlist |
Add songs to a playlist |
ping |
Health check |
- macOS 14+ (Sonoma or later) on Apple Silicon
- Apple Music subscription (for playback; catalog search works without one)
- An MCP-compatible AI tool (Claude Code, Cursor, Windsurf, etc.)
- For building from source: Xcode 16.3+ / Swift 6.1+
brew install seayniclabs/tap/soundgit clone https://github.com/seayniclabs/sound.git
cd sound
swift build -c release
codesign --force --sign - --entitlements Sources/Sound/Sound.entitlements .build/release/SoundThe binary is at .build/release/Sound.
Run the setup command to grant Apple Music access:
sound setupThis triggers the macOS permission prompt. You only need to do this once.
claude mcp add sound -- $(which sound)Or add manually to ~/.claude.json:
{
"mcpServers": {
"sound": {
"command": "/path/to/sound",
"args": ["serve"]
}
}
}Once connected, just talk to your AI tool:
- "Search Apple Music for Tycho"
- "Play Everlong by Foo Fighters"
- "Create a playlist called Focus and add these tracks"
- "What's playing right now?"
- "Skip to the next track"
Sound uses Apple's MusicKit framework to interact with Apple Music natively on macOS. It communicates with AI tools over stdio using the Model Context Protocol (JSON-RPC).
AI Tool --stdio/JSON-RPC--> Sound --MusicKit--> Apple Music
--ApplicationMusicPlayer--> Music.app
Auth is handled by macOS — the binary has an embedded bundle identifier (com.seayniclabs.sound) and the MusicKit entitlement. Users just click "Allow" once when prompted. No tokens, no refresh logic, no config files.
swift build # debug build
swift build -c release # release buildSound requires Swift 6.1+ and targets macOS 14+.
If you're running multiple MCP servers, route them through a gateway like tbxark/mcp-proxy to manage all child processes from a single persistent service. The proxy handles process lifecycle, centralized config, and crash recovery — each server still gets its own SSE endpoint but you manage everything from one config file instead of scattered Claude Code entries.
For a full walkthrough of how this works in practice, see The Hidden Cost of a Loaded MCP Stack on charlieseay.com.
MIT
Built by Seaynic Labs.
