Skip to main content
Glama

lidarr-mcp

Part of the arr-mcps collection. MCP server exposing Lidarr's v1 REST API (OpenAPI 3.0.4) as tools, so an LLM can read and manage a Lidarr instance: artists, albums, tracks, track files, the download queue, wanted/missing, history, indexers, import lists, metadata profiles, custom formats, tags, commands, system status, and more. Full surface — reads and writes, with destructive tools flagged.

Built with FastMCP.

Getting an API key

Generate one in Lidarr Settings > General > Security. Auth is the X-Api-Key header.

Related MCP server: lms-mcp

Install

Download a wheel from the latest release and install it as a uv tool (no repo checkout needed):

uv tool install lidarr_mcp-*.whl

This puts a lidarr-mcp command on your PATH. Register it with Claude Code:

claude mcp add lidarr \
  --env LIDARR_URL=http://your-lidarr-host:8686 \
  --env LIDARR_API_KEY=<key> \
  -- lidarr-mcp

From source

uv sync
cp .env.example .env   # fill in LIDARR_URL and LIDARR_API_KEY
claude mcp add lidarr \
  --env LIDARR_URL=http://your-lidarr-host:8686 \
  --env LIDARR_API_KEY=<key> \
  -- uv run --directory /path/to/lidarr-mcp lidarr-mcp

Config

Env var

Required

Default

LIDARR_URL

yes

-

LIDARR_API_KEY

yes*

none (no X-Api-Key header sent if unset)

* Every API endpoint requires auth; practically you must set it, but the server still starts without one so errors surface from the API rather than at startup.

Tools

15 resource-scoped tools, each covering multiple Lidarr v1 endpoints (223 total) via an operation parameter. Call a tool with operation set to one of its listed operations and an arguments dict matching that operation's parameters — the tool's own description (visible to your MCP client) lists every operation, its signature, and a one-line doc. This keeps the full REST surface available while costing a fraction of the context budget of registering all 223 endpoints as separate tools.

Tool

Operations

Kind

lidarr_media_library

26

reads + writes

lidarr_profiles_formats

26

reads + writes

lidarr_config

25

reads + writes

lidarr_system_commands

23

reads + writes

lidarr_indexers

23

reads + writes

lidarr_notifications_metadata

18

reads + writes

lidarr_tags

18

reads + writes

lidarr_import_lists

16

reads + writes

lidarr_download_clients

11

reads + writes

lidarr_storage

10

reads + writes

lidarr_queue

9

reads + writes

lidarr_history_blocklist

7

reads + writes

lidarr_release_search

5

reads + writes

lidarr_wanted

4

read-only

lidarr_calendar

2

read-only

Example: lidarr_queue(operation="lidarr_delete_queue", arguments={"id": 42}). Endpoint-level naming (lidarr_<verb>_<resource>) is preserved as the operation value, so the full endpoint list is still discoverable from each group tool's description at runtime.

Development

make help  # list all commands

Command

Does

make sync

uv sync

make test

Offline tests - one per endpoint, mocked HTTP

make test-integration

Tests against the live instance (needs LIDARR_URL/LIDARR_API_KEY)

make build

Build wheel + sdist into dist/

make bump-patch / bump-minor / bump-major

Bump the version in pyproject.toml + uv.lock

make clean

Remove build artifacts

The release workflow (.github/workflows/release.yml) builds and publishes to Releases whenever a v* tag is pushed - so the usual flow is make bump-patch, commit, then tag and push.

The integration suite is read-only by default (GET endpoints only). Set LIDARR_WRITE_TESTS=1 to also exercise POST/PUT/DELETE against a scratch tag (created, updated, then deleted). Never run write tests against a production library.

Available Tools

15 tools
lidarr_calendarA
Read-only

lidarr calendar operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_get_calendar(id) — Fetch a single calendar entry (album) by id.

  • lidarr_list_calendar(start=None, end=None, unmonitored=False, include_artist=False, tags=None) — List albums releasing in a date range. Query params: start, end.

