MCP server for Lyrion Music Server / Logitech Media Server. Talks to LMS through JSON-RPC endpoint and exposes practical player, playback, playlist and library-search tools.
Server has 24 well-named tools with consistent verb_noun patterns (lms_*). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas are present with type definitions and parameter descriptions. However, output schemas are not documented, responses are inferred from code but not formally declared. Error handling exists (LmsError class) but lacks recovery guidance. Parameter descriptions are adequate but could be more prescriptive about constraints and formats. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications.
Append a library track by LMS track id to the current playlist.
List albums. sort examples: album, artistalbum, yearalbum.
Clear the current player playlist.
List saved LMS favorites.
List LMS library genres.
Skip to next playlist item.
Pause playback on a player.
Output schemas not documented. Tool responses are inferred from code (e.g., lms_players returns {count, players array}) but not formally declared in tool definitions. LLMs cannot plan downstream calls or extract fields reliably without documented return types.
Tool annotations missing. Tools have clear risk classifications (READ_ONLY, WRITE, DESTRUCTIVE) but do not declare readOnlyHint, destructiveHint, or idempotentHint in tool definitions. Agents cannot distinguish safe from unsafe operations without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 79 | 2026-07-28+ | v2 |
Start playback on a player.
Toggle play/pause for a player.
Load and play a library track by LMS track id.
Play a direct URL/stream on a player.
Get detailed status of one player. `player` can be id or name fragment.
List all LMS players with id, name, model, power and connection state.
Return the current playlist for a player.
Skip to previous playlist item.
List saved LMS playlists.
Search albums in the LMS library.
Search artists in the LMS library.
Search tracks in the LMS library.
Get Lyrion server status, version, library statistics and player count.
Set player power: on, off, or toggle.
Set player volume 0-100.
Stop playback on a player.
Test connection to Lyrion Music Server and return basic server status.
Error messages lack recovery guidance. LmsError exceptions (e.g., 'player not found', 'ambiguous player') are raised but do not suggest next steps. Errors should guide agents: 'player not found: jack. Try lms_players() to see available players.'
Parameter constraints not fully specified. 'limit' and 'playlist_limit' parameters accept integers but lack explicit min/max bounds in descriptions. Code enforces _limit(value, default, max_value) internally, but descriptions should state: 'Maximum playlist items to return (1 - 100, default 20).'
Player parameter resolution is implicit. Tools accept 'player' as 'id or name fragment' but do not document the resolution order (exact ID → exact name → substring match). Agents cannot predict which player will be selected if multiple match. Add: 'Resolved in order: exact playerid, exact name, substring match. Raises error if ambiguous.'