lms-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LMS_HOST | No | IP address or hostname of your LMS server | localhost |
| LMS_PORT | No | Port number of your LMS server | 9000 |
| LMS_TIMEOUT | No | Request timeout in milliseconds | 10000 |
| LMS_PROTOCOL | No | Protocol to use (http or https) | http |
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
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_playersA | Get all available players from the LMS server |
| get_player_statusA | Get the current status of a specific player |
| play_pauseB | Play or pause a player |
| set_volumeA | Set the volume of a player (0-100) |
| seekA | Seek to a specific position in the current track |
| play_trackC | Play a specific track by ID |
| playlist_actionB | Perform playlist actions (play, pause, stop, next, previous, shuffle, repeat) |
| search_tracksB | Search for tracks |
| search_artistsC | Search for artists |
| search_albumsC | Search for albums |
| get_playlistsB | Get all available playlists |
| get_genresA | Get all genres available in the music database |
| search_tracks_by_genreB | Search for tracks by genre |
| get_current_playlistB | Get the current playlist for a player |
| add_to_playlistC | Add a track to the current playlist |
| clear_playlistC | Clear the current playlist |
| sync_playersA | Synchronize two players (master controls slave) |
| unsync_playerB | Remove a player from synchronization (unsync) |
| get_sync_statusB | Get synchronization status for a specific player |
| get_sync_groupsB | Get all synchronization groups |
| test_connectionA | Test connection to the LMS server |
| play_urlB | Play a direct URL or stream on a player (internet radio, podcast, etc.) |
| add_url_to_playlistB | Add a direct URL or stream to the current playlist |
| get_favoritesA | Get all favorites (often includes radio stations and online streams) |
| add_favoriteA | Add a URL or stream to favorites |
| play_favoriteB | Play a favorite by item ID on a player |
| get_radiosB | Get radio directory categories and apps (TuneIn, etc.) |
| search_radioA | Search TuneIn radio stations and podcasts |
| play_radio_itemA | Play a TuneIn radio search result by item ID on a player |
| get_appsA | Get installed online music apps (TIDAL, Spotify, Qobuz, YouTube, etc.) |
| browse_appA | Browse an online music app menu (TIDAL, Spotify, etc.) |
| search_appA | Search within an online music app (TIDAL, Spotify, etc.) |
| play_app_itemB | Play an item from an online music app by item ID |
| set_powerA | Turn a player on, off, or toggle power |
| set_sleep_timerB | Set a sleep timer on a player in seconds |
| set_bassA | Set bass level on a player (-100 to 100) |
| set_trebleB | Set treble level on a player (-100 to 100) |
| set_balanceA | Set left/right balance on a player (-100 to 100) |
| set_loudnessB | Enable or disable loudness compensation on a player |
| set_muteB | Mute or unmute a player |
| jump_to_playlist_indexB | Jump to a specific track index in the current playlist |
| delete_playlist_itemA | Delete a track from the current playlist by index |
| move_playlist_itemA | Move a track within the current playlist |
| save_playlistA | Save the current player playlist as a named playlist |
| delete_saved_playlistA | Delete a saved playlist |
| rename_saved_playlistB | Rename a saved playlist |
| get_server_statusA | Get LMS server status and library statistics |
| rescan_libraryA | Trigger a library rescan |
| set_random_playB | Start or stop a random play mix |
| set_shuffleB | Set shuffle mode on a player |
| set_repeatC | Set repeat mode on a player |
| get_yearsA | Get years available in the music library |
| get_decadesB | Get decades available in the music library |
| get_new_musicB | Get recently added albums |
| get_random_albumsB | Get a random selection of albums |
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 55 tools
Some overlapping actions exist, e.g., `play_pause` and `playlist_action` both control playback, and multiple `play_*` tools target different sources but with similar verbs. Tools like `get_current_playlist` and `get_playlists` are distinct but the naming could cause confusion. Overall, most tools have clear targets, but a few ambiguity points lower the score.
Most tools follow a consistent `verb_noun` pattern (e.g., `add_favorite`, `clear_playlist`, `search_tracks`). However, there are minor deviations like `playlist_action` (noun_noun) and `play_pause` (verb_verb), and `jump_to_playlist_index` uses a preposition. These are infrequent, so the overall consistency is good.
With 55 tools, the server is very large. While LMS is a complex domain, many tools are highly specialized (e.g., individual set commands for balance, bass, treble) and could be combined. The high count makes it harder for agents to navigate and select the right tool, exceeding the typical well-scoped range.
The tool set covers virtually all aspects of LMS: playback, playlist management, search, player settings, synchronization, library browsing, app integration, and favorites. There are no obvious dead ends or missing operations for a music server of this level.