Skip to main content
Glama

Lidarr MCP Server

by axelterrier
cli.py3.83 kB
import json import sys import typer from typing import Optional from . import tools app = typer.Typer(add_completion=False) artists_app = typer.Typer() albums_app = typer.Typer() tracks_app = typer.Typer() app.add_typer(artists_app, name="artists") app.add_typer(albums_app, name="albums") app.add_typer(tracks_app, name="tracks") @artists_app.command("list") def artists_list(): """Lister tous les artistes""" res = tools.tool_list_artists() print(json.dumps(res, ensure_ascii=False, indent=2)) @artists_app.command("get") def artists_get(id: int = typer.Option(..., help="Artist ID")): res = tools.tool_get_artist(id) print(json.dumps(res, ensure_ascii=False, indent=2)) @artists_app.command("create") def artists_create(data: str = typer.Option(..., help="JSON payload or @path to file")): payload = _load_data(data) res = tools.tool_create_artist(payload) print(json.dumps(res, ensure_ascii=False, indent=2)) @artists_app.command("update") def artists_update(id: int = typer.Option(...), data: str = typer.Option(...)): payload = _load_data(data) res = tools.tool_update_artist(id, payload) print(json.dumps(res, ensure_ascii=False, indent=2)) @artists_app.command("delete") def artists_delete(id: int = typer.Option(...)): res = tools.tool_delete_artist(id) print(json.dumps(res, ensure_ascii=False, indent=2)) # Albums @albums_app.command("list") def albums_list(artist_id: int = typer.Option(..., help="Artist ID")): res = tools.tool_list_albums_by_artist(artist_id) print(json.dumps(res, ensure_ascii=False, indent=2)) @albums_app.command("get") def albums_get(id: int = typer.Option(...)): res = tools.tool_get_album(id) print(json.dumps(res, ensure_ascii=False, indent=2)) @albums_app.command("create") def albums_create(data: str = typer.Option(...)): payload = _load_data(data) res = tools.tool_create_album(payload) print(json.dumps(res, ensure_ascii=False, indent=2)) @albums_app.command("update") def albums_update(id: int = typer.Option(...), data: str = typer.Option(...)): payload = _load_data(data) res = tools.tool_update_album(id, payload) print(json.dumps(res, ensure_ascii=False, indent=2)) @albums_app.command("delete") def albums_delete(id: int = typer.Option(...)): res = tools.tool_delete_album(id) print(json.dumps(res, ensure_ascii=False, indent=2)) # Tracks @tracks_app.command("list") def tracks_list(album_id: int = typer.Option(..., help="Album/Release ID")): res = tools.tool_list_tracks_by_album(album_id) print(json.dumps(res, ensure_ascii=False, indent=2)) @tracks_app.command("get") def tracks_get(id: int = typer.Option(...)): res = tools.tool_get_track(id) print(json.dumps(res, ensure_ascii=False, indent=2)) @tracks_app.command("create") def tracks_create(data: str = typer.Option(...)): payload = _load_data(data) res = tools.tool_create_track(payload) print(json.dumps(res, ensure_ascii=False, indent=2)) @tracks_app.command("update") def tracks_update(id: int = typer.Option(...), data: str = typer.Option(...)): payload = _load_data(data) res = tools.tool_update_track(id, payload) print(json.dumps(res, ensure_ascii=False, indent=2)) @tracks_app.command("delete") def tracks_delete(id: int = typer.Option(...)): res = tools.tool_delete_track(id) print(json.dumps(res, ensure_ascii=False, indent=2)) def _load_data(data: str): # support @file.json or raw JSON string if data.startswith("@"): path = data[1:] with open(path, "r", encoding="utf-8") as f: return json.load(f) try: return json.loads(data) except Exception: typer.echo("Invalid JSON payload", err=True) raise typer.Exit(code=1) if __name__ == "__main__": app()

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/axelterrier/lidarr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server