servarr-analytics-mcp
This MCP server provides an interface to Sonarr, Radarr, and Prowlarr for AI clients, offering structured data access, health monitoring, library analytics, configuration management, change simulations, and guarded write operations. Key capabilities include:
Health & System Info: Check overall health, system status, API versions, connectivity, and specific health messages for each app.
Configuration Reads: Retrieve quality profiles, custom formats, naming/media management settings, download clients, indexers, notifications, and other app configurations.
Library Data: List movies/series with their files, identify missing or cutoff-unmet items for both Radarr and Sonarr.
History & Queue: Access detailed grab/import/failed/deleted history, queue status, and blocklist entries.
Prowlarr Management: List, test, and retrieve stats/history for indexers; manage application sync targets.
Analytics: Analyze storage usage, codec/resolution/HDR/audio distributions, quality profile usage, custom format effectiveness, upgrade candidates, indexer performance (downloads, grabs, success rates), and growth trends.
Simulations: Dry-run the impact of changes to quality profiles, custom formats, cutoffs, scores, storage savings, upgrades, and codec strategies before applying them.
Backup & Diffusion: Create, list, and restore backups; generate diffs; preview or apply patches.
Write Operations: Mutate configurations with explicit confirmation (
confirm: true) and oftendryRun: falserequirements. Includes updating profiles, formats, scores, and applying patches.Reports: Generate focused reports on quality, storage, and tracker performance.
Pagination & Filtering: Most read tools support pagination (
page,pageSize,cursor), date ranges, and field selection for efficient data retrieval and continuation of large queries.
Provides tools for managing movies, including health checks, configuration reads, library analytics, simulations, backups, diffs, reports, and guarded write/bulk operations.
Provides tools for managing TV series, including health checks, configuration reads, library analytics, simulations, backups, diffs, reports, and guarded write/bulk operations.
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., "@servarr-analytics-mcp run health check on all apps"
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.
Servarr Analytics MCP
Servarr Analytics MCP is a Model Context Protocol server for Sonarr, Radarr, and Prowlarr. It gives AI clients a structured data interface for health checks, configuration reads, library analytics, simulations, backups, diffs, reports, and guarded write/bulk operations.
The MCP retrieves and aggregates data. The AI client analyzes the returned structured data and explains recommendations.
AI-assisted project
Hi, human here. I designed the architecture and used AI to implement this project. While I actively use it in my own homelab, I cannot provide any warranties or guarantees.
This software has not undergone a security audit and is not intended for direct exposure to public networks. Use it at your own risk, especially in security-sensitive or internet-facing environments.
Related MCP server: MCParr Server
Quick Start With npx
SONARR_URL=http://localhost:8989 \
SONARR_API_KEY=your-sonarr-api-key \
RADARR_URL=http://localhost:7878 \
RADARR_API_KEY=your-radarr-api-key \
PROWLARR_URL=http://localhost:9696 \
PROWLARR_API_KEY=your-prowlarr-api-key \
npx -y servarr-analytics-mcpAll diagnostics are written to stderr. stdout is reserved for MCP stdio protocol traffic.
Docker
docker run --rm -i \
-e SONARR_URL=http://host.docker.internal:8989 \
-e SONARR_API_KEY=your-sonarr-api-key \
-e RADARR_URL=http://host.docker.internal:7878 \
-e RADARR_API_KEY=your-radarr-api-key \
-e PROWLARR_URL=http://host.docker.internal:9696 \
-e PROWLARR_API_KEY=your-prowlarr-api-key \
ghcr.io/OWNER/servarr-analytics-mcp:latestReplace OWNER with the GitHub owner that publishes the image.
Docker Compose
services:
servarr-analytics-mcp:
image: ghcr.io/OWNER/servarr-analytics-mcp:latest
stdin_open: true
environment:
SONARR_URL: http://sonarr:8989
SONARR_API_KEY: your-sonarr-api-key
RADARR_URL: http://radarr:7878
RADARR_API_KEY: your-radarr-api-key
PROWLARR_URL: http://prowlarr:9696
PROWLARR_API_KEY: your-prowlarr-api-key
volumes:
- servarr-analytics-backups:/app/.servarr-analytics-backups
volumes:
servarr-analytics-backups:MCP JSON Config
{
"mcpServers": {
"servarr-analytics": {
"command": "npx",
"args": ["-y", "servarr-analytics-mcp"],
"env": {
"SONARR_URL": "http://localhost:8989",
"SONARR_API_KEY": "your-sonarr-api-key",
"RADARR_URL": "http://localhost:7878",
"RADARR_API_KEY": "your-radarr-api-key",
"PROWLARR_URL": "http://localhost:9696",
"PROWLARR_API_KEY": "your-prowlarr-api-key"
}
}
}
}Codex TOML Config
[mcp_servers.servarr-analytics]
command = "npx"
args = ["-y", "servarr-analytics-mcp"]
[mcp_servers.servarr-analytics.env]
SONARR_URL = "http://localhost:8989"
SONARR_API_KEY = "your-sonarr-api-key"
RADARR_URL = "http://localhost:7878"
RADARR_API_KEY = "your-radarr-api-key"
PROWLARR_URL = "http://localhost:9696"
PROWLARR_API_KEY = "your-prowlarr-api-key"Configuration
Configure only the apps you want to expose. Each configured app requires both URL and API key.
Variable | Required | Description |
| optional | Sonarr base URL. |
| optional | Sonarr API key. |
| optional | Radarr base URL. |
| optional | Radarr API key. |
| optional | Prowlarr base URL. |
| optional | Prowlarr API key. |
| optional | API base path. Defaults to |
| optional | API base path. Defaults to |
| optional | API base path. Defaults to |
| optional | HTTP timeout. Defaults to |
| optional | Backup directory. Defaults to |
Do not commit API keys or real local URLs to a public repository.
Tool Coverage
The server registers all tools from the initial architecture plan:
Health:
health_check_all,get_system_status,get_app_config,test_connection,get_api_versionConfiguration: quality profiles, definitions, custom formats, language/delay profiles, tags, root folders, download clients, indexers, notifications, metadata profiles, naming, media management, disk, health
Library: Radarr movies/files/missing/cutoff unmet; Sonarr series/episodes/files/missing/cutoff unmet
History and queue: history, grab/import/failed/deleted history, queue, queue details, blocklist
Prowlarr: indexers, indexer status/stats/history/tests, download clients, applications
Analytics: library, quality, codec, resolution, HDR, audio, profile, custom format, storage, tracker/indexer analytics
Simulation: quality profile, custom format, cutoff, score, storage, upgrade, and codec strategy simulations
Backup and diff: create/list/restore backup, generate diff, validate patch, dry-run patch, apply patch
Write and bulk operations: quality profiles, custom formats, scores, quality definitions, delay profile, naming, media management, restrictions
Reports: quality, storage, tracker, failed downloads, monthly statistics, recommendations
Some analytics and simulations are best-effort aggregations over the Servarr API data available to the configured app.
Large Result Controls
Most read and analytics tools accept:
detail:summary,normal,verbose, orrawpage,pageSize,limitfrom,tosampleRecordsfieldsgroupBycursor
Defaults protect the client context window:
default
pageSize:100max
pageSize:500raw responses are capped
aggregation is performed inside the MCP where possible
Write Safety
Mutating tools require confirm: true. Restore, patch application, and bulk score updates also require dryRun: false.
Restore and patch operations are constrained by a safe endpoint allowlist. Collection updates such as quality profiles, custom formats, download clients, indexers, notifications, tags, and root folders must target a specific item id, for example qualityprofile/3. Singleton config endpoints such as config/naming and config/mediamanagement may be updated directly. A real backup restore also requires a specific app target.
bulk_update_scores targets one explicit quality profile through body.qualityProfileId and one or more explicit custom format ids in body.updates. Without dryRun: false, it returns the planned score changes and does not call Servarr.
Examples:
{
"app": "radarr",
"id": 3,
"body": {
"name": "HD-1080p"
},
"confirm": true
}Patch application:
{
"dryRun": false,
"confirm": true,
"operations": [
{
"app": "sonarr",
"method": "PUT",
"path": "qualityprofile/3",
"body": {
"id": 3,
"name": "HD-1080p"
}
}
]
}Always create a backup before write, restore, or bulk operations.
Development
npm ci
npm run lint
npm test
npm run buildBuild output is written to dist/. The executable is dist/index.js.
Release
Publishing is handled by GitHub Actions when a GitHub Release is published.
npm publishes
servarr-analytics-mcpthrough npm trusted publishing/OIDC.GHCR publishes
ghcr.io/<owner>/servarr-analytics-mcp.The release tag must match
package.json, for examplev0.1.2.The workflow runs lint, tests, and build before publishing.
Before the first release:
Create the public GitHub repository.
Replace
OWNERplaceholders in docs/examples if desired.Verify the npm package name is available.
Configure npm trusted publishing for
.github/workflows/release.yml.Publish a GitHub Release tagged
v0.1.2.
Available Tools
123 toolsapply_patchApply PatchB
Apply patch operations. Requires confirm true and dryRun false.
Inputs: operations (required), dryRun, confirm.
audio_distributionAudio DistributionC
Count library items by audio codec.
Inputs: to, app, from, page, +7 more.
average_release_sizeAverage Release SizeD
Average release size from history data.
Inputs: to, app, from, page, +7 more.
bulk_update_scoresBulk Update ScoresC
Bulk update custom format scores from body.updates. Requires confirm=true and dryRun=false.
Inputs: app (required), body (required), confirm (required), id, +11 more.
clone_quality_profileClone Quality ProfileC
Clone a quality profile using the provided body. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
codec_by_indexerCodec By IndexerD
Group history codec hints by indexer when available.
Inputs: to, app, from, page, +7 more.
codec_distributionCodec DistributionC
Count library items by video codec.
Inputs: to, app, from, page, +7 more.
conflicting_custom_formatsConflicting Custom FormatsC
Find custom formats sharing equivalent specification counts and names.
Inputs: to, app, from, page, +7 more.
continue_queryContinue QueryA
Continue a paged query from a cursor produced by a previous tool response.
Inputs: cursor (required).
create_backupCreate BackupC
Create a local JSON backup of Servarr configuration endpoints.
Inputs: app.
create_quality_profileCreate Quality ProfileC
Create a quality profile. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
custom_format_hitsCustom Format HitsC
Count matched custom formats in library files.
Inputs: to, app, from, page, +7 more.
custom_format_missesCustom Format MissesC
List configured custom formats not seen in library files.
Inputs: to, app, from, page, +7 more.
cutoff_unmet_by_profileCutoff Unmet By ProfileC
Group cutoff-unmet items by quality profile when available.
Inputs: to, app, from, page, +7 more.
delete_quality_profileDelete Quality ProfileA
Delete a quality profile by id. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
download_volume_by_indexerDownload Volume By IndexerC
Sum history download volume by indexer.
Inputs: to, app, from, page, +7 more.
dry_run_patchDry Run PatchC
Show patch operations that would be applied.
Inputs: operations (required), dryRun, confirm.
duplicate_custom_formatsDuplicate Custom FormatsC
Find custom formats with duplicate names.
Inputs: to, app, from, page, +7 more.
duplicate_grabsDuplicate GrabsC
Find repeated grabs with the same download id or title.
Inputs: to, app, from, page, +7 more.
estimated_storage_savingsEstimated Storage SavingsC
Estimate savings candidates from large non-HEVC files.
Inputs: to, app, from, page, +7 more.
failed_downloads_by_indexerFailed Downloads By IndexerC
Count failed downloads by indexer.
Inputs: to, app, from, page, +7 more.
generate_diffGenerate DiffC
Compare a backup against current Servarr configuration.
Inputs: backupFile (required), app.
get_api_versionGet API VersionC
Return version details from system status for one configured app.
Inputs: app (required), to, from, page, +7 more.
get_app_configGet App ConfigC
Return host-level configuration for one configured app.
Inputs: app (required), to, from, page, +7 more.
get_applicationsGet Prowlarr ApplicationsC
List Prowlarr application sync targets.
Inputs: to, from, page, limit, +6 more.
get_blocklistGet BlocklistC
Return blocklist records.
Inputs: app (required), to, from, page, +7 more.
get_custom_formatsGet Custom FormatsC
List custom formats.
Inputs: app (required), to, from, page, +7 more.
get_delay_profilesGet Delay ProfilesC
List delay profiles.
Inputs: app (required), to, from, page, +7 more.
get_deleted_historyGet Deleted HistoryD
Return deleted history records.
Inputs: app (required), to, from, page, +7 more.
get_disk_spaceGet Disk SpaceD
Return disk space information.
Inputs: app (required), to, from, page, +7 more.
get_download_clientsGet Download ClientsC
List download clients.
Inputs: app (required), to, from, page, +7 more.
get_failed_historyGet Failed HistoryD
Return failed history records.
Inputs: app (required), to, from, page, +7 more.
get_grab_historyGet Grab HistoryC
Return grab history records.
Inputs: app (required), to, from, page, +7 more.
get_healthGet HealthD
Return health messages.
Inputs: app (required), to, from, page, +7 more.
get_historyGet HistoryC
Return history records with optional paging and date filters.
Inputs: app (required), to, from, page, +7 more.
get_import_historyGet Import HistoryC
Return import/download-folder-imported history records.
Inputs: app (required), to, from, page, +7 more.
get_indexerGet Prowlarr IndexerC
Return one Prowlarr indexer by id.
Inputs: id (required), to, from, page, +7 more.
get_indexer_historyGet Prowlarr Indexer HistoryC
Return Prowlarr indexer history.
Inputs: to, from, page, limit, +6 more.
get_indexersGet IndexersC
List indexers.
Inputs: app (required), to, from, page, +7 more.
get_indexer_statsGet Prowlarr Indexer StatsC
Return Prowlarr indexer statistics.
Inputs: to, from, page, limit, +6 more.
get_indexer_statusGet Prowlarr Indexer StatusD
Return Prowlarr indexer status.
Inputs: to, from, page, limit, +6 more.
get_language_profilesGet Language ProfilesC
List language profiles when supported by the app.
Inputs: app (required), to, from, page, +7 more.
get_media_management_configGet Media Management ConfigC
Return media management configuration.
Inputs: app (required), to, from, page, +7 more.
get_metadata_profilesGet Metadata ProfilesC
List metadata profiles when supported by the app.
Inputs: app (required), to, from, page, +7 more.
get_naming_configGet Naming ConfigC
Return naming configuration.
Inputs: app (required), to, from, page, +7 more.
get_notificationsGet NotificationsC
List notifications.
Inputs: app (required), to, from, page, +7 more.
get_quality_definitionsGet Quality DefinitionsC
List quality definitions.
Inputs: app (required), to, from, page, +7 more.
get_quality_profileGet Quality ProfileC
Return a single quality profile by id.
Inputs: id (required), app (required), to, from, +8 more.
get_quality_profilesGet Quality ProfilesC
List quality profiles.
Inputs: app (required), to, from, page, +7 more.
get_queueGet QueueD
Return queue records.
Inputs: app (required), to, from, page, +7 more.
get_queue_detailsGet Queue DetailsD
Return detailed queue records.
Inputs: app (required), to, from, page, +7 more.
get_root_foldersGet Root FoldersC
List root folders.
Inputs: app (required), to, from, page, +7 more.
get_system_statusGet System StatusC
Return Servarr system status for one configured app.
Inputs: app (required), to, from, page, +7 more.
get_tagsGet TagsC
List tags.
Inputs: app (required), to, from, page, +7 more.
grabs_by_indexerGrabs By IndexerC
Count grab events by indexer.
Inputs: to, app, from, page, +7 more.
hdr_distributionHDR DistributionD
Count library items by HDR/dynamic range.
Inputs: to, app, from, page, +7 more.
health_check_allHealth Check AllC
Check status and health for every configured Servarr app.
Inputs: to, from, page, limit, +6 more.
imports_by_indexerImports By IndexerC
Count import events by indexer.
Inputs: to, app, from, page, +7 more.
language_by_indexerLanguage By IndexerC
Group history languages by indexer.
Inputs: to, app, from, page, +7 more.
library_audio_distributionLibrary Audio DistributionC
Summarize audio codec distribution.
Inputs: to, app, from, page, +7 more.
library_codec_distributionLibrary Codec DistributionC
Summarize video codec distribution.
Inputs: to, app, from, page, +7 more.
library_growth_statisticsLibrary Growth StatisticsC
Estimate growth from added dates and recent imports.
Inputs: to, app, from, page, +7 more.
library_hdr_distributionLibrary HDR DistributionC
Summarize HDR/dynamic range distribution.
Inputs: to, app, from, page, +7 more.
library_profile_usageLibrary Profile UsageC
Summarize quality profile usage.
Inputs: to, app, from, page, +7 more.
library_quality_distributionLibrary Quality DistributionC
Summarize quality distribution.
Inputs: to, app, from, page, +7 more.
library_resolution_distributionLibrary Resolution DistributionD
Summarize resolution distribution.
Inputs: to, app, from, page, +7 more.
library_storage_statsLibrary Storage StatsC
Summarize storage usage by library.
Inputs: to, app, from, page, +7 more.
library_summaryLibrary SummaryD
Summarize configured Servarr libraries.
Inputs: to, app, from, page, +7 more.
list_backupsList BackupsA
List local Servarr Analytics MCP backup files.
Inputs: no named parameters.
profile_overlapProfile OverlapC
Find quality profiles with identical quality sets.
Inputs: to, app, from, page, +7 more.
quality_by_indexerQuality By IndexerC
Group history qualities by indexer.
Inputs: to, app, from, page, +7 more.
quality_distributionQuality DistributionC
Count library items by current file quality.
Inputs: to, app, from, page, +7 more.
quality_profile_usageQuality Profile UsageC
Count library items per quality profile.
Inputs: to, app, from, page, +7 more.
radarr_get_cutoff_unmetRadarr Get Cutoff UnmetC
List Radarr movies that have not met cutoff.
Inputs: to, from, page, limit, +6 more.
radarr_get_missingRadarr Get MissingC
List missing Radarr movies.
Inputs: to, from, page, limit, +6 more.
radarr_get_movieRadarr Get MovieC
Return one Radarr movie by id.
Inputs: id (required), to, from, page, +7 more.
radarr_get_movie_filesRadarr Get Movie FilesC
List movie files for a Radarr movie.
Inputs: movieId (required), to, from, page, +7 more.
radarr_get_moviesRadarr Get MoviesC
List Radarr movies.
Inputs: to, from, page, limit, +6 more.
redundant_quality_profilesRedundant Quality ProfilesC
Find unused or duplicate quality profiles.
Inputs: to, app, from, page, +7 more.
release_group_by_indexerRelease Group By IndexerC
Group release groups by indexer.
Inputs: to, app, from, page, +7 more.
report_failed_downloadsReport Failed DownloadsC
Generate report failed downloads.
Inputs: to, app, from, page, +7 more.
report_monthly_statisticsReport Monthly StatisticsD
Generate report monthly statistics.
Inputs: to, app, from, page, +7 more.
report_quality_reviewReport Quality ReviewD
Generate report quality review.
Inputs: to, app, from, page, +7 more.
report_recommendationsReport RecommendationsD
Generate report recommendations.
Inputs: to, app, from, page, +7 more.
report_storage_reviewReport Storage ReviewD
Generate report storage review.
Inputs: to, app, from, page, +7 more.
report_tracker_reviewReport Tracker ReviewD
Generate report tracker review.
Inputs: to, app, from, page, +7 more.
resolution_distributionResolution DistributionC
Count library items by resolution.
Inputs: to, app, from, page, +7 more.
restore_backupRestore BackupB
Plan or restore a backup. Actual restore requires confirm true and dryRun false.
Inputs: backupFile (required), app, dryRun, confirm.
simulate_codec_strategySimulate Codec StrategyC
Run a dry-run simulate codec strategy simulation.
Inputs: to, app, from, page, +9 more.
simulate_custom_format_changeSimulate Custom Format ChangeC
Run a dry-run simulate custom format change simulation.
Inputs: to, app, from, page, +9 more.
simulate_cutoff_changeSimulate Cutoff ChangeC
Run a dry-run simulate cutoff change simulation.
Inputs: to, app, from, page, +9 more.
simulate_profile_impactSimulate Profile ImpactA
Dry-run hypothetical quality profiles and custom formats against current files and live releases without applying changes.
Inputs: app (required), qualityProfiles (required), to, from, +11 more.
simulate_quality_profile_changeSimulate Quality Profile ChangeD
Run a dry-run simulate quality profile change simulation.
Inputs: to, app, from, page, +9 more.
simulate_score_changeSimulate Score ChangeD
Run a dry-run simulate score change simulation.
Inputs: to, app, from, page, +9 more.
simulate_storage_growthSimulate Storage GrowthC
Run a dry-run simulate storage growth simulation.
Inputs: to, app, from, page, +9 more.
simulate_storage_savingsSimulate Storage SavingsD
Run a dry-run simulate storage savings simulation.
Inputs: to, app, from, page, +9 more.
simulate_upgrade_impactSimulate Upgrade ImpactD
Run a dry-run simulate upgrade impact simulation.
Inputs: to, app, from, page, +9 more.
sonarr_get_cutoff_unmetSonarr Get Cutoff UnmetC
List Sonarr episodes that have not met cutoff.
Inputs: to, from, page, limit, +6 more.
sonarr_get_episode_filesSonarr Get Episode FilesC
List episode files for a Sonarr series.
Inputs: seriesId (required), to, from, page, +7 more.
sonarr_get_episodesSonarr Get EpisodesC
List episodes for a Sonarr series.
Inputs: seriesId (required), to, from, page, +7 more.
sonarr_get_missingSonarr Get MissingC
List missing Sonarr episodes.
Inputs: to, from, page, limit, +6 more.
sonarr_get_seriesSonarr Get SeriesC
List Sonarr series, or return one series when id is provided.
Inputs: id, to, from, page, +7 more.
storage_by_codecStorage By CodecD
Group storage by codec.
Inputs: to, app, from, page, +7 more.
storage_by_qualityStorage By QualityD
Group storage by quality.
Inputs: to, app, from, page, +7 more.
storage_by_resolutionStorage By ResolutionD
Group storage by resolution.
Inputs: to, app, from, page, +7 more.
storage_growthStorage GrowthD
Estimate storage growth from history.
Inputs: to, app, from, page, +7 more.
storage_usageStorage UsageD
Summarize storage usage.
Inputs: to, app, from, page, +7 more.
success_rate_by_indexerSuccess Rate By IndexerC
Estimate indexer success rate from grab/import/failure history.
Inputs: to, app, from, page, +7 more.
test_all_indexersTest All Prowlarr IndexersC
Trigger Prowlarr tests for all indexers.
Inputs: to, from, page, limit, +6 more.
test_connectionTest ConnectionC
Test connectivity for one Servarr app.
Inputs: app (required), to, from, page, +7 more.
test_indexerTest Prowlarr IndexerC
Trigger a Prowlarr indexer test.
Inputs: id (required), to, from, page, +7 more.
unused_custom_formatsUnused Custom FormatsD
Alias for custom format misses.
Inputs: to, app, from, page, +7 more.
update_custom_formatUpdate Custom FormatC
Update a custom format by id. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
update_custom_format_scoreUpdate Custom Format ScoreC
Update custom format score data using the provided body. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
update_delay_profileUpdate Delay ProfileC
Update a delay profile by id. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
update_media_managementUpdate Media ManagementC
Update media management configuration. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
update_namingUpdate NamingD
Update naming configuration. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
update_quality_definitionUpdate Quality DefinitionD
Update a quality definition by id. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
update_quality_profileUpdate Quality ProfileC
Update a quality profile by id. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
update_restrictionsUpdate RestrictionsC
Update release profile restrictions. Requires confirm=true.
Inputs: app (required), body (required), confirm (required), id, +11 more.
upgrade_candidatesUpgrade CandidatesC
List monitored items missing files or below cutoff.
Inputs: to, app, from, page, +7 more.
validate_patchValidate PatchC
Validate patch operations without applying them.
Inputs: operations (required), dryRun, confirm.
wasted_downloadsWasted DownloadsC
Estimate failed or non-imported grab volume.
Inputs: to, app, from, page, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 123 tools
Many tools have overlapping boundaries (library_codec_distribution vs codec_distribution, library_quality_distribution vs quality_distribution, custom_format_misses vs unused_custom_formats which is an explicit alias). The large number of distribution, simulation, and report tools makes it hard to select the right one without deep inspection.
Mostly snake_case verb_noun, but inconsistent: radarr_get_movies breaks the get_* pattern, library_summary and storage_usage lack verbs, and duplicate functionality is named differently (custom_format_misses vs unused_custom_formats). Overall readable but with clear deviations.
123 tools is an extreme number for any MCP server. The functionality could be consolidated into far fewer tools; many are micro-variants of each other, making the surface unnecessarily heavy and difficult to navigate.
The toolset provides extensive read, analytics, simulation, and report coverage, plus some configuration mutations. However, custom formats lack create/delete operations, and indexers, download clients, and notifications have no mutation tools, leaving notable gaps for a supposedly comprehensive management surface.
Maintenance
Related MCP Connectors
Self-hostable uptime monitoring: create checks, read incidents, manage status pages.
Read NodePing checks, uptime, results and events; mute checks, manage maintenance and schedules.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Read Physical AI datasets, projects, fleet and quality data. Requires authorized Avala access.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables unified control of \*arr media management applications (Sonarr, Radarr, Lidarr, Readarr, Prowlarr) through natural language queries. Manage TV shows, movies, music, books, search for content, monitor downloads, and check upcoming releases across all services.731,822 npm245MIT
- FlicenseNot gradedqualityDmaintenanceIntegrates with Radarr and Sonarr to manage your media library, enabling search, download requests, status checks, and system health monitoring.6-
- AlicenseNot gradedqualityBmaintenanceA locally-run, read-only MCP server that lets an LLM client diagnose a self-hosted *arr media stack by aggregating across Sonarr, Radarr, Prowlarr, qBittorrent, Tdarr, and Profilarr.53 PyPIApache 2.0
- AlicenseBqualityCmaintenanceExposes the Sonarr v3 REST API as MCP tools, enabling LLMs to read and manage a Sonarr instance including series, episodes, downloads, history, and more. Supports both read and write operations, with destructive tools flagged.15MIT