Skip to main content
Glama

lms-mcp

An MCP server for controlling a Lyrion Music Server (GitHub, docs).

Lyrion Music Server (LMS) is a self-hosted music server — the open-source descendant of Logitech's SlimServer / Squeezebox Server. It streams your own library and internet radio to hardware Squeezebox players and software ones like squeezelite or the Material skin.

This server talks to LMS over its JSON-RPC (CLI-over-HTTP) API on port 9000 and exposes playback control, favorites/library search and queue management as MCP tools.

Requirements

  • Node.js ≥ 20

  • A reachable Lyrion Music Server with the web interface enabled

Related MCP server: Sound

Setup

npm install
npm run build

Configure via environment variables (see .env.example):

Variable

Required

Description

LMS_URL

yes

Base URL, e.g. http://192.168.1.10:9000

LMS_USERNAME

no

HTTP basic auth user (only if password protection is on)

LMS_PASSWORD

no

HTTP basic auth password

LMS_DEFAULT_PLAYER

no

MAC or exact name of the player to target by default

MCP_TRANSPORT

no

stdio (default) or http

MCP_HTTP_PORT

no

HTTP transport port (default 3000)

MCP_AUTH_TOKEN

no

Bearer token required on the HTTP endpoint

The server supports two transports:

  • stdio — for running locally, launched by the MCP client as a child process.

  • Streamable HTTP — a long-running endpoint at /mcp, used for the always-on Docker deployment. This is the image's default.

Local use (stdio)

npm install && npm run build
{
  "mcpServers": {
    "lms": {
      "command": "node",
      "args": ["/absolute/path/to/lms-mcp/dist/index.js"],
      "env": { "LMS_URL": "http://192.168.1.10:9000" }
    }
  }
}

During development: npm run dev.

Server use (Docker, HTTP)

Multi-arch images (linux/amd64, linux/arm64) are published to the GitHub Container Registry on every push to main and every v* tag:

ghcr.io/eggs-gd/lms-mcp:latest

Run it with the bundled compose.yaml:

cp .env.example .env      # set LMS_URL and MCP_AUTH_TOKEN
docker compose up -d

Then point the MCP client at the URL:

{
  "mcpServers": {
    "lms": {
      "url": "http://your-server:3000/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

GET /health returns a plain JSON liveness check.

Tools

Tool

What it does

list_players

List players and their state

now_playing

Current track, mode, volume, queue position

playback_control

play / pause / toggle / stop / next / previous

set_volume

Absolute (0–100) or relative (+5 / -10)

seek

Seek to N seconds in the current track

set_power

Turn a player on/off

search_library

Search artists / albums / tracks, returns ids

play_music

Load / add / insert by library id or URL

show_queue

List the current play queue

queue_edit

clear / remove / move / jump

set_repeat_shuffle

Set repeat and shuffle modes

raw_command

Escape hatch for any LMS CLI command

Reference

License

MIT

Available Tools

12 tools
list_playersList playersA

List all Squeezebox / squeezelite players known to the server and their state.

Inputs: no named parameters.

now_playingNow playingA

Show the current track, playback mode, volume and queue position for a player.

Inputs: player.

playback_controlPlayback controlB

Control transport: play, pause, toggle, stop, next or previous track.

Inputs: action (required), player.

play_musicPlay musicA

Load or queue music by library id (from search_library) or by direct URL. mode 'load' replaces the queue and plays, 'add' appends, 'insert' plays next.

Inputs: url, mode, player, albumId, +4 more.

queue_editEdit queueC

Clear the queue, remove a track by index, move a track, or jump to an index.

Inputs: action (required), index, player, toIndex.

raw_commandRaw CLI commandB

Escape hatch: run an arbitrary LMS CLI command. See http://:9000/html/docs/cli-api.html. Example command: ["mixer","muting","1"].

Inputs: command (required), player.

search_librarySearch libraryA

Search the music library. Returns matching artists, albums and tracks with the ids used by play_music.

Inputs: query (required), limit.

seekSeekA

Seek to a position (seconds from start) in the current track.

Inputs: seconds (required), player.

set_powerSet powerB

Turn a player on or off.

Inputs: on (required), player.

set_repeat_shuffleSet repeat / shuffleB

Set repeat (off/one/all) and/or shuffle (off/songs/albums) for a player.

Inputs: player, repeat, shuffle.

set_volumeSet volumeA

Set absolute volume (0-100) or a relative change like +5 / -10.

Inputs: volume (required), player.

show_queueShow queueB

List the current play queue (playlist) for a player.

Inputs: limit, player.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 12 tools

    Disambiguation4/5

    Each tool targets a distinct function (search, playback, queue editing, volume, etc.), and raw_command is clearly an escape hatch. Minor overlap exists between play_music's 'insert/add' modes and queue_edit's queue manipulation, but the descriptions make the boundary clear.

    Naming Consistency4/5

    Most tools follow a consistent snake_case verb_noun pattern like search_library, set_volume, and show_queue. A few exceptions such as raw_command, seek, and now_playing break the pattern slightly but remain readable and predictable.

    Tool Count5/5

    Twelve tools is within the ideal range for a media server control surface. Each tool addresses a core playback or queue function without unnecessary duplication.

    Completeness5/5

    The set covers the full playback lifecycle: discovering content, controlling transport, managing the queue, adjusting volume/seek/repeat/shuffle/power, and querying status. The raw_command escape hatch also covers edge operations missing from the curated surface.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Allows controlling Apple Music on macOS through an MCP server that supports playback control, volume adjustment, and music search functionality.
      2
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Apple Music playback control, library search, playlist management, and queue operations via MCP.
      2
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      MCP server that provides LLM tools to interact with Lyrion Music Server (LMS), enabling player control, playback management, playlist operations, and music library search.
      55
      21 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables LLMs to control a Lyrion Music Server (LMS/Squeezebox) for playback, search, library browsing, and player management.
      -