Inputs: operation (required), arguments. Returns: result

lidarr_configA

lidarr config operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_get_config_downloadclient() — Get download client global config.

  • lidarr_get_config_downloadclient_by_id(id) — Get download client global config by id.

  • lidarr_get_config_host() — Get host/global config (port, url base, auth, logging).

  • lidarr_get_config_host_by_id(id) — Get host config by id.

  • lidarr_get_config_indexer() — Get indexer global config (retention, priority, rss sync).

  • lidarr_get_config_indexer_by_id(id) — Get indexer config by id.

  • lidarr_get_config_mediamanagement() — Get media management config (root folder perms, recycle bin, file date).

  • lidarr_get_config_mediamanagement_by_id(id) — Get media management config by id.

  • lidarr_get_config_metadataprovider() — Get metadata provider config (MusicBrainz, rate limits).

  • lidarr_get_config_metadataprovider_by_id(id) — Get metadata provider config by id.

  • lidarr_get_config_naming() — Get track/album naming config.

  • lidarr_get_config_naming_by_id(id) — Get naming config by id.

  • lidarr_get_config_ui() — Get UI config (calendar, dates, theme).

  • lidarr_get_config_ui_by_id(id) — Get UI config by id.

  • lidarr_list_config_naming_examples(rename_tracks=False, replace_illegal_characters=False, colon_replacement_format=None, standard_track_format=None, multi_disc_track_format=None, artist_folder_format=None, include_artist_name=False, include_album_title=False, include_quality=False, replace_spaces=False, separator=None, number_style=None, id=None, resource_name=None) — Render naming examples based on the current config.

  • lidarr_list_filesystem(path=None, include_files=False, allow_folders_without_trailing_slashes=False) — List directories and files for a path. Query params: path, include_files, allow_folders_without_trailing_slashes.

  • lidarr_list_filesystem_mediafiles(path=None) — List media files in a path. Query params: path.

  • lidarr_list_filesystem_type(path=None) — Get the filesystem entity type for a path. Query params: path.

  • lidarr_update_config_downloadclient(id, body={}) — Update download client global config. WRITE: this modifies your Lidarr instance.

  • lidarr_update_config_host(id, body={}) — Update host config. WRITE: this modifies your Lidarr instance.

  • lidarr_update_config_indexer(id, body={}) — Update indexer config. WRITE: this modifies your Lidarr instance.

  • lidarr_update_config_mediamanagement(id, body={}) — Update media management config. WRITE: this modifies your Lidarr instance.

  • lidarr_update_config_metadataprovider(id, body={}) — Update metadata provider config. WRITE: this modifies your Lidarr instance.

  • lidarr_update_config_naming(id, body={}) — Update naming config. WRITE: this modifies your Lidarr instance.

  • lidarr_update_config_ui(id, body={}) — Update UI config. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_download_clientsA

lidarr download clients operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_action_downloadclient(name, body={}) — Run a download client provider-specific action. WRITE: this modifies your Lidarr instance.

  • lidarr_bulk_delete_downloadclient(body={}) — Bulk delete download clients (body carries ids). DESTRUCTIVE: this deletes data.

  • lidarr_bulk_update_downloadclient(body={}) — Bulk update download clients (body is a list of resources). WRITE: this modifies your Lidarr instance.

  • lidarr_create_downloadclient(force_save=False, body={}) — Add a download client (body is a DownloadClientResource). WRITE: this modifies your Lidarr instance.

  • lidarr_delete_downloadclient(id) — Delete a download client. DESTRUCTIVE: this deletes data.

  • lidarr_get_downloadclient(id) — Fetch a single download client by id.

  • lidarr_get_downloadclient_schema() — Return the download client schema (available implementations).

  • lidarr_list_downloadclient() — List download clients.

  • lidarr_test_all_downloadclient() — Test all download clients. WRITE: this modifies your Lidarr instance.

  • lidarr_test_downloadclient(force_test=False, body={}) — Test a download client configuration (body, without saving). WRITE: this modifies your Lidarr instance.

  • lidarr_update_downloadclient(id, force_save=False, body={}) — Update a download client. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_history_blocklistA

