lidarr-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lidarr-mcp Show me my download queue."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-*.whlThis 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-mcpFrom source
uv sync
cp .env.example .env # fill in LIDARR_URL and LIDARR_API_KEYclaude mcp add lidarr \
--env LIDARR_URL=http://your-lidarr-host:8686 \
--env LIDARR_API_KEY=<key> \
-- uv run --directory /path/to/lidarr-mcp lidarr-mcpConfig
Env var | Required | Default |
| yes | - |
| yes* | none (no |
* 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 |
| 26 | reads + writes |
| 26 | reads + writes |
| 25 | reads + writes |
| 23 | reads + writes |
| 23 | reads + writes |
| 18 | reads + writes |
| 18 | reads + writes |
| 16 | reads + writes |
| 11 | reads + writes |
| 10 | reads + writes |
| 9 | reads + writes |
| 7 | reads + writes |
| 5 | reads + writes |
| 4 | read-only |
| 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 commandsCommand | Does |
|
|
| Offline tests - one per endpoint, mocked HTTP |
| Tests against the live instance (needs |
| Build wheel + sdist into |
| Bump the version in |
| 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 toolslidarr_calendarARead-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_release_searchA
lidarr release search operations on Lidarr. Pass operation and an arguments dict matching that operation's parameters.
lidarr_download_release(body={}) — Download a chosen release (body is a ReleaseResource). WRITE: this modifies your Lidarr instance.
lidarr_get_parse(title=None) — Parse a release title into artist/album/track/quality. Query params: title.
lidarr_list_release(album_id=None, artist_id=None) — List release search results for an album (for manual download). Query params: album_id.
lidarr_push_release(body={}) — Push a release URL/torrent to the download client. WRITE: this modifies your Lidarr instance.
lidarr_search(term=None) — Search across artists, albums, and tracks by term. Query params: term.
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_wantedARead-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
Scored across 15 tools
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.
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.
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.
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
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for Producer/Riffusion AI music generation
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA Model Context Protocol server that exposes Sonarr, Radarr, Lidarr, and Jellyfin to any MCP client through a curated tool layer for LLM consumption.31 PyPIMIT
- AlicenseBqualityDmaintenanceMCP server that provides LLM tools to interact with Lyrion Music Server (LMS), enabling player control, playback management, playlist operations, and music library search.5521 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables local LLMs to manage a home media stack including Radarr, Sonarr, Prowlarr, and others.MIT

profilarr-mcpofficial
AlicenseAqualityCmaintenanceMCP 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.20MIT