Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BLUESOUND_MCP_HOSTNoHost to bind for sse/streamable-http transports. Defaults to 127.0.0.1.127.0.0.1
BLUESOUND_MCP_PORTNoPort to use for sse/streamable-http transports (e.g., 8765).
BLUESOUND_MCP_CONFIGNoPath to a players.json file mapping player names to host:port, alternative to the default ~/.config/bluesound-mcp/players.json.
BLUESOUND_MCP_PLAYERSNoInline JSON string mapping player names to host:port, e.g. '{"woonkamer": "192.168.1.50"}'. Takes priority over configuration files.
BLUESOUND_MCP_TRANSPORTNoTransport type: stdio (default), sse, or streamable-http.stdio

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

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_playersA

List Bluesound players by name, with their host and port. Uses players.json if configured; otherwise falls back to a live network scan (see discover_players()), so this works with zero setup.

discover_playersA

Scan the local network for BluOS players via SSDP/UPnP, independent of players.json. Returns each player's own name (as set in the BluOS Controller app), host, port, and model - handy for finding IPs to put in players.json, or for checking what's on the network right now. Requires being on the same subnet as the players; won't find anything across routers/VLANs or most container network setups without host networking.

get_statusC

Get what a player is currently doing: track, artist, playback state, volume, etc.

get_group_statusC

Get a player's grouping info: whether it's leading or following a group, and who's in it.

playA

Resume playback on a player. Only works from paused, not from stopped.

pauseC

Pause playback on a player.

stopA

Stop playback on a player. Stopped playback can't be resumed with play() - start something new instead.

skipC

Skip to the next track in the play queue.

backB

Go back to the previous track (or restart the current one, if it just started).

set_shuffleB

Turn shuffle on or off for the current play queue.

set_volumeC

Get or set a player's volume (0-100). Call with no arguments to just read the current volume. Set tell_followers=True to also change grouped players' volume.

group_playersA

Group one or more players under a leader, for synchronized multi-room playback. leader and followers are player names as returned by list_players().

ungroup_playersA

Remove one or more followers from a leader's group. Leader and followers remain reachable individually.

ungroup_playerA

Fully remove a player from whatever group it's in, whether it's the leader (this disbands the group) or a follower (this just detaches it).

list_presetsA

List the saved presets (radio stations, playlists, inputs) available on a player.

load_presetB

Start playing a preset by its numeric id (see list_presets()).

browseA

Browse a player's music sources. With no key, lists top-level sources (TIDAL, TuneIn, Library, Playlists, inputs, ...). Pass a browse_key from a previous browse() or search_service() result to descend into it.

search_serviceA

Search within a streaming service configured on the player, e.g. search_service(player, "TIDAL", "Miles Davis"). service is matched (case-insensitive, partial) against the top-level source names from browse(). Results carry a play_url (pass to play_item()) or a browse_key (pass to browse(), e.g. to see an album's tracks) depending on the item type.

play_itemA

Start playing an item found via browse() or search_service(), using its play_url. This clears the current queue and starts playing immediately.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 19 tools

Disambiguation4/5

Most tools have clear, distinct purposes. The only potential confusion is between list_players and discover_players, but their descriptions clearly differentiate config-based vs network-scan discovery.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores (e.g., list_players, load_preset, set_shuffle). The naming is uniform and predictable.

Tool Count4/5

With 19 tools, the set is slightly larger than the typical 3-15 range but still reasonable for a music-control server covering discovery, playback, presets, browsing, searching, and grouping. No tools feel redundant.

Completeness4/5

The tool surface covers core operations: player discovery, playback control, preset management, music browsing/searching, and grouping. Missing queue management or detailed track info, but the essential functionality is present.

Maintenance

ActivityMaintained
ResponsivenessNo issues