lidarr history blocklist operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_bulk_delete_blocklist(body={}) — Remove multiple releases from the blocklist (body carries blocklist ids). DESTRUCTIVE: this deletes data.

  • lidarr_delete_blocklist(id) — Remove a release from the blocklist. DESTRUCTIVE: this deletes data.

  • lidarr_list_blocklist(page=1, page_size=10, sort_key='', sort_direction='') — List blocklisted releases. Query params: page, page_size, sort_key, sort_direction.

  • lidarr_list_history(page=1, page_size=10, sort_key='', sort_direction='', include_artist=False, include_album=False, include_track=False, event_type=None, album_id=None, download_id=None, artist_ids=None, quality=None) — Paged history of grabs and imports. Query params: page, page_size, sort_key, sort_direction, include_artist, include_album, include_track, event_type, album_id, download_id, artist_ids, quality.

  • lidarr_list_history_artist(artist_id=None, album_id=None, event_type=None, include_artist=False, include_album=False, include_track=False) — Recent history grouped by artist. Query params: sort_key, page, page_size, include_artist, include_album, include_track.

  • lidarr_list_history_since(date=None, event_type=None, include_artist=False, include_album=False, include_track=False) — History since a date, optionally filtered by artist. Query params: date, artist_id, event_type, include_artist, include_album, include_track.

  • lidarr_mark_history_item_failed(id) — Mark a grabbed history item as failed. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_import_listsA

lidarr import lists operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_action_importlist(name, body={}) — Run an import list provider-specific action. WRITE: this modifies your Lidarr instance.

  • lidarr_bulk_delete_importlist(body={}) — Bulk delete import lists (body carries ids). DESTRUCTIVE: this deletes data.

  • lidarr_bulk_update_importlist(body={}) — Bulk update import lists (body is a list of resources). WRITE: this modifies your Lidarr instance.

  • lidarr_create_importlist(force_save=False, body={}) — Add an import list (body is an ImportListResource). WRITE: this modifies your Lidarr instance.

  • lidarr_create_importlistexclusion(body={}) — Create an import list exclusion. WRITE: this modifies your Lidarr instance.

  • lidarr_delete_importlist(id) — Delete an import list. DESTRUCTIVE: this deletes data.

  • lidarr_delete_importlistexclusion(id) — Delete an import list exclusion. DESTRUCTIVE: this deletes data.

  • lidarr_get_importlist(id) — Fetch a single import list by id.

  • lidarr_get_importlist_schema() — Return the import list schema (available implementations).

  • lidarr_get_importlistexclusion(id) — Fetch a single import list exclusion by id.

  • lidarr_list_importlist() — List import lists.

  • lidarr_list_importlistexclusion() — List import list exclusions.

  • lidarr_test_all_importlist() — Test all import lists. WRITE: this modifies your Lidarr instance.

  • lidarr_test_importlist(force_test=False, body={}) — Test an import list configuration (body, without saving). WRITE: this modifies your Lidarr instance.

  • lidarr_update_importlist(id, force_save=False, body={}) — Update an import list. WRITE: this modifies your Lidarr instance.

  • lidarr_update_importlistexclusion(id, body={}) — Update an import list exclusion. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_indexersA

