Model Context Protocol (MCP) server for controlling Sonos speakers and playing audio streams through CastBreeze.
- 🔐 OAuth authentication with CastBreeze
- 🔊 Control Sonos speakers through MCP
- 🎵 Play audio clips (MP3, WAV) from URLs or local files
- 📻 Stream audio URLs on repeat
- 🎚️ Manage playback priority and volume
- 🏠 Get speaker groups and player information
- 🔔 Play default chime sounds
npm install -g @castbreeze/sonos-mcppnpm add -g @castbreeze/sonos-mcpnpx @castbreeze/sonos-mcpAdd to your Claude Desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"castbreeze-sonos": {
"command": "npx",
"args": ["-y", "@castbreeze/sonos-mcp"]
}
}
}Or if installed globally:
{
"mcpServers": {
"castbreeze-sonos": {
"command": "sonos-mcp"
}
}
}Add to your Cline MCP settings (.roo/mcp.json):
{
"mcpServers": {
"castbreeze-sonos": {
"command": "node",
"args": ["path/to/dist/index.js"]
}
}
}The server uses OAuth for authentication with CastBreeze:
- Use the
start_logintool to initiate OAuth flow - Complete authorization in your browser
- Use the
finish_logintool with the authorization code - Access token is stored in
auth.jsonfor future use
- start_login: Start OAuth login flow (opens browser)
- finish_login: Complete OAuth login with authorization code
-
play_default_chime: Play the default chime sound
- Parameters:
players(array or "*"),volume(optional),priority(optional)
- Parameters:
-
play_audio_clip: Play an audio clip (MP3/WAV)
- Parameters:
players,uri(URL or file:// path),volume(optional),priority(optional) - Supports:
https://,http://,file://URIs
- Parameters:
-
play_radio: Play a URI on repeat (streaming)
- Parameters:
uri,groups(optional),volume(optional)
- Parameters:
- get_groups: Get all speaker groups and players
- auth://status: Current authentication status and token information
Play the default chime on my Sonos speakers
Play https://example.com/audio.mp3 on my Sonos
Play the file at /path/to/audio.mp3 on Sonos
Play https://stream.example.com/radio on repeat
# Install dependencies
pnpm install
# Build
pnpm build
# Run with inspector
pnpm inspector- Node.js >= 22.0.0
- CastBreeze account (for OAuth authentication)
- Sonos speakers on your network
mcp/
├── src/
│ ├── index.ts # Main MCP server implementation
│ └── server-selection.ts # Server selection utilities
├── dist/ # Compiled JavaScript output
├── auth.json # OAuth tokens (auto-generated)
├── package.json
└── README.md
MIT
Contributions are welcome! Please feel free to submit a Pull Request.
- GitHub Issues: https://github.com/castbreeze/mcp/issues
- Email: spostma@castbreeze.com
- CastBreeze - Audio streaming automation platform
- Cast to Sonos - Chrome extension for casting to Sonos
- Initial npm release as
@castbreeze/sonos-mcp - OAuth authentication support
- Audio clip playback from URLs and local files
- Radio streaming support
- Speaker group management