bluesound-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bluesound-mcpPlay Kind of Blue by Miles Davis in the woonkamer"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bluesound-mcp
An MCP server for Bluesound/BluOS players — transport control, volume,
multi-room grouping, presets, and search/play from streaming services
(TIDAL, TuneIn, Deezer, ...). Built for wiring into Hermes the same way
you've wired up ah-mcp.
Built on:
pyblu— the same library Home Assistant's own Bluesound integration uses — for status, transport, volume, presets, and grouping.A small direct client (
bluos_client.py) for the/Browseendpoint, whichpybludoesn't cover, used for search and playing search results. Implemented against the official BluOS Custom Integration API v1.7.
Install
cd bluesound-mcp
pip install -e .Related MCP server: sonos-ts-mcp
Configure your players
Players are referred to by name everywhere (never by IP), so Hermes can say "woonkamer" instead of an address.
Zero config: auto-discovery
If no players.json is set up, tools fall back to scanning the local
network for BluOS players — via SSDP/UPnP plus a direct port-11000 sweep
of the local subnet — and confirming/naming each responder through its
BluOS /SyncStatus endpoint. Both are needed: some players never answer
SSDP at all, so the port sweep is what actually finds them, while SSDP
just gets faster results for players that do respond. Either way,
list_players() and every other tool work out of the box, using whatever
name you've already given the player in the BluOS Controller app. Call
discover_players() any time to run this scan directly, e.g. to find IPs
to pin in players.json.
This requires being on the same subnet as the players — it won't find anything across routers/VLANs, or from most container network setups without host networking.
Pinning players explicitly
Create ~/.config/bluesound-mcp/players.json:
{
"players": {
"woonkamer": "192.168.1.50",
"keuken": "192.168.1.51",
"slaapkamer": "192.168.1.52:11000"
}
}Port defaults to 11000 (standard for all BluOS players) if omitted.
Alternatives, if you'd rather not use a file (e.g. containerized):
BLUESOUND_MCP_CONFIG=/path/to/players.jsonBLUESOUND_MCP_PLAYERS='{"woonkamer": "192.168.1.50"}'(inline JSON, takes priority)
You already have these IPs in Home Assistant's Bluesound integration device list if you need to look them up again.
Run
Stdio (default — for local subprocess-style MCP clients):
bluesound-mcpSSE or streamable-http (for a networked setup, matching however you
ended up running ah-mcp):
BLUESOUND_MCP_TRANSPORT=sse BLUESOUND_MCP_HOST=0.0.0.0 BLUESOUND_MCP_PORT=8765 bluesound-mcp
# or
BLUESOUND_MCP_TRANSPORT=streamable-http BLUESOUND_MCP_HOST=0.0.0.0 BLUESOUND_MCP_PORT=8765 bluesound-mcpBLUESOUND_MCP_HOST defaults to 127.0.0.1 — set it to 0.0.0.0 if
Hermes reaches this over the network rather than as a local subprocess
(same reasoning as API_SERVER_HOST=0.0.0.0 for the Hermes API server
itself).
Wire it into Hermes's MCP config the same way as ah-mcp — point it at
the command (stdio) or URL (sse/streamable-http) above.
Tools
Tool | What it does |
| List player names + host/port (configured, or auto-discovered if no config) |
| Scan the network for BluOS players directly, regardless of config |
| Current track, artist, state, volume, etc. |
| Grouping info: leader/follower, who's grouped |
| Transport control |
| Toggle shuffle |
| Get/set volume (0-100) |
| Group players for synced multi-room playback |
| Remove specific followers from a group |
| Remove a player from its group, leader or follower |
| BluOS presets |
| Navigate sources (top-level if no key) |
| Search a service, e.g. |
| Play a |
A typical "play something from TIDAL" flow
search_service("woonkamer", "TIDAL", "Kind of Blue")Pick a result — an album/track item will have a
play_url; some items (an artist, say) only have abrowse_keyand need anotherbrowse()call to get to something playable.play_item("woonkamer", <that play_url>)
TIDAL (or any other service) has to already be set up and signed in on the player via the BluOS Controller app — this only searches/plays within what's already configured, it doesn't handle auth.
Notes on grouping
BluOS uses leader/follower ("primary"/"secondary") terminology. Only the
leader accepts source-selection and most control commands are proxied to
it, so if you group keuken under woonkamer, you're steering the
group through woonkamer. ungroup_player looks this up for you so you
can just say "take the keuken out of the group" without knowing which
side it's on.
Errors
pyblu raises PlayerUnreachableError (offline/timeout) and
PlayerUnexpectedResponseError (unexpected response — likely a pyblu
bug) — these surface as tool call failures with their message intact,
which is enough for Hermes to explain to you what went wrong. Unknown
player names raise a PlayerNotFoundError listing what is configured.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to control Music Assistant for music search, library browsing, playback, queue management, and playlist curation.2MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to control Sonos audio devices over a local network using UPnP/SOAP protocols, supporting playback, volume, queue management, zone grouping, and music library browsing.593313MIT
- FlicenseNot gradedqualityBmaintenanceEnables natural language control of Music Assistant home audio system, including playing music, controlling playback, adjusting volume, and managing queues, with intelligent player and provider resolution.1
- AlicenseNot gradedqualityBmaintenanceEnables LLMs to control a Lyrion Music Server (LMS/Squeezebox) for playback, search, library browsing, and player management.The Unlicense
Related MCP Connectors
Control Android TV from any AI. 38 MCP tools: playback, recap, recommend, smart-home, schedules.
Search MusicBrainz artists, releases, works, labels; resolve ISRC/ISWC/barcode; fetch cover art.
Unofficial integration! ## ✨ Key Features ### 💰 Financial Intelligence - **Smart Charging Cost An…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mmalkus/bluesound-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server