lidarr indexers operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_action_indexer(name, body={}) — Run an indexer provider-specific action (e.g. search, getCookies). WRITE: this modifies your Lidarr instance.

  • lidarr_bulk_delete_indexer(body={}) — Bulk delete indexers (body carries ids). DESTRUCTIVE: this deletes data.

  • lidarr_bulk_update_indexer(body={}) — Bulk update indexers (body is a list of resources). WRITE: this modifies your Lidarr instance.

  • lidarr_create_delayprofile(body={}) — Create a delay profile. WRITE: this modifies your Lidarr instance.

  • lidarr_create_indexer(force_save=False, body={}) — Add an indexer (body is an IndexerResource). WRITE: this modifies your Lidarr instance.

  • lidarr_create_releaseprofile(body={}) — Create a release profile. WRITE: this modifies your Lidarr instance.

  • lidarr_delete_delayprofile(id) — Delete a delay profile. DESTRUCTIVE: this deletes data.

  • lidarr_delete_indexer(id) — Delete an indexer. DESTRUCTIVE: this deletes data.

  • lidarr_delete_releaseprofile(id) — Delete a release profile. DESTRUCTIVE: this deletes data.

  • lidarr_get_delayprofile(id) — Fetch a single delay profile by id.

  • lidarr_get_indexer(id) — Fetch a single indexer by id.

  • lidarr_get_indexer_schema() — Return the indexer schema (available implementations).

  • lidarr_get_indexerflag() — List indexer flags.

  • lidarr_get_releaseprofile(id) — Fetch a single release profile by id.

  • lidarr_list_delayprofile() — List delay profiles.

  • lidarr_list_indexer() — List indexers.

  • lidarr_list_releaseprofile() — List release profiles (preferred/ignored terms).

  • lidarr_reorder_delayprofile(id, after_id=None) — Reorder delay profiles (move the profile with this id to a new order). Query params: after. WRITE: this modifies your Lidarr instance.

  • lidarr_test_all_indexer() — Test all enabled indexers. WRITE: this modifies your Lidarr instance.

  • lidarr_test_indexer(force_test=False, body={}) — Test an indexer configuration (body, without saving). WRITE: this modifies your Lidarr instance.

  • lidarr_update_delayprofile(id, body={}) — Update a delay profile. WRITE: this modifies your Lidarr instance.

  • lidarr_update_indexer(id, force_save=False, body={}) — Update an indexer. WRITE: this modifies your Lidarr instance.

  • lidarr_update_releaseprofile(id, body={}) — Update a release profile. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_media_libraryA

