profilarr-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PROFILARR_URL | Yes | The base URL of your Profilarr instance. | |
| PROFILARR_API_KEY | Yes | API key for Profilarr. Required for every tool except profilarr_health, which is public. | |
| PROFILARR_TEMP_DIR | No | Directory for temporary files used in backup download/upload. Defaults to the system temp dir. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| profilarr_healthA | Check system health. Public -- requires no API key. Returns status (healthy|degraded|unhealthy) and timestamp. |
| profilarr_statusA | Get overall system status: version, uptime, databases, arrs (with sync state), job queue, backups, and unread announcements. |
| profilarr_get_openapi_specA | Fetch Profilarr's resolved OpenAPI 3.1 spec as a JSON document. |
| profilarr_list_arr_instancesA | List connected Radarr/Sonarr instances. Secrets (api_key) are stripped. |
| profilarr_list_databasesA | List linked PCD databases. Secrets (personal_access_token -> hasPat) stripped. |
| profilarr_create_databaseB | Link a PCD database: clones the repo, validates its manifest, processes
dependencies. Synchronous; may take seconds. |
| profilarr_get_databaseA | Get a single linked database by id. Secrets stripped. |
| profilarr_update_databaseA | Partial update of a linked database. Only provided fields change; unknown fields are ignored. See profilarr_create_database for field-dependency rules (PAT requires git_user_name/email, local_ops_enabled requires PAT). |
| profilarr_delete_databaseA | Unlink a database: removes the row, deletes the cloned repo from disk, cancels scheduled sync jobs. |
| profilarr_sync_databaseA | Trigger a database pull (PCD sync). Async: returns {jobId} (HTTP 202); poll with profilarr_get_job(jobId). Note: this pulls the linked DB repo, NOT an Arr instance sync. |
| profilarr_get_jobA | Get current status of a job-queue entry (e.g. from profilarr_create_backup or profilarr_sync_database). Returns status with run result when finished. |
| profilarr_list_backupsA | List backup archives on the server, newest first. |
| profilarr_create_backupA | Create a backup. Async: returns {jobId} (HTTP 202); poll with profilarr_get_job(jobId). The archive is sanitized (secrets stripped). |
| profilarr_download_backupA | Download a backup archive (sanitized on the fly) and write it to the local temp dir (PROFILARR_TEMP_DIR or system temp). Returns {path, filename, size} so the caller can read the file from disk. |
| profilarr_delete_backupB | Delete a backup archive from the server. |
| profilarr_upload_backupA | Upload a local .tar.gz backup to the server as multipart form data. Returns the stored filename/size. |
| profilarr_get_backup_settingsA | Get backup settings (schedule, retentionDays, enabled, ...). |
| profilarr_update_backup_settingsA | Update backup settings. Only schedule (hourly|daily|weekly|monthly), retention_days (1-365), and enabled are updatable. Returns updated settings. |
| profilarr_list_announcementsA | List visible announcements (withdrawn/expired/version-incompatible filtered), newest first. |
| profilarr_get_announcementA | Get a single announcement by id, including its markdown body. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Each tool targets a distinct resource and action: announcements (list/get), databases (CRUD+sync), backups (full lifecycle), jobs (status), health/status, arr instances (list), and settings. No two tools overlap in purpose; even status vs health are clearly separated as system overview vs health check.
The dominant pattern is profilarr_verb_noun (get_, list_, create_, update_, delete_, sync_, download_, upload_). However, profilarr_health and profilarr_status are noun-only, and get_openapi_spec is slightly inconsistent with list vs get. Minor deviations, but overall predictable and readable.
20 tools is on the heavier side but justified by the breadth of the domain: databases, backups, announcements, arr instances, jobs, health, and settings. Each tool serves a distinct function, so the count feels appropriate rather than bloated.
Core workflows are well covered: full CRUD for database links and backups, plus settings and status. Minor gaps exist (e.g., no arr instance add/remove/sync, no announcement management), but these are likely outside the server's primary scope. The surface is coherent for most user journeys.