Bazarr MCP server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BAZARR_URL | Yes | The URL of your Bazarr instance. | |
| BAZARR_API_KEY | Yes | The API key for your Bazarr instance (Settings, General, Security, API key). |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_episodes_blacklistC | Add an episodes subtitles to blacklist. POST /api/episodes/blacklist Args: seriesid: Series ID episodeid: Episode ID provider: Provider name subs_id: Subtitles ID language: Subtitles language subtitles_path: Subtitles file path |
| create_episodes_subtitlesB | Upload an episode subtitles. POST /api/episodes/subtitles Args: seriesid: Series ID episodeid: Episode ID language: Language code2 forced: Forced true/false as string hi: HI true/false as string file: Subtitles file as file upload object |
| create_jellyfin_test_connectionA | Test connection to a Jellyfin server with provided credentials. POST /api/jellyfin/test-connection Args: url: Jellyfin server URL apikey: Jellyfin API key |
| create_moviesB | Update specific movies languages profile. POST /api/movies Args: radarrid: Radarr movie(s) ID profileid: Languages profile(s) ID or "none" |
| create_movies_blacklistC | Add a movies subtitles to blacklist. POST /api/movies/blacklist Args: radarrid: Radarr ID provider: Provider name subs_id: Subtitles ID language: Subtitles language subtitles_path: Subtitles file path |
| create_movies_subtitlesB | Upload a movie subtitles. POST /api/movies/subtitles Args: radarrid: Movie ID language: Language code2 forced: Forced true/false as string hi: HI true/false as string file: Subtitles file as file upload object |
| create_plex_apikeyC | POST plex/apikey. POST /api/plex/apikey Args: apikey: API key |
| create_plex_encrypt_apikeyC | POST plex/encrypt-apikey. POST /api/plex/encrypt-apikey |
| create_plex_oauth_logoutC | POST plex/oauth/logout. POST /api/plex/oauth/logout |
| create_plex_oauth_pinC | POST plex/oauth/pin. POST /api/plex/oauth/pin Args: client_id: Client ID |
| create_plex_select_serverD | POST plex/select-server. POST /api/plex/select-server Args: machine_identifier: Machine identifier name: Server name uri: Connection URI local: Is local connection connections: All available connection URIs |
| create_plex_test_connectionC | POST plex/test-connection. POST /api/plex/test-connection Args: uri: Server URI |
| create_plex_webhook_createD | POST plex/webhook/create. POST /api/plex/webhook/create |
| create_plex_webhook_deleteC | POST plex/webhook/delete. POST /api/plex/webhook/delete Args: webhook_url: Webhook URL to delete |
| create_providersB | Reset providers status. POST /api/providers Args: action: Action to perform from ["reset"] |
| create_providers_episodesB | Manually download an episode subtitles. POST /api/providers/episodes Args: seriesid: Series ID episodeid: Episode ID hi: HI subtitles from ["True", "False"] forced: Forced subtitles from ["True", "False"] original_format: Use original subtitles format from ["True", "False"] provider: Provider name subtitle: Subtitle ID as returned by GET |
| create_providers_moviesA | Manually download a movie subtitles. POST /api/providers/movies Args: radarrid: Movie ID hi: HI subtitles from ["True", "False"] forced: Forced subtitles from ["True", "False"] original_format: Use original subtitles format from ["True", "False"] provider: Provider name subtitle: Subtitle ID as returned by GET |
| create_seriesB | Update specific series languages profile. POST /api/series Args: seriesid: Sonarr series ID profileid: Languages profile(s) ID or "none" |
| create_systemA | Shutdown or restart Bazarr. POST /api/system Args: action: Action to perform from ["shutdown", "restart"] |
| create_system_accountA | Login or logout from Bazarr UI when using form login. POST /api/system/account Args: action: Action from ["login", "logout"] username: Bazarr username password: Bazarr password |
| create_system_announcementsA | Mark announcement as dismissed. POST /api/system/announcements Args: hash: hash of the announcement to dismiss |
| create_system_backupsB | Create a new backup. POST /api/system/backups |
| create_system_jobsA | Force start, move to top or move to bottom of the queue a specific job. POST /api/system/jobs Args: id: Job ID act onto action: Action to perform from ["force_start", "move_top", "move_bottom"] |
| create_system_settingsC | POST system/settings. POST /api/system/settings |
| create_system_tasksC | Run task. POST /api/system/tasks Args: taskid: Task id of the task to run |
| create_system_webhooks_testA | Test external webhook connection. POST /api/system/webhooks/test |
| create_webhooks_plexB | Trigger subtitles search on play media event in Plex. POST /api/webhooks/plex Args: payload: Webhook payload |
| create_webhooks_radarrA | Search for missing subtitles based on Radarr webhooks. POST /api/webhooks/radarr |
| create_webhooks_sonarrA | Search for missing subtitles based on Sonarr webhooks. POST /api/webhooks/sonarr |
| delete_episodes_blacklistC | Delete an episodes subtitles from blacklist. DELETE /api/episodes/blacklist Args: all: Empty episodes subtitles blacklist provider: Provider name subs_id: Subtitles ID |
| delete_episodes_subtitlesB | Delete an episode subtitles. DELETE /api/episodes/subtitles Args: seriesid: Series ID episodeid: Episode ID language: Language code2 forced: Forced true/false as string hi: HI true/false as string path: Path of the subtitles file |
| delete_movies_blacklistB | Delete a movies subtitles from blacklist. DELETE /api/movies/blacklist Args: all: Empty movies subtitles blacklist provider: Provider name subs_id: Subtitles ID |
| delete_movies_subtitlesC | Delete a movie subtitles. DELETE /api/movies/subtitles Args: radarrid: Movie ID language: Language code2 forced: Forced true/false as string hi: HI true/false as string path: Path of the subtitles file |
| delete_system_backupsA | Delete a backup file. DELETE /api/system/backups Args: filename: Backups to delete filename |
| delete_system_jobsA | Delete a job from the queue. DELETE /api/system/jobs Args: id: Job ID to delete from queue |
| delete_system_logsA | Force log rotation and create a new log file. DELETE /api/system/logs |
| get_plex_oauth_pin_by_pin_id_checkC | GET plex/oauth/pin/string:pin_id/check. GET /api/plex/oauth/pin/{pin_id}/check Args: pin_id: Path parameter. |
| list_badgesA | Get badges count to update the UI. GET /api/badges |
| list_episodesB | List episodes metadata for specific series or episodes. GET /api/episodes Args: seriesid: Series IDs to list episodes for episodeid: Episodes ID to list |
| list_episodes_blacklistA | List blacklisted episodes subtitles. GET /api/episodes/blacklist Args: start: Paging start integer length: Paging length integer |
| list_episodes_historyB | List episodes history events. GET /api/episodes/history Args: start: Paging start integer length: Paging length integer episodeid: Episode ID |
| list_episodes_wantedB | List episodes wanted subtitles. GET /api/episodes/wanted Args: start: Paging start integer length: Paging length integer episodeid: Episodes ID to list |
| list_filesB | List Bazarr file system content. GET /api/files Args: path: Path to browse |
| list_files_radarrB | List Radarr file system content. GET /api/files/radarr Args: path: Path to browse |
| list_files_sonarrA | List Sonarr file system content. GET /api/files/sonarr Args: path: Path to browse |
| list_history_statsA | Get history statistics. GET /api/history/stats Args: time_frame: Timeframe to get stats for. Must be in ["week", "month", "trimester", "year"] action: Action type to filter for. provider: Provider name to filter for. language: Language name to filter for |
| list_jellyfin_librariesA | List available movie and series libraries from the Jellyfin server. GET /api/jellyfin/libraries Args: url: Jellyfin server URL apikey: Jellyfin API key |
| list_moviesB | List movies metadata for specific movies. GET /api/movies Args: start: Paging start integer length: Paging length integer radarrid: Movies IDs to get metadata for |
| list_movies_blacklistB | List blacklisted movies subtitles. GET /api/movies/blacklist Args: start: Paging start integer length: Paging length integer |
| list_movies_historyB | List movies history events. GET /api/movies/history Args: start: Paging start integer length: Paging length integer radarrid: Movie ID |
| list_movies_tagsA | List all distinct tags assigned to any movie. GET /api/movies/tags |
| list_movies_wantedC | List movies wanted subtitles. GET /api/movies/wanted Args: start: Paging start integer length: Paging length integer radarrid: Movies ID to list |
| list_plex_autopulse_configB | GET plex/autopulse/config. GET /api/plex/autopulse/config |
| list_plex_oauth_librariesC | GET plex/oauth/libraries. GET /api/plex/oauth/libraries |
| list_plex_oauth_pinD | GET plex/oauth/pin. GET /api/plex/oauth/pin |
| list_plex_oauth_serversB | GET plex/oauth/servers. GET /api/plex/oauth/servers |
| list_plex_oauth_validateC | GET plex/oauth/validate. GET /api/plex/oauth/validate |
| list_plex_select_serverC | GET plex/select-server. GET /api/plex/select-server |
| list_plex_test_connectionC | GET plex/test-connection. GET /api/plex/test-connection |
| list_plex_webhook_listC | GET plex/webhook/list. GET /api/plex/webhook/list |
| list_providersB | Get providers status. GET /api/providers Args: history: Provider name for history stats |
| list_providers_episodesB | Search manually for an episode subtitles. GET /api/providers/episodes Args: episodeid: Episode ID |
| list_providers_moviesC | Search manually for a movie subtitles. GET /api/providers/movies Args: radarrid: Movie ID |
| list_seriesC | List series metadata for specific series. GET /api/series Args: start: Paging start integer length: Paging length integer seriesid: Series IDs to get metadata for |
| list_series_tagsA | List all distinct tags assigned to any series. GET /api/series/tags |
| list_subtitlesB | Return available audio and embedded subtitles tracks with external subtitles. Used for manual subsync. GET /api/subtitles Args: subtitles_path: External subtitles file path sonarr_episode_id: Sonarr Episode ID radarr_movie_id: Radarr Movie ID |
| list_subtitles_contentsC | Retrieve subtitle file contents. GET /api/subtitles/contents Args: subtitle_path: Subtitle filepath |
| list_subtitles_infoB | Guessit over subtitles filename. GET /api/subtitles/info Args: filenames: Subtitles filenames |
| list_system_announcementsA | List announcements relative to Bazarr. GET /api/system/announcements |
| list_system_backupsA | List backup files. GET /api/system/backups |
| list_system_healthB | List health issues. GET /api/system/health |
| list_system_jobsB | List jobs from the queue. GET /api/system/jobs Args: id: Job ID to return status: Job status to return |
| list_system_languagesA | List languages for history filter or for language filter menu. GET /api/system/languages Args: history: Language name for history stats |
| list_system_languages_profilesA | List languages profiles. GET /api/system/languages/profiles |
| list_system_logsA | List log entries. GET /api/system/logs |
| list_system_pingB | Return status and http 200. GET /api/system/ping |
| list_system_releasesB | Get Bazarr releases. GET /api/system/releases |
| list_system_searchesA | List results from query. GET /api/system/searches Args: query: Series or movie name to search for |
| list_system_settingsB | GET system/settings. GET /api/system/settings |
| list_system_statusA | Return environment information and versions. GET /api/system/status |
| list_system_tasksB | List tasks. GET /api/system/tasks Args: taskid: List tasks or a single task properties |
| patch_episodes_subtitlesC | Download an episode subtitles. PATCH /api/episodes/subtitles Args: seriesid: Series ID episodeid: Episode ID language: Language code2 forced: Forced true/false as string hi: HI true/false as string |
| patch_moviesB | Run actions on specific movies. PATCH /api/movies Args: radarrid: Radarr movie ID action: Action to perform from ["scan-disk", "search-missing", "search-wanted", "sync"] |
| patch_movies_subtitlesB | Download a movie subtitles. PATCH /api/movies/subtitles Args: radarrid: Movie ID language: Language code2 forced: Forced true/false as string hi: HI true/false as string |
| patch_seriesA | Run actions on specific series. PATCH /api/series Args: seriesid: Sonarr series ID action: Action to perform from ["scan-disk", "search-missing", "search-wanted", "sync"] |
| patch_subtitlesA | Apply mods/tools on external subtitles. PATCH /api/subtitles Args: action: Action from ["sync", "translate", "extract" or mods name] language: Language code2 path: Subtitles file path type: Media type from ["episode", "movie"] id: Media ID (episodeId, radarrId) forced: Forced subtitles from ["True", "False"] hi: HI subtitles from ["True", "False"] original_format: Use original subtitles format from ["True", "False"] reference: Reference to use for sync from video file track number (a:0) or some subtitles file path max_offset_seconds: Maximum offset seconds to allow no_fix_framerate: Don't try to fix framerate from ["True", "False"] gss: Use Golden-Section Search from ["True", "False"] subtitles_id: Subtitles database ID (required for the "extract" action) |
| patch_system_backupsC | Restore a backup file. PATCH /api/system/backups Args: filename: Backups to restore filename |
| patch_system_jobsB | Empty a specific jobs queue. PATCH /api/system/jobs Args: queue_name: Jobs queue name to empty |
| patch_system_notificationsB | Test a notifications provider URL. PATCH /api/system/notifications Args: url: Notifications provider URL |
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 89 tools
Tools are generally distinct by resource and action (movies, series, episodes, system), but the 'create_' prefix is misleadingly used for non-creating operations like shutdown or testing, which could cause initial confusion. Overall, each tool has a unique endpoint and clear purpose.
Naming follows an HTTP-method-like pattern (create_, list_, patch_, delete_) but mixes list_ and get_ for GET endpoints and uses create_ for actions like reset or test. This inconsistency makes the naming pattern less predictable than a clean verb_noun convention.
With 89 tools, the surface is heavily over-scoped for most use cases. Many niche Plex/OAuth/admin operations could be grouped or omitted, making the server feel bloated and harder to navigate.
The tool set thoroughly covers Bazarr's API: subtitle CUD, blacklists, history, wanted lists, providers, system management, backups, tasks, and media integrations. It leaves little functional gap for the server's intended domain.