lidarr media library operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_add_album(body={}) — Add an album to a monitored artist (body is an AlbumResource). WRITE: this modifies your Lidarr instance.

  • lidarr_add_artist(body={}) — Add a new artist from a lookup (body is an ArtistResource). WRITE: this modifies your Lidarr instance.

  • lidarr_bulk_delete_artist(body={}) — Bulk delete artists (body carries artist ids). DESTRUCTIVE: this deletes data.

  • lidarr_bulk_delete_trackfile(body={}) — Bulk delete track files (body carries track file ids). DESTRUCTIVE: this deletes data.

  • lidarr_bulk_edit_trackfile(body={}) — Bulk update track files (body is a list of resources). WRITE: this modifies your Lidarr instance.

  • lidarr_bulk_update_artist(body={}) — Bulk update artists (body is an ArtistEditorResource). WRITE: this modifies your Lidarr instance.

  • lidarr_delete_album(id, delete_files=False, add_import_list_exclusion=False) — Delete an album. DESTRUCTIVE: this deletes data.

  • lidarr_delete_artist(id, delete_files=False, add_import_list_exclusion=False) — Delete an artist, optionally deleting files or adding an import list exclusion. Query params: delete_files, add_import_list_exclusion. DESTRUCTIVE: this deletes data.

  • lidarr_delete_trackfile(id) — Delete a track file. DESTRUCTIVE: this deletes data.

  • lidarr_get_album(id) — Fetch a single album by id.

  • lidarr_get_artist(id) — Fetch a single artist by id.

  • lidarr_get_rename(artist_id=None, album_id=None) — Preview track renames for the given artists/albums. Query params: artist_ids, album_ids.

  • lidarr_get_retag(artist_id=None, album_id=None) — Preview track file metadata retags. Query params: artist_ids, album_ids.

  • lidarr_get_track(id) — Fetch a single track by id.

  • lidarr_get_trackfile(id) — Fetch a single track file by id.

  • lidarr_list_album(artist_id=None, album_ids=None, foreign_album_id=None, include_all_artist_albums=False) — List albums, optionally filtered by artist, album ids, or foreign album id. Query params: artist_id, album_ids, foreign_album_id, include_all_artist_albums.

  • lidarr_list_artist(mb_id=None) — List all artists in the library, optionally filtered by MusicBrainz id. Query params: mb_id.

  • lidarr_list_track(artist_id=None, album_id=None, album_release_id=None, track_ids=None) — List tracks, optionally filtered by artist or album. Query params: artist_id, album_id.

  • lidarr_list_trackfile(artist_id=None, track_file_ids=None, album_id=None, unmapped=False) — List track files, optionally filtered by artist or album. Query params: artist_id, album_id.

  • lidarr_lookup_album(term=None) — Look up albums by term or MusicBrainz id (MBID). Query params: term.

  • lidarr_lookup_artist(term=None) — Look up artists by term or MusicBrainz id (MBID). Query params: term.

  • lidarr_monitor_album(body={}) — Set monitored state on multiple albums (body carries album ids). WRITE: this modifies your Lidarr instance.

  • lidarr_update_album(id, body={}) — Update an album (body is an AlbumResource). WRITE: this modifies your Lidarr instance.

  • lidarr_update_albumstudio(body={}) — Bulk studio operations across selected albums (tag, monitor, scan; body is an AlbumStudioResource). WRITE: this modifies your Lidarr instance.

  • lidarr_update_artist(id, move_files=False, body={}) — Update an artist (body is an ArtistResource). WRITE: this modifies your Lidarr instance.

  • lidarr_update_trackfile(id, body={}) — Update a track file (quality, tags). WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_notifications_metadataA

lidarr notifications metadata operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_action_metadata(name, body={}) — Run a metadata consumer provider-specific action. WRITE: this modifies your Lidarr instance.

  • lidarr_action_notification(name, body={}) — Run a notification provider-specific action. WRITE: this modifies your Lidarr instance.

  • lidarr_create_metadata(force_save=False, body={}) — Add a metadata consumer (body is a MetadataResource). WRITE: this modifies your Lidarr instance.

  • lidarr_create_notification(force_save=False, body={}) — Add a notification (body is a NotificationResource). WRITE: this modifies your Lidarr instance.

  • lidarr_delete_metadata(id) — Delete a metadata consumer. DESTRUCTIVE: this deletes data.

  • lidarr_delete_notification(id) — Delete a notification. DESTRUCTIVE: this deletes data.

  • lidarr_get_metadata(id) — Fetch a single metadata consumer by id.

  • lidarr_get_metadata_schema() — Return the metadata consumer schema (available implementations).

  • lidarr_get_notification(id) — Fetch a single notification by id.

  • lidarr_get_notification_schema() — Return the notification schema (available implementations).

  • lidarr_list_metadata() — List metadata consumers (Kodi, Plex, Emby NFO writers).

  • lidarr_list_notification() — List notifications.

  • lidarr_test_all_metadata() — Test all metadata consumers. WRITE: this modifies your Lidarr instance.

  • lidarr_test_all_notification() — Test all notifications. WRITE: this modifies your Lidarr instance.

  • lidarr_test_metadata(force_test=False, body={}) — Test a metadata consumer configuration (body, without saving). WRITE: this modifies your Lidarr instance.

  • lidarr_test_notification(force_test=False, body={}) — Test a notification configuration (body, without saving). WRITE: this modifies your Lidarr instance.

  • lidarr_update_metadata(id, force_save=False, body={}) — Update a metadata consumer. WRITE: this modifies your Lidarr instance.

  • lidarr_update_notification(id, force_save=False, body={}) — Update a notification. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_profiles_formatsA

