Sonos MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_all_device_statesB | Retrieve the state information for all discovered Sonos devices. Returns: List[Dict[str, Any]]: A list of dictionaries containing state information for each device. |
| now_playingB | Retrieve information about currently playing tracks on all Sonos devices. Returns: List[Dict[str, str]]: A list of dictionaries containing the name, title, artist, and album of currently playing tracks. |
| get_device_stateA | Retrieve the state information for a specific Sonos device. Args: name: The name of the device to retrieve state information for. If None, uses the current device. Returns: Dict[str, Any]: A dictionary containing the device's name, volume, state, and current track information. |
| pauseB | Pause playback on a Sonos device. Args: name: The name of the device to pause. If None, uses the current device. Returns: Dict[str, Any]: The device's state after pausing, including name, volume, state, and track info. |
| stopA | Stop playback on a Sonos device. Args: name: The name of the device to stop. If None, uses the current device. Returns: Dict[str, Any]: The device's state after stopping, including name, volume, state, and track info. |
| playA | Start playback on a Sonos device. Args: name: The name of the device to start playback on. If None, uses the current device. Returns: Dict[str, Any]: The device's state after starting playback, including name, volume, state, and track info. |
| nextA | Skip to the next track on a Sonos device. Args: name: The name of the device to skip the track on. If None, uses the current device. Returns: Dict[str, Any]: The device's state after skipping to the next track, including name, volume, state, and track info. |
| previousA | Skip to the previous track on a Sonos device. Args: name: The name of the device to skip the track on. If None, uses the current device. Returns: Dict[str, Any]: The device's state after skipping to the previous track, including name, volume, state, and track info. |
| get_queueA | Retrieve the queue of tracks for a Sonos device. Args: name: The name of the device to retrieve the queue from. If None, uses the current device. Returns: List[Dict[str, Any]]: A list of dictionaries containing track information in the queue. |
| modeA | Get or set the play mode of a Sonos device. Args: mode: The play mode to set (e.g., "NORMAL", "SHUFFLE_NOREPEAT", "SHUFFLE", "REPEAT_ALL"). If None, returns the current mode. name: The name of the device to set the mode for. If None, uses the current device. Returns: str: The current play mode after the operation. |
| partymodeA | Enable party mode on the current Sonos device. Returns: Dict[str, Any]: The device's state after enabling party mode, including name, volume, state, and track info. |
| speaker_infoB | Retrieve speaker information for a Sonos device. Args: name: The name of the device to retrieve speaker information from. If None, uses the current device. Returns: Dict[str, str]: A dictionary containing speaker information. |
| get_current_track_infoA | Retrieve current track information for a Sonos device. Args: name: The name of the device to retrieve track information from. If None, uses the current device. Returns: Dict[str, str]: A dictionary containing the current track's artist, title, album, playlist position, and duration. |
| volumeA | Get or set the volume of a Sonos device. Args: volume: The volume level to set (0-99). If None, returns current volume. name: The name of the device to control. If None, uses the current device. Returns: int: The current volume level after the operation. Raises: ValueError: If volume is not between 0 and 99. ValueError: If the specified device is not found. |
| skipA | Skip tracks in the queue for a Sonos device. Args: increment: The number of tracks to skip forward. Defaults to 1. name: The name of the device to skip tracks on. If None, uses the current device. Returns: Dict[str, Any]: The device's state after skipping tracks, including name, volume, state, and track info. Raises: ValueError: If the new track position is out of the queue's range. |
| play_indexA | Play a specific track from the queue on a Sonos device. Args: index: The index of the track to play. name: The name of the device to play the track on. If None, uses the current device. Returns: Dict[str, Any]: The device's state after playing the specified track, including name, volume, state, and track info. Raises: ValueError: If the index is out of the queue's range. |
| remove_index_from_queueA | Remove a specific track from the queue on a Sonos device. Args: index: The index of the track to remove. name: The name of the device to remove the track from. If None, uses the current device. Returns: List[Dict[str, Any]]: The updated queue after removing the track. Raises: ValueError: If the index is out of the queue's range. |
| get_queue_lengthB | Retrieve the queue length for a Sonos device. Args: name: The name of the device to retrieve the queue length from. If None, uses the current device. Returns: int: The length of the queue. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools have distinct purposes, but some overlap exists. For example, 'skip' and 'next' both advance tracks, though 'skip' offers more flexibility with an increment parameter. 'get_current_track_info' and 'now_playing' both retrieve track info, but 'now_playing' covers all devices while 'get_current_track_info' is per-device. Descriptions help clarify these differences, but minor confusion could occur.
Tool names follow a consistent snake_case pattern throughout, with clear verb_noun structures like 'get_device_state', 'play_index', and 'remove_index_from_queue'. However, there are minor deviations: 'mode' and 'volume' are single-word nouns without verbs, and 'partymode' is a compound word instead of snake_case, slightly breaking the pattern.
With 18 tools, the count is slightly high but reasonable for a Sonos control server, covering device states, playback control, queue management, and settings. It might feel a bit heavy, but each tool serves a specific function without obvious redundancy, making it well-scoped for the domain.
The tool set provides comprehensive coverage for Sonos device management. It includes CRUD-like operations for queue management (get, remove), full playback control (play, pause, stop, next, previous, skip), device state retrieval, volume and mode settings, and specialized functions like party mode. No significant gaps are apparent for core audio control workflows.