ZoneFoundry for Sonos
Sonos MCP server: control your Sonos speakers from any MCP client.
What it can do
- Ask Zonefoundry: Sends a request in natural language to the user's ZoneFoundry assistant, which carries it out on the user's Sonos system and returns a reply. It handles playing songs, artists, albums
- List Rooms: List this user's Sonos rooms and current groups (cloud topology).
- Now Playing: Current playback state (track/artist/state/volume) for a room.
What data it sees
Do you need an account
No: the server works without sign-in
Sonos MCP server: control your Sonos speakers from any MCP client. Play songs, artists and playlists, set volume, group rooms, move music to another room, switch to TV, spoken announcements and reminders. 27 tools, English and Chinese. Works through the official Sonos cloud, so there is no home bridge to install; sign in with OAuth. Requires the free ZoneFoundry iOS app signed in to your Sonos account.
How to connect
How to connect ZoneFoundry for Sonos to Claude
The server address to paste into Claude settings:
https://zonefoundry--kisssam6886.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect ZoneFoundry for Sonos to ChatGPT
The server address to paste into ChatGPT settings:
https://zonefoundry--kisssam6886.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect ZoneFoundry for Sonos to Cursor
The server address to paste into Cursor settings:
https://zonefoundry--kisssam6886.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (27)
Raw names from tools/list. Only developers need these.
| ask_zonefoundry | Sends a request in natural language to the user's ZoneFoundry assistant, which carries it out on the user's Sonos system and returns a reply. It handles playing songs, artists, albums and playlists, news and radio, spoken announcements, scenes and multi-step requests, across Apple Music, Spotify, QQ Music and NetEase Cloud Music, and understands English and Chinese (Mandarin and Cantonese). An artist name plays about 10 of that artist's songs. Without the ZoneFoundry bridge, tracks play directly on the speaker and are added to the Sonos queue the next time the ZoneFoundry app is opened. Examples: 'play some jazz in the kitchen', 'play the morning news in the bedroom', '喺客厅播周杰伦'. |
| list_rooms | List this user's Sonos rooms and current groups (cloud topology). |
| now_playing | Current playback state (track/artist/state/volume) for a room. |
| toggle_play_pause | Toggle play/pause in a room's group. |
| next_track | Skip to next track in a room's group. |
| previous_track | Skip to previous track in a room's group. |
| set_volume | Set a room's volume (0-70; values above 70 are clamped for safety). |
| adjust_volume | Raises or lowers a room's volume by a relative amount (-30 to 30); the current level does not need to be known. |
| set_mute | Mutes or unmutes a single room. Muting keeps playback running. |
| set_play_mode | Turns shuffle and/or repeat on or off for a room's group. repeat: 'off' | 'all' (repeat the queue) | 'one' (repeat the current track). Only the settings that are passed are changed. |
| set_home_theater | Changes soundbar settings: night mode (quieter loud scenes, clearer quiet ones) and speech enhancement (clearer dialogue). Applies to Sonos soundbars; if the named room has no soundbar, the home's soundbar is used. Only the settings that are passed are changed. |
| move_music | Moves what's playing from one room to another: the music continues in `to_room` and stops in `from_room` (other rooms grouped with `from_room` keep playing). |
| switch_source | Switch a room between music, TV audio (soundbar HDMI/optical) and line-in. All three go through Sonos' cloud, so the user doesn't need to be home or have the app open; TV picks a soundbar with a TV input, line-in picks a speaker with a line-in port. Only if the cloud can't switch to TV does it fall back to the ZoneFoundry app on the home Wi-Fi. |
| seek | Jump to a position in the current track, in seconds from the start (e.g. 90 = 1:30). Only works while something is playing. |
| group_rooms | Group one or more rooms onto `room` so they all play the same thing. `room` stays the one that keeps playing; the others join it. |
| ungroup_room | Take a room out of whatever group it is in, so it plays on its own again. |
| play_music | Searches for a song or artist and starts playback in a room through the Sonos cloud. A query of 'title artist' plays one song; an artist name alone plays a batch of that artist's songs, with duplicate versions of the same title removed. Without the ZoneFoundry bridge, tracks play directly on the speaker and are added to the Sonos queue the next time the ZoneFoundry app is opened. |
| search_music | Searches for songs without playing them and returns candidate tracks (name, artist, album, duration). |
| announce | Speaks a short text message aloud on a room's Sonos speaker using text-to-speech. Music pauses during the message and then resumes. Up to 300 characters, at least 8 seconds apart; one message can carry several items. language: zh-CN / zh-HK / en-US; when omitted, the home's language preference is used. |
| set_reminder | Schedules a one-time spoken reminder: at the given time the room's Sonos speaker reads the text aloud (text-to-speech). Takes either `at` (the home's local time, 24-hour HH:MM) or `in_minutes`. Examples: {text:'Time to get up',room:'Bedroom',at:'07:30'} / {text:'焗炉好了',room:'客厅',in_minutes:20}. This is ZoneFoundry's own scheduler, separate from native Sonos alarms. |
| list_reminders | List pending spoken reminders created via this MCP connection. |
| cancel_reminder | Cancels a pending reminder by its reminderId. |
| play_history | Lists recent requests this home made to ZoneFoundry, newest first: the user's own words (e.g. 'play Norah Jones', '播周杰伦'), with time, channel and whether each succeeded. Covers requests made through the ZoneFoundry assistant, the app's voice and command features, messaging bots and this connection; music started by browsing in the app or in the Sonos app is not recorded. Entries contain the request text only, with no structured track or artist fields. |
| taste_profile | Returns this home's learned listening profile (usual artists, genres, rooms, times of day and language habits) plus request statistics (most repeated requests, busiest hours, channels). Same coverage as the play history. The profile is regenerated daily and may be empty for a new user; statistics are computed live. |
| list_favorites | Lists the home's Sonos favorites (title, artist, position, service) in the order Sonos stores them. Works without the ZoneFoundry bridge. Sonos caps favorites at about 70 items; `total` is the real count. |
| list_playlists | Lists the home's Sonos playlists (id, title, track count). Works without the ZoneFoundry bridge. An error response means the list could not be read, not that there are no playlists. |
| undo_last | Reverts the most recent volume or grouping change made in this home within the last 10 minutes, restoring every room's prior volume and group layout. Each change can be undone once; repeated calls step back through earlier changes. Playback, favorites, alarms and other settings are not affected. |