lidarr profiles formats operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_bulk_delete_customformat(body={}) — Bulk delete custom formats (body carries custom format ids). DESTRUCTIVE: this deletes data.

  • lidarr_bulk_update_customformat(body={}) — Bulk update custom formats (body is a list of resources). WRITE: this modifies your Lidarr instance.

  • lidarr_create_customformat(body={}) — Create a custom format. WRITE: this modifies your Lidarr instance.

  • lidarr_create_metadataprofile(body={}) — Create a metadata profile. WRITE: this modifies your Lidarr instance.

  • lidarr_create_qualityprofile(body={}) — Create a quality profile. WRITE: this modifies your Lidarr instance.

  • lidarr_delete_customformat(id) — Delete a custom format. DESTRUCTIVE: this deletes data.

  • lidarr_delete_metadataprofile(id) — Delete a metadata profile. DESTRUCTIVE: this deletes data.

  • lidarr_delete_qualityprofile(id) — Delete a quality profile. DESTRUCTIVE: this deletes data.

  • lidarr_get_customformat(id) — Fetch a single custom format by id.

  • lidarr_get_customformat_schema() — Return the custom format schema (available specifications).

  • lidarr_get_language(id) — Fetch a single language by id.

  • lidarr_get_metadataprofile(id) — Fetch a single metadata profile by id.

  • lidarr_get_metadataprofile_schema() — Return the metadata profile schema (available primary types/release statuses).

  • lidarr_get_qualitydefinition(id) — Fetch a single quality definition by id.

  • lidarr_get_qualityprofile(id) — Fetch a single quality profile by id.

  • lidarr_get_qualityprofile_schema() — Return the quality profile creation schema.

  • lidarr_list_customformat() — List custom formats.

  • lidarr_list_language() — List all languages.

  • lidarr_list_metadataprofile() — List metadata profiles (MusicBrainz release-status/type filters).

  • lidarr_list_qualitydefinition() — List quality definitions (per quality: title, weight, min/max size).

  • lidarr_list_qualityprofile() — List quality profiles.

  • lidarr_update_customformat(id, body={}) — Update a custom format. WRITE: this modifies your Lidarr instance.

  • lidarr_update_metadataprofile(id, body={}) — Update a metadata profile. WRITE: this modifies your Lidarr instance.

  • lidarr_update_quality_definitions(body=[]) — Bulk update quality definitions (body is a list of resources). WRITE: this modifies your Lidarr instance.

  • lidarr_update_qualitydefinition(id, body={}) — Update a single quality definition. WRITE: this modifies your Lidarr instance.

  • lidarr_update_qualityprofile(id, body={}) — Update a quality profile. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_queueA

lidarr queue operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_bulk_delete_queue(remove_from_client=False, blocklist=False, skip_redownload=False, change_category=False, body={}) — Bulk remove queue items (body carries queue item ids). Query params: blocklist, skip_redownload. DESTRUCTIVE: this deletes data.

  • lidarr_commit_manual_import(body=[]) — Submit manual import decisions (body is a list of manual import resources). WRITE: this modifies your Lidarr instance.

  • lidarr_delete_queue(id, remove_from_client=False, blocklist=False, skip_redownload=False, change_category=False) — Remove a queue item, optionally adding it to the blocklist. Query params: blocklist, skip_redownload. DESTRUCTIVE: this deletes data.

  • lidarr_get_queue_details(artist_id=None, album_ids=None, include_artist=False, include_album=False) — Full download queue with all detail, unpaged.

  • lidarr_get_queue_status() — Queue summary and status counts.

  • lidarr_grab_queue_bulk(body={}) — Force-grab multiple queued releases (body carries queue item ids). WRITE: this modifies your Lidarr instance.

  • lidarr_grab_queue_item(id) — Force-grab a queued release. WRITE: this modifies your Lidarr instance.

  • lidarr_list_manualimport(folder=None, download_id=None, artist_id=None, filter_existing_files=False, replace_existing_files=False) — List files available for manual import from a folder. Query params: folder, download_id, artist_id, filter_existing_files.

  • lidarr_list_queue(page=1, page_size=10, sort_key='', sort_direction='', include_unknown_artist_items=False, include_artist=False, include_album=False, artist_ids=None, protocol=None, quality=None) — Paged download queue. Query params: page, page_size, sort_key, sort_direction, include_unknown_artist_items, include_artist, include_album, artist_ids, protocol, quality.

