Skip to main content
Glama

lms-mcp-server

Lyrion Music Server (LMS)용 MCP 서버입니다. Claude가 음악 라이브라리를 조회하고("이 John Coltrane 앨범이 떠 있지?", "이번에 앨범을 추가했지?") 플레이어를 제어("사무실에서 최신 Mali Sheard 앨범 재생")할 수 있게 합니다.

스트리밍 가능한 HTTP MCP 서버로 동작하며, 플레이어 상태를 폴링하여 재생 이력을 기록합니다. LMS는 마지막 재생 날짜를 저장하지 않으므로, "이번 주에 를 재생했지?" 는일은 서버가 시작된 날부터 가능합니다. 재생 횟수는 앨범 단위 청취 세션(들린 트랙 기준 아님)이며, 각 재생마다 앨범의 발매 연도와 라이브라리 추가 날짜가 기록됩니다. 따라서 "올해 발매된 앨범 중 재생 많음 순서를" 응답" is기록만으로 답할 수 있습니다.

이 서버는 분명한 오해를 갖고 있습니다. 후 같은 "앨범" 단위입니다:

  • 앨범이 기본 단하다. "Champs의 Vamala 재생"은 앨범 전체를 재생재합니다. 단일 트랙 sk는 명시적으로 요청할 때만 사용합니다 ("Vamala 곡 재생"). 도구 설명도 모델이 같은 방향으로 행동하도록 안내합니다.

  • 아티스트가 앨범 아티스트를 의미합니다. John Coltrane의 앨범을 검색하면 그가 게스트로 참여한 트리트 앨범이 아니라 앨범 아티스트로 만든 앨범을 변환합니다. 아티스트 검색은 LMS의 ALBUMARTIST 역할과 일치하며, "앨범 아티스트" 브라우저 보기와 일치합니다.

  • 로컬 파일이 스트리밍 카피보다 우선합니다. 로컬 파일과 동기화된 온라인 라이브러리 카피(예: Qobu 즐겨찾기)가 동시에 있으면 로컬 버전만 표시합니다. 온라인 전용 앨범 응는 그대로 표시됩니다.

코드와 문서는 100% Claude가 작성했습니다.

도구

도구

list_players

플레이어/방, 전원/루 재생 상태

search_albums

텍스트 및/또는 앨범 아티스트로 검색; 최신순 또는 임의 순 없이 정렬

search_tracks

단일 트랙, 명시인 단일 곡 재청

get_reen

지난 N일 이내 추가된 앨범 및 추가 날짜

get_recently_played_albums

지난 N일 이내 재생된 앨범, 서버 자체 이력 기준

play_album

플레이어에서 앨범 전체 재생 또는 큐어에 추가 (이름 부 일치)

play_track

트랙 하나 재생 또는 큐어에 추가

control_player

일시정지, 계속, 정지, 볼륨

Related MCP server: Music Assistant MCP

구셩

환경 변수

기본값

LMS_URL

필요

LMS 기조 URL (인증 없음) 예: http://lms.local:1200

PORT

1800

HTTP 수신 트트

HISTRY_FILE

./data/history.jsonl

재생 이력 저장소

POLL_INTERVAL_MS

12000

플레이어 상태 폴링 간격

잘못된 값은 조용히 오작동하지 않처고 서버 시작 시 실패합니다.

로컬 실행

npm install
npm test        # unit + transport integration tests (vitest)
npm run bdd     # BDD scenarios (cucumber) - full stack against a stub LMS, no real server needed
LMS_URL=http://<lms-host>:9000 npm run smoke   # read-only checks against the real LMS
LMS_URL=http://<lms-host>:9000 npm run dev
claude mcp add --transport http lms http://localhost:3000/mcp

features/의 BDD 수트가 해양한 테스트입니다. 실제 MCP 클라인트, 실제 HTTP 트랜스토트, 실제 재생 이력 기록기(play recorder)를 상태스터브가 있는 test/stub/lms-stub.ts에 대결하여 실생하는 검증입니다. 이 테스트는 실제 서버에는 전혀 않으므로 재생 시나리오는 언제든 안전하게 실행할 수 있습니다. npm run smoke만 실재 서버로 통신하며, 이 명령은 실제 재생 명령으로 알려지지 않습니다.

Docker

docker compose up --build

GitHubb Actions의 CI는 테스트 함를 실행하고, main 브랜치에 푸시가 있을 때마다 ghcr.io/sixeyed/lms-mcp-server를 latest 및 sha-* 태그로 푸시합니다. 레지스리의 시크릿이 필요 없습니다 - 워크플로우의 GITUB_TOKEN으로 인증합니다.

배포

Kuber네이스(또는 오케스트레터)에서 실생하기 위한 참고 사항:

  • 이미지: ghcr.io/sixeyed/lms-mcp-server (퍼블릭 패키지)입니다.

  • LMS_URL이 설정되어야 하며 움 없이 서버가 시작되지 않습니다.

  • 단일 레플리카(strategy: Recreate) - 재생 이력 폴러를 동시에 여러 번 실행하지 않도록 하여 앨범 재생 기록이 중복되지 않게 합니다.

  • 네트워크/파일: RWO persistent volume을 /data에 마운트 후 이력 파일을 보관합니다.

  • 프로브: liveness GETge /healthz, readinessN GET /readyz.

클라이어트

  • Claude Code (LAN): claude mcp --http lms HTTP://<host>:3000 /mcp; private으로 만든 HTTPS 서버일 경우 NODE_EXTRA_CERTS를 설정하세요.

  • Claude Desktop: 커스텀 커넥터는 Anthropic 클라우드를 통과하는 프록시로 연결되므로 LAN 전용 서버에는 사용할 수 없습니다 - 따라서 claude_desktop_config.json에서 로컬 stdio 브리지를 사용하세요:

{ "mcpServers": { "lms": { "command": "npx", "args": ["mcp-remote", "http://<host>:3000/mcp", "--allow-http"] } } }
  • Claude iPhone app: 지원되지 않습니다 - 공개 HTTPS 엔드포인트가 필요하며, 이 서버에는 인증이 없습니다.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables music search, metadata retrieval, local audio analysis (tempo, key, energy), recommendations, song recognition, and classical work resolution via Spotify, Last.fm, AudD, MusicBrainz, and Songkick APIs.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLMs to control a Lyrion Music Server (LMS/Squeezebox) for playback, search, library browsing, and player management.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables an AI agent to inspect and control Lyrion Music Server (Logitech Media Server) players via the LMS JSON-RPC API, including playback, volume, playlists, favorites, radio, and library search/browse.
    MIT