lms-mcp
lms-mcp
An MCP server for controlling a Lyrion Music Server (formerly Logitech Media Server / SlimServer / Squeezebox server).
It talks to LMS over its JSON-RPC (CLI-over-HTTP) API on port 9000, and exposes
playback control, library search and queue management as MCP tools.
Requirements
Node.js ≥ 20
A reachable Lyrion Music Server with the web interface enabled
Setup
npm install
npm run buildConfigure via environment variables (see .env.example):
Variable | Required | Description |
| yes | Base URL, e.g. |
| no | HTTP basic auth user (only if password protection is on) |
| no | HTTP basic auth password |
| no | MAC or exact name of the player to target by default |
| no |
|
| no | HTTP transport port (default |
| 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:latestRun it with the bundled compose.yaml:
cp .env.example .env # set LMS_URL and MCP_AUTH_TOKEN
docker compose up -dThen 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 and their state |
| Current track, mode, volume, queue position |
| play / pause / toggle / stop / next / previous |
| Absolute (0–100) or relative ( |
| Seek to N seconds in the current track |
| Turn a player on/off |
| Search artists / albums / tracks, returns ids |
| Load / add / insert by library id or URL |
| List the current play queue |
| clear / remove / move / jump |
| Set repeat and shuffle modes |
| Escape hatch for any LMS CLI command |
Reference
LMS CLI API docs:
http://<your-server>:9000/html/docs/cli-api.html
License
MIT
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/eggs-gd/lms-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server