{"_id":"@castbreeze/sonos-mcp","_rev":"3-bfa4ed6463c29e5fe7eb921e121edbf9","name":"@castbreeze/sonos-mcp","dist-tags":{"latest":"1.1.2"},"versions":{"1.1.0":{"name":"@castbreeze/sonos-mcp","version":"1.1.0","keywords":["mcp","sonos","castbreeze","audio","streaming"],"author":{"url":"https://castbreeze.com","name":"Sem Postma","email":"spostma@castbreeze.com"},"license":"MIT","_id":"@castbreeze/sonos-mcp@1.1.0","maintainers":[{"name":"afirus","email":"sem.postma@gmail.com"}],"homepage":"https://github.com/castbreeze/sonos-mcp#readme","bugs":{"url":"https://github.com/castbreeze/sonos-mcp/issues"},"bin":{"sonos-mcp":"dist/index.js"},"dist":{"shasum":"5d19c77eded9776a5627cef470a8829da1a2a0cf","tarball":"https://registry.npmjs.org/@castbreeze/sonos-mcp/-/sonos-mcp-1.1.0.tgz","fileCount":4,"integrity":"sha512-w3ReQY9JubnvjM+mHCyHEJDntcqrADluS5kT078ceXSUxxY7hRG8E+QxfTGe3bgrSE735J8LEoytduU5sQOJ9g==","signatures":[{"sig":"MEUCIQDQDdZIgcKYVJR8Ur7rDHQlqkuIbbkEiLCLF12kdR+ngQIgcmFRN/5oGCAaCklmV/pQEluLk16bKFs9AL1Aysrd798=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38228},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"8b39a135317188859d5af02800cf02652b952cf3","scripts":{"build":"tsc","inspector":"tsc && npx -y @modelcontextprotocol/inspector dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"afirus","email":"sem.postma@gmail.com"},"repository":{"url":"git+https://github.com/castbreeze/sonos-mcp.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP server for CastBreeze functionality - control Sonos speakers and play audio streams","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@modelcontextprotocol/sdk":"^1.24.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"@types/node":"^22.11.0"},"_npmOperationalInternal":{"tmp":"tmp/sonos-mcp_1.1.0_1764874855130_0.43067681037291106","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@castbreeze/sonos-mcp","version":"1.1.1","keywords":["mcp","sonos","castbreeze","audio","streaming"],"author":{"url":"https://castbreeze.com","name":"Sem Postma","email":"spostma@castbreeze.com"},"license":"MIT","_id":"@castbreeze/sonos-mcp@1.1.1","maintainers":[{"name":"afirus","email":"sem.postma@gmail.com"}],"homepage":"https://github.com/castbreeze/mcp#readme","bugs":{"url":"https://github.com/castbreeze/mcp/issues"},"bin":{"sonos-mcp":"dist/index.js","castbreeze-mcp":"dist/index.js"},"dist":{"shasum":"a199d1682e1d0c770aa3a87455ec67cb1111d9c3","tarball":"https://registry.npmjs.org/@castbreeze/sonos-mcp/-/sonos-mcp-1.1.1.tgz","fileCount":4,"integrity":"sha512-ZMxD4OO8LqJINR/g5NbFl2fiDnF05fDrJJ97FwoqfTg6uT4hg2Unn4ttEXofhIdEEvCj1R97RSRJKWy711Z2lQ==","signatures":[{"sig":"MEQCIByi33LwlINnSmq31e6HvP2Ums9HGfT8JkJ01P9VZZmzAiBD16FK0wv3BpxNqCDMmlhtVINVtO0BPbPXgPgYXhhfjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40782},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"dfc374e69e9cd970f76284ec8717bb715f2a58c6","scripts":{"build":"tsc","inspector":"tsc && npx -y @modelcontextprotocol/inspector dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"afirus","email":"sem.postma@gmail.com"},"repository":{"url":"git+https://github.com/castbreeze/mcp.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP server for CastBreeze functionality - control Sonos speakers and play audio streams","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@modelcontextprotocol/sdk":"^1.24.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.0","devDependencies":{"@types/node":"^22.11.0"},"_npmOperationalInternal":{"tmp":"tmp/sonos-mcp_1.1.1_1764875230036_0.7606594676521992","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@castbreeze/sonos-mcp","version":"1.1.2","description":"MCP server for CastBreeze functionality - control Sonos speakers and play audio streams","type":"module","packageManager":"pnpm@9.15.0","main":"dist/index.js","types":"dist/index.d.ts","bin":{"sonos-mcp":"dist/index.js"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","inspector":"tsc && npx -y @modelcontextprotocol/inspector dist/index.js"},"keywords":["mcp","sonos","castbreeze","audio","streaming"],"author":{"name":"Sem Postma","email":"spostma@castbreeze.com","url":"https://castbreeze.com"},"license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/castbreeze/mcp.git"},"bugs":{"url":"https://github.com/castbreeze/mcp/issues"},"homepage":"https://github.com/castbreeze/mcp#readme","dependencies":{"@modelcontextprotocol/sdk":"^1.24.2"},"devDependencies":{"@types/node":"^22.11.0"},"engines":{"node":">=22.0.0"},"_id":"@castbreeze/sonos-mcp@1.1.2","gitHead":"dfc374e69e9cd970f76284ec8717bb715f2a58c6","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-5FNfjUocHBMsHZr0s7c++FZIX5jSSZKK8PEj8wXT7h0d7LxHV/wLRfqQY0XP3wWY/L7EpSgwYScN1r5O3+sWOA==","shasum":"ae5b24bd7b70037d742bb35f1f17636d9995c658","tarball":"https://registry.npmjs.org/@castbreeze/sonos-mcp/-/sonos-mcp-1.1.2.tgz","fileCount":4,"unpackedSize":40715,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDBfOo7z/OLxHcJEqF+AKO7QEEGS6EqAqL0hniZsg1mdAIhAIwBL5ASg88fjY9DoCd9IMbEkwKTd0kaepnFz607vmGU"}]},"_npmUser":{"name":"afirus","email":"sem.postma@gmail.com"},"directories":{},"maintainers":[{"name":"afirus","email":"sem.postma@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sonos-mcp_1.1.2_1764875310950_0.6108037931884205"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-04T19:00:55.008Z","modified":"2025-12-04T19:08:31.345Z","1.1.0":"2025-12-04T19:00:55.281Z","1.1.1":"2025-12-04T19:07:10.198Z","1.1.2":"2025-12-04T19:08:31.096Z"},"bugs":{"url":"https://github.com/castbreeze/mcp/issues"},"author":{"name":"Sem Postma","email":"spostma@castbreeze.com","url":"https://castbreeze.com"},"license":"MIT","homepage":"https://github.com/castbreeze/mcp#readme","keywords":["mcp","sonos","castbreeze","audio","streaming"],"repository":{"type":"git","url":"git+https://github.com/castbreeze/mcp.git"},"description":"MCP server for CastBreeze functionality - control Sonos speakers and play audio streams","maintainers":[{"name":"afirus","email":"sem.postma@gmail.com"}],"readme":"# @castbreeze/sonos-mcp\r\n\r\nModel Context Protocol (MCP) server for controlling Sonos speakers and playing audio streams through CastBreeze.\r\n\r\n## Features\r\n\r\n- 🔐 OAuth authentication with CastBreeze\r\n- 🔊 Control Sonos speakers through MCP\r\n- 🎵 Play audio clips (MP3, WAV) from URLs or local files\r\n- 📻 Stream audio URLs on repeat\r\n- 🎚️ Manage playback priority and volume\r\n- 🏠 Get speaker groups and player information\r\n- 🔔 Play default chime sounds\r\n\r\n## Installation\r\n\r\n### NPM\r\n\r\n```bash\r\nnpm install -g @castbreeze/sonos-mcp\r\n```\r\n\r\n### PNPM\r\n\r\n```bash\r\npnpm add -g @castbreeze/sonos-mcp\r\n```\r\n\r\n### NPX (No Installation)\r\n\r\n```bash\r\nnpx @castbreeze/sonos-mcp\r\n```\r\n\r\n## Usage\r\n\r\n### With Claude Desktop\r\n\r\nAdd to your Claude Desktop configuration file:\r\n\r\n**MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\r\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"castbreeze-sonos\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@castbreeze/sonos-mcp\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nOr if installed globally:\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"castbreeze-sonos\": {\r\n      \"command\": \"sonos-mcp\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### With Cline (VS Code Extension)\r\n\r\nAdd to your Cline MCP settings (`.roo/mcp.json`):\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"castbreeze-sonos\": {\r\n      \"command\": \"node\",\r\n      \"args\": [\"path/to/dist/index.js\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## Authentication\r\n\r\nThe server uses OAuth for authentication with CastBreeze:\r\n\r\n1. Use the `start_login` tool to initiate OAuth flow\r\n2. Complete authorization in your browser\r\n3. Use the `finish_login` tool with the authorization code\r\n4. Access token is stored in `auth.json` for future use\r\n\r\n## Available Tools\r\n\r\n### Authentication\r\n\r\n- **start_login**: Start OAuth login flow (opens browser)\r\n- **finish_login**: Complete OAuth login with authorization code\r\n\r\n### Playback\r\n\r\n- **play_default_chime**: Play the default chime sound\r\n  - Parameters: `players` (array or \"*\"), `volume` (optional), `priority` (optional)\r\n\r\n- **play_audio_clip**: Play an audio clip (MP3/WAV)\r\n  - Parameters: `players`, `uri` (URL or file:// path), `volume` (optional), `priority` (optional)\r\n  - Supports: `https://`, `http://`, `file://` URIs\r\n\r\n- **play_radio**: Play a URI on repeat (streaming)\r\n  - Parameters: `uri`, `groups` (optional), `volume` (optional)\r\n\r\n### Device Management\r\n\r\n- **get_groups**: Get all speaker groups and players\r\n\r\n## Available Resources\r\n\r\n- **auth://status**: Current authentication status and token information\r\n\r\n## Examples\r\n\r\n### Play a chime on all speakers\r\n\r\n```\r\nPlay the default chime on my Sonos speakers\r\n```\r\n\r\n### Play an MP3 from URL\r\n\r\n```\r\nPlay https://example.com/audio.mp3 on my Sonos\r\n```\r\n\r\n### Play a local file\r\n\r\n```\r\nPlay the file at /path/to/audio.mp3 on Sonos\r\n```\r\n\r\n### Stream a radio station\r\n\r\n```\r\nPlay https://stream.example.com/radio on repeat\r\n```\r\n\r\n## Development\r\n\r\n```bash\r\n# Install dependencies\r\npnpm install\r\n\r\n# Build\r\npnpm build\r\n\r\n# Run with inspector\r\npnpm inspector\r\n```\r\n\r\n## Requirements\r\n\r\n- Node.js >= 22.0.0\r\n- CastBreeze account (for OAuth authentication)\r\n- Sonos speakers on your network\r\n\r\n## Project Structure\r\n\r\n```\r\nmcp/\r\n├── src/\r\n│   ├── index.ts           # Main MCP server implementation\r\n│   └── server-selection.ts # Server selection utilities\r\n├── dist/                  # Compiled JavaScript output\r\n├── auth.json             # OAuth tokens (auto-generated)\r\n├── package.json\r\n└── README.md\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n## Support\r\n\r\n- GitHub Issues: https://github.com/castbreeze/mcp/issues\r\n- Email: spostma@castbreeze.com\r\n\r\n## Related Projects\r\n\r\n- [CastBreeze](https://castbreeze.com) - Audio streaming automation platform\r\n- [Cast to Sonos](https://casttosonos.com) - Chrome extension for casting to Sonos\r\n\r\n## Changelog\r\n\r\n### 1.1.0\r\n- Initial npm release as `@castbreeze/sonos-mcp`\r\n- OAuth authentication support\r\n- Audio clip playback from URLs and local files\r\n- Radio streaming support\r\n- Speaker group management\r\n","readmeFilename":"README.md"}