Inputs: operation (required), arguments. Returns: result

lidarr_storageA

lidarr storage operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_create_remotepathmapping(body={}) — Create a remote path mapping. WRITE: this modifies your Lidarr instance.

  • lidarr_create_rootfolder(body={}) — Add a root folder. WRITE: this modifies your Lidarr instance.

  • lidarr_delete_remotepathmapping(id) — Delete a remote path mapping. DESTRUCTIVE: this deletes data.

  • lidarr_delete_rootfolder(id) — Delete a root folder (does not delete library files). DESTRUCTIVE: this deletes data.

  • lidarr_get_remotepathmapping(id) — Fetch a single remote path mapping by id.

  • lidarr_get_rootfolder(id) — Fetch a single root folder by id.

  • lidarr_list_remotepathmapping() — List remote path mappings.

  • lidarr_list_rootfolder() — List root folders (with free space and default profile ids).

  • lidarr_update_remotepathmapping(id, body={}) — Update a remote path mapping. WRITE: this modifies your Lidarr instance.

  • lidarr_update_rootfolder(id, body={}) — Update a root folder. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_system_commandsA

lidarr system commands operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_delete_command(id) — Cancel a running command. DESTRUCTIVE: this deletes data.

  • lidarr_delete_system_backup(id) — Delete a system backup. DESTRUCTIVE: this deletes data.

  • lidarr_get_command(id) — Fetch the status of a single command by id.

  • lidarr_get_diskspace() — Get disk free space for all root folders.

  • lidarr_get_health() — List health checks (warnings/errors).

  • lidarr_get_system_routes() — Get all registered API routes.

  • lidarr_get_system_routes_duplicate() — Get duplicate API routes.

  • lidarr_get_system_status() — Get server status (version, app data, os).

  • lidarr_get_system_task() — List scheduler tasks.

  • lidarr_get_system_task_by_id(id) — Fetch a single scheduler task by id.

  • lidarr_list_command() — List running and recent commands.

  • lidarr_list_localization() — Get the localization strings dictionary.

  • lidarr_list_log(page=1, page_size=10, sort_key='', sort_direction='', level=None) — Paged log entries, filtered by level. Query params: page, page_size, sort_key, sort_direction, level.

  • lidarr_list_log_file() — List available log files.

  • lidarr_list_log_file_update() — List available update log files.

  • lidarr_list_system_backup() — List system backups.

  • lidarr_list_update() — List available application updates.

  • lidarr_ping() — Ping the server to verify it is reachable and authenticated.

  • lidarr_restart_lidarr() — Restart Lidarr. WRITE: this modifies your Lidarr instance.

  • lidarr_restore_backup(id) — Restore from an existing backup. WRITE: this modifies your Lidarr instance.

  • lidarr_restore_backup_upload() — Restore from an uploaded backup zip. WRITE: this modifies your Lidarr instance.

  • lidarr_run_command(body={}) — Run a Lidarr command (body is a CommandResource with a name, e.g. RefreshArtist, RescanArtist, DownloadedAlbumsScan, RssSync, ApplicationUpdate). WRITE: this modifies your Lidarr instance.

  • lidarr_shutdown_lidarr() — Shut down Lidarr. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_tagsA

