Control Sonos speakers through MCP tools - search and play music, manage queue and playlists, adjust volume. Use when users request music playback, mention artists/songs/albums, want to control Sonos speakers, manage playlists, or ask about what's playing.
This skill provides comprehensive control over Sonos speaker systems through MCP tools. Use it to search for and play music, manage playback queues and playlists, control volume, and switch between speakers. The skill handles both simple requests ("play some Neil Young") and complex multi-step workflows ("create a mix of 5 tracks from these artists").
Most music requests require multiple tool calls in sequence. Execute workflows automatically without asking permission at each step - just complete the workflow and confirm the result.
Critical Rule: Search results are ephemeral. After using search_for_track or search_for_album, immediately select and add desired tracks/albums to the queue before executing another search, as each new search clears previous results.
sonos:get_master_speaker - Get current active speaker namesonos:set_master_speaker - Switch to a different speaker (e.g., "Bedroom", "Kitchen")sonos:search_for_track - Search by track title, artist, album (e.g., "Heart of Gold Neil Young")sonos:search_for_album - Search by album title and artist (e.g., "Harvest Neil Young")sonos:add_track_to_queue - Add track from search results by position (1-based)sonos:add_album_to_queue - Add album from search results by position (1-based)sonos:list_queue - View all queued trackssonos:clear_queue - Remove all tracks from queuesonos:remove_from_queue - Remove a track from the queue by position (1-based)sonos:play_from_queue - Play track at specific queue position (1-based)sonos:current_track - Get information about currently playing tracksonos:play_pause - Toggle play/pausesonos:next_track - Skip to next tracksonos:turn_volume - Adjust volume by 10 ("louder" or "quieter")sonos:set_volume - Set absolute volume (0-100)sonos:mute - Mute or unmute (True/False)Terminology:
~/.sonos/playlists/)Local Playlist Tools:
sonos:list_playlists - Display all local playlistssonos:list_playlist_tracks - Show tracks in a specific local playlistsonos:add_to_playlist_from_queue - Add queue track to local playlist by positionsonos:add_to_playlist_from_search - Add search result to local playlist by positionsonos:add_playlist_to_queue - Load entire local playlist into queue (optionally shuffled with shuffle=True)sonos:remove_track_from_playlist - Remove track from local playlist by positionNative Sonos Playlist Tools:
sonos:list_native_sonos_playlists - Display all native Sonos playlistssonos:create_native_sonos_playlist_from_local(local_playlist, native_playlist_name=None) - Convert a local playlist to a native Sonos playlist
To play a specific track or album:
sonos:search_for_track or sonos:search_for_albumsonos:add_track_to_queue or sonos:add_album_to_queue with position numbersonos:list_queue to see where track(s) were addedsonos:play_from_queue with the position from step 3sonos:current_track to confirm correct track is playingExample: User says "play Like a Hurricane by Neil Young"
1. sonos:search_for_track "Like a Hurricane Neil Young"
2. sonos:add_track_to_queue 1 (select best match)
3. sonos:list_queue (find it was added at position 15)
4. sonos:play_from_queue 15
5. sonos:current_track (confirm)
To build a custom mix from multiple artists:
Example: User says "play a mix of Springsteen, Jackson Browne, and Patty Griffin"
1. sonos:search_for_track "Born to Run Springsteen"
2. sonos:add_track_to_queue 1
3. sonos:search_for_track "Running on Empty Jackson Browne"
4. sonos:add_track_to_queue 1
5. sonos:search_for_track "Let Him Fly Patty Griffin"
6. sonos:add_track_to_queue 1
7. sonos:list_queue (verify all added)
8. sonos:play_from_queue 1 (start first track)
To find live tracks or albums:
Example: User says "play 5 live tracks from Patty Griffin"
1. sonos:search_for_track "Patty Griffin live"
2. Review results for venue names or "live" indicators
3. sonos:add_track_to_queue 1
4. sonos:add_track_to_queue 3
5. sonos:add_track_to_queue 5
6. sonos:add_track_to_queue 7
7. sonos:add_track_to_queue 9
8. sonos:play_from_queue 1
To play music in a specific room:
sonos:set_master_speaker with room nameExample: User says "play some Neil Young in the bedroom"
1. sonos:set_master_speaker "Bedroom"
2. sonos:search_for_track "Neil Young"
3. sonos:add_track_to_queue 1
4. sonos:play_from_queue 1
From queue:
sonos:list_queue to find track positionsonos:add_to_playlist_from_queue with playlist name and positionFrom search:
sonos:search_for_track to find tracksonos:add_to_playlist_from_search with playlist name and positionExample: User says "add the current track to my Chill Vibes playlist"
1. sonos:current_track (get what's playing)
2. sonos:list_queue (find its position)
3. sonos:add_to_playlist_from_queue "Chill Vibes" <position>
To save the current queue as a new playlist (useful for preserving a curated queue):
sonos:list_queue to see all tracks and count themsonos:add_to_playlist_from_queue with the new playlist namesonos:list_playlist_tracksImportant: When removing multiple tracks from a queue or playlist, always remove from highest position to lowest to avoid position shifts affecting remaining targets.
Example: User says "save everything in the queue as playlist20250119"
1. sonos:list_queue (count 59 tracks)
2. sonos:add_to_playlist_from_queue "playlist20250119" 1
3. sonos:add_to_playlist_from_queue "playlist20250119" 2
... (continue for all 59 positions)
60. sonos:list_playlist_tracks "playlist20250119" (verify)
Note: For large queues (50+ tracks), execute all additions in sequence without requesting permission at each step, following the "Multi-Step Workflows" principle.
When a user requests N tracks from an artist without specific guidance:
Only ask if the request is genuinely ambiguous:
In your response, briefly mention your selection reasoning:
To play a saved playlist:
sonos:add_playlist_to_queue to load all tracks (optionally with shuffle=True)sonos:play_from_queue 1 to start playingExample: User says "play my favorites playlist"
1. sonos:add_playlist_to_queue "favorites"
2. sonos:play_from_queue 1
Example: User says "play my workout playlist in random order"
1. sonos:add_playlist_to_queue "workout" shuffle=True
2. sonos:play_from_queue 1
To make a local playlist accessible in the Sonos mobile app and other Sonos controllers:
sonos:list_native_sonos_playlists to see if the name already existssonos:create_native_sonos_playlist_from_local with the local playlist namenative_playlist_name parameter if desiredsonos:list_native_sonos_playlists to confirm creationExample: User says "create a native Sonos playlist from my favorites playlist"
1. sonos:list_native_sonos_playlists (check if "favorites" already exists)
2. sonos:create_native_sonos_playlist_from_local "favorites"
3. sonos:list_native_sonos_playlists (verify it was created)
Example: User says "make a Sonos playlist called favorites_backup from my favorites playlist"
1. sonos:create_native_sonos_playlist_from_local "favorites" native_playlist_name="favorites_backup"
2. sonos:list_native_sonos_playlists (verify)
Important Notes:
sonos:current_tracksonos:list_queuesonos:turn_volume "louder"sonos:set_volume 50sonos:mute Truesonos:next_tracksonos:play_pausesonos:list_playlistssonos:list_native_sonos_playlistsadd_playlist_to_queue with shuffle=TrueProvide natural, music-focused responses:
Use music knowledge to select best matches:
If search results are unclear:
references/search_tips.md for search strategiessonos:list_queuesonos:get_master_speakersonos:current_trackFor detailed search strategies, artist name variations, and mix-building tips, reference the bundled file:
references/search_tips.md - Comprehensive guide for effective music searches