mcp-medusa
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | SSE bind host, default 0.0.0.0 | 0.0.0.0 |
| MCP_PORT | No | SSE bind port, default 8000 | 8000 |
| MEDUSA_URL | Yes | Base URL for Medusa, for example http://medusa:8081 | |
| MCP_TRANSPORT | No | stdio or sse, default stdio | stdio |
| MEDUSA_API_KEY | No | Medusa API key sent as X-Api-Key | |
| MEDUSA_TIMEOUT | No | HTTP timeout in seconds, default 30 | 30 |
| MEDUSA_WEB_ROOT | No | Web root if Medusa is hosted below a path | |
| MCP_ALLOWED_HOSTS | No | Comma-separated allowed Host headers when DNS rebinding protection is enabled | |
| MCP_ALLOWED_ORIGINS | No | Comma-separated allowed Origin headers when DNS rebinding protection is enabled | |
| MCP_DNS_REBINDING_PROTECTION | No | Enable MCP SDK Host/Origin validation, default false | false |
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 |
|---|---|
| diagnose_release_groupsA | Diagnose release group issues for a series by comparing config vs available releases. Checks provider cache first; if empty, triggers a manual search and retries. Returns a structured diagnosis with recommendation. |
| update_release_groupsA | Update release group configuration for a series. Sends PATCH /api/v2/series/{slug} with the specified config.release.* fields. Only the provided fields are changed; omitted fields are left as-is. |
| get_aliasesA | List scene exceptions (aliases) for a series. Scene exceptions are alternative episode/release titles that Medusa recognizes when searching. This tool reads them; use create_alias to add new ones. |
| create_aliasA | Create a local scene exception (alias) for a series. This enables Medusa to recognize an alternative release title when searching, allowing it to match releases that use a different naming scheme. Only local (user-managed) scene exceptions can be created via this tool. |
| delete_aliasB | Delete a scene exception (alias) by ID. |
| scheduler_statusA | Return Medusa scheduler and queue status. Shows whether each scheduler thread is alive, enabled, and currently active. Useful for diagnosing stuck queues. |
| postprocessA | Trigger Medusa manual post-processing on a directory. Scans IMPORTANT: |
| search_tvdbA | Search TVDB for a show by name and return matching TVDB IDs. Use this when an anime add fails due to AniDB-to-TVDB mapping issues. Find the correct TVDB ID here, then add the show with add_series. |
| add_seriesA | Add a series to Medusa directly by TVDB ID via POST /api/v2/series. Use this as a fallback when add_anime fails due to AniDB-to-TVDB mapping issues. First find the correct TVDB ID with search_tvdb, then add it here. This bypasses anime resolution entirely and adds via the standard series endpoint. quality values: "N/A", "Unknown", "SDTV", "SD DVD", "720p HDTV", "RawHD", "1080p HDTV", "720p WEB-DL", "1080p WEB-DL", "720p BluRay", "1080p BluRay", "4K UHD TV", "8K UHD TV", "4K UHD WEB-DL", "8K UHD WEB-DL", "4K UHD BluRay", "8K UHD BluRay". When omitted, Medusa's global quality defaults are used. |
| set_episode_statusA | Set episode statuses for a series via PATCH /api/v2/episodes/{series_slug}. Use when TVDB metadata is out of sync with actual episode status and Medusa is not downloading episodes that should be available. Set affected episodes to "wanted" to force Medusa to search for them. Uses the same PATCH endpoint as the Medusa Web UI, so it can change UNAIRED episodes to WANTED unlike the internal bulk-update endpoint. |
| force_searchA | Force a manual search for specific episodes via PUT /api/v2/search/manual. Queues a manual search that actively queries providers and snatches matching releases. Use after setting episode status to "wanted" when you want to immediately search for and download episodes. |
| update_series_qualityA | Update allowed and/or preferred qualities for an existing series. Sends PATCH /api/v2/series/{slug} with config.qualities.* fields. Only the provided fields are changed; omitted fields are left as-is. quality values: "N/A", "Unknown", "SDTV", "SD DVD", "720p HDTV", "RawHD", "1080p HDTV", "720p WEB-DL", "1080p WEB-DL", "720p BluRay", "1080p BluRay", "4K UHD TV", "8K UHD TV", "4K UHD WEB-DL", "8K UHD WEB-DL", "4K UHD BluRay", "8K UHD BluRay". |
| organize_season_foldersA | Move episodes into Season XX/ subdirectories without renaming files. Enables season folders on the series and moves all downloaded episode files into Season XX/ subdirectories, preserving original filenames. Also moves associated files (subtitles, etc.). Use this when:
Calls POST /api/v2/series/{slug}/operation with type=ORGANIZE_SEASON_FOLDERS. |
| add_animeA | Add an anime series to Medusa via /api/v2/anime/add. Note: Some anime may fail with "no name on TVDBv2" due to AniDB→TVDB ID mapping issues. As a workaround, use search_tvdb to find the correct TVDB ID, then add_series to add it directly. |
| seasonal_animeB | Query a paginated seasonal anime page from Medusa, optionally returning only selected fields. Season, source, and source_sort are case-insensitive. |
| resolve_anime_titleB | Resolve an anime title to MAL candidates with match/ambiguous/no_match decision. |
| anime_infoA | Return compact anime details and Medusa presence by title or MAL ID. Does not add anime. |
| seasonal_candidatesC | Fetch server-filtered seasonal anime candidates and apply residual preference heuristics. |
| prepare_seasonal_reviewC | Compact seasonal candidates into an AI review packet. |
| resolve_and_add_animeB | Resolve and optionally add one anime. Dry-run unless execute is true. |
| bulk_add_animeA | Dry-run or add multiple anime items. Skips filterDecision=skip; execute must be true for writes. |
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 21 tools
The core Medusa operations (aliases, release groups, searches, postprocessing) are clearly separated, but the anime-related tools have overlapping boundaries: seasonal_anime, seasonal_candidates, prepare_seasonal_review, resolve_anime_title, and resolve_and_add_anime all seem to cover similar discovery/dedup/resolution steps. Add flows are also split across add_series, add_anime, resolve_and_add_anime, and bulk_add_anime, so an agent may struggle to pick the right one without careful reading.
Tool naming is overwhelmingly snake_case with a verb_noun pattern (create_alias, set_episode_status, update_series_quality, bulk_add_anime). Only a few tools deviate into noun-first or adjective-first forms such as anime_info and seasonal_anime, but the convention is still predictable overall.
At 21 tools, the surface is on the upper edge of comfort and feels heavy for a cohesive server. The count is justifiable given the two intertwined domains of TV-series management and anime seasonal workflows, but some tools appear to cover niche pipeline stages that a smaller set could absorb.
The set covers many operational needs: adding series, adjusting statuses, searching, postprocessing, quality, season folders, aliases, scheduler status, and anime fetching. However, it lacks a general way to list or retrieve an existing series' slug/config, and there is no update path for aliases—only create/delete—so agents cannot fully reconcile or inspect existing state before modifying it.