lidarr tags operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_create_autotagging(body={}) — Create auto tagging rules (body is an AutoTaggingResource). WRITE: this modifies your Lidarr instance.

  • lidarr_create_customfilter(body={}) — Create a custom filter. WRITE: this modifies your Lidarr instance.

  • lidarr_create_tag(body={}) — Create a tag. WRITE: this modifies your Lidarr instance.

  • lidarr_delete_autotagging(id) — Delete auto tagging rules. DESTRUCTIVE: this deletes data.

  • lidarr_delete_customfilter(id) — Delete a custom filter. DESTRUCTIVE: this deletes data.

  • lidarr_delete_tag(id) — Delete a tag. DESTRUCTIVE: this deletes data.

  • lidarr_get_autotagging(id) — Fetch a single auto tagging rule by id.

  • lidarr_get_autotagging_schema() — Return the auto tagging rules schema (available fields/options).

  • lidarr_get_customfilter(id) — Fetch a single custom filter by id.

  • lidarr_get_tag(id) — Fetch a single tag by id.

  • lidarr_get_tag_detail(id) — Tag usage summary for a single tag.

  • lidarr_list_autotagging() — List auto tagging rules.

  • lidarr_list_customfilter() — List saved custom filters.

  • lidarr_list_tag() — List tags.

  • lidarr_list_tag_detail() — Tag usage summary across all entities.

  • lidarr_update_autotagging(id, body={}) — Update auto tagging rules. WRITE: this modifies your Lidarr instance.

  • lidarr_update_customfilter(id, body={}) — Update a custom filter. WRITE: this modifies your Lidarr instance.

  • lidarr_update_tag(id, body={}) — Rename a tag. WRITE: this modifies your Lidarr instance.

Inputs: operation (required), arguments. Returns: result

lidarr_wantedA
Read-only

lidarr wanted operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.

  • lidarr_get_wanted_cutoff(id) — Fetch a single cutoff-unmet album by id.

  • lidarr_get_wanted_missing(id) — Fetch a single missing album by id.

  • lidarr_list_wanted_cutoff(page=1, page_size=10, sort_key='', sort_direction='', include_artist=False, monitored=False) — Cutoff-unmet albums page. Query params: page, page_size, sort_key, sort_direction, include_artist, monitored.

  • lidarr_list_wanted_missing(page=1, page_size=10, sort_key='', sort_direction='', include_artist=False, monitored=False) — Missing albums page. Query params: page, page_size, sort_key, sort_direction, include_artist, monitored.

Inputs: operation (required), arguments. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 15 tools

    Disambiguation2/5

    While many tools clearly name their resource and action, the presence of generic dispatcher tools (e.g., lidarr_media_library, lidarr_release_search) that accept arbitrary operation strings creates significant overlap with the specific tools. The many 'action_' tools for providers are also underspecified, making it hard for an agent to know what to pass.

    Naming Consistency3/5

    The naming mostly follows a consistent lidarr_verb_noun pattern, with clear verbs like list, get, create, update, delete. However, the dispatcher tools and some unique operations (reorder, action, test_all) break the pattern, and there are occasional oddities like get_system_routes_duplicate.

    Tool Count1/5

    The server exposes over 200 tools (despite the stated count of 15), which is far too many for an agent to navigate effectively. This violates the well-scoped principle and makes the set difficult to use coherently.

    Completeness5/5

    The tool set provides broad coverage of Lidarr's functionality—from artist and album management to download queue, history, configuration, and system operations. CRUD operations are present for nearly every resource, and there are few obvious missing operations that would prevent an agent from accomplishing tasks.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      A
      maintenance
      A Model Context Protocol server that exposes Sonarr, Radarr, Lidarr, and Jellyfin to any MCP client through a curated tool layer for LLM consumption.
      31 PyPI
      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
      D
      maintenance
      MCP server that enables local LLMs to manage a home media stack including Radarr, Sonarr, Prowlarr, and others.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      MCP server exposing Profilarr's v1 REST API as tools, enabling an LLM to inspect and manage linked databases, connected Radarr/Sonarr instances, backups, jobs, announcements, and system status.
      20
      MIT