mcp-medusa
The mcp-medusa server exposes tools for automating anime management through the Medusa platform, covering discovery, adding, configuring, and troubleshooting anime series.
Anime Discovery & Search
seasonal_anime– Query paginated seasonal anime listings by year/season with filteringseasonal_candidates– Fetch server-filtered candidates with heuristic scoring (min list users, exclude kids/BL genres, first season only)resolve_anime_title– Resolve a title string to MAL candidates with amatch/ambiguous/no_matchdecisionanime_info– Look up compact anime details and check if already present in Medusa, by title or MAL ID
Adding Anime
add_anime– Add a single anime by MAL ID with release group, status, and directory optionsresolve_and_add_anime– Resolve a title and optionally add it (dry-run by default;execute: truerequired for writes)bulk_add_anime– Batch resolve and add multiple anime from a candidate list (dry-run by default)add_series– Add a series directly by TVDB ID, bypassing anime resolution
Series Management
update_series_quality– Update allowed/preferred quality settings for an existing seriesupdate_release_groups– Update whitelist, blacklist, fallback groups, and fallback daysset_episode_status– Set episode statuses (wanted/skipped/ignored) for specific episodesforce_search– Trigger a manual provider search for specific episodes
Scene Aliases
get_aliases– List scene exceptions (alternative titles) for a series, optionally filtered by seasoncreate_alias– Add a new local scene exception/aliasdelete_alias– Remove a scene exception by ID
Diagnostics & Utilities
diagnose_release_groups– Diagnose release group issues by comparing config vs. available releasesscheduler_status– Check Medusa scheduler thread health and queue statesearch_tvdb– Search TVDB by show name to retrieve a TVDB IDprepare_seasonal_review– Compact seasonal candidate data into a concise AI review packet
Provides tools for managing anime series via Medusa's API, including adding anime, querying seasonal anime, resolving titles, and bulk operations.
Click on "Install 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., "@mcp-medusashow me the top anime this season"
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.
mcp-medusa
MCP server that exposes Medusa anime automation tools.
Tools
add_anime
Adds an anime to Medusa using POST /api/v2/anime/add.
Common arguments:
{
"anime_id": 62076,
"source": "myanimelist",
"root_dir": "/media/videos/Anime",
"anime": true,
"scene": false,
"status": "wanted",
"initial_release_group": "SubsPlease",
"fallback_release_groups": ["SubsPlease", "Erai-raws"],
"release_group_fallback_days": 7
}Arguments:
Argument | Required | Default | Allowed values / notes |
| yes | none | Source-specific anime ID. For |
| yes | none | Medusa root directory path for the new series. |
| no |
| Case-insensitive: |
| no |
| Usually keep |
| no |
| Whether to enable scene numbering. |
| no |
| Medusa episode status string, commonly |
| no | none | First/active release group to whitelist, for example |
| no | none | Ordered list of release groups to rotate through. Include the initial group first for deterministic behavior. |
| no |
| Days after episode airdate before switching to the next fallback group. |
| no | Medusa-generated | Optional series folder name override. |
seasonal_anime
Queries Medusa seasonal anime using GET /api/v2/anime/seasonal.
{
"year": 2026,
"season": "SPRING",
"source": "myanimelist",
"source_sort": "anime_num_list_users",
"page": 1,
"limit": 10,
"fields": ["animeId", "displayTitle", "year", "animeType", "genres", "score", "imageUrl"]
}Minimal call using current anime season defaults:
{}Arguments:
Argument | Required | Default | Allowed values / notes |
| no | current year | If omitted, calculated from the MCP server's current date. |
| no | current anime season | Case-insensitive: |
| no |
| Case-insensitive: |
| no |
| Case-insensitive: |
| no |
| Medusa result page number. Must be |
| no |
| Results per page. Medusa allows |
| no |
| Optional list of response fields to keep. If omitted/null, the full Medusa anime objects are returned. |
Current anime season defaults use this month mapping:
Months | Season |
January-March |
|
April-June |
|
July-September |
|
October-December |
|
Useful fields values include:
["animeId", "source", "displayTitle", "titleRomanji", "titleEnglish", "year", "season", "animeType", "status", "episodes", "episodeInfo", "genres", "studios", "score", "numListUsers", "imageUrl", "anidbId", "tvdbId", "malId", "url", "directoryName"]resolve_anime_title
Resolves a title to enriched Medusa/MyAnimeList candidates using GET /api/v2/anime/search with source, includeDetails=true, and limit.
{
"title": "Frieren",
"source": "myanimelist",
"limit": 10,
"min_score": 88,
"score_gap": 8
}Returns decision as match, ambiguous, or no_match, plus scored candidates.
anime_info
Returns compact anime details and Medusa presence by title or MAL ID without adding anything.
{
"title": "Frieren",
"source": "myanimelist"
}or:
{
"mal_id": 52991,
"source": "myanimelist"
}seasonal_candidates
Fetches seasonal candidates using Medusa's server-side seasonal filters before applying residual OpenClaw-specific heuristics.
{
"year": 2026,
"season": "SUMMER",
"source": "myanimelist",
"limit": 25,
"min_num_list_users": 3000,
"fields": ["animeId", "displayTitle", "animeType", "genres", "numListUsers", "synopsis"]
}The MCP tool sends Medusa filters such as animeType=TV, minNumListUsers, excludeGenres=Kids,Boys Love, matched=false, firstSeasonOnly=true, and fields to reduce payload size.
prepare_seasonal_review
Compacts seasonal candidate items into an AI review packet with conservative review instructions.
{
"items": [{"animeId": 62076, "displayTitle": "Example Title"}],
"max_items": 25
}resolve_and_add_anime
Resolves and dry-runs or executes a single add through Medusa's bulk-add endpoint. Writes require execute: true.
{
"title": "Frieren",
"root_dir": "/media/videos/Anime",
"execute": false
}scheduler_status
Returns Medusa scheduler thread health and queue state. Use when anime adds appear stuck or unverified.
{}search_tvdb
Searches TVDB by show name for a TVDB ID. Use as fallback when an anime add fails due to AniDB-to-TVDB mapping issues.
{ "query": "Dorohedoro", "language": "en" }add_series
Adds a series directly by TVDB ID via POST /api/v2/series. Bypasses anime resolution entirely. Use after search_tvdb when add_anime fails.
Arguments:
Argument | Required | Default | Notes |
| yes | none | TVDB show ID (from |
| yes | none | Medusa root directory path. |
| no |
| |
| no |
| Accepts strings like |
| no | none | Indexer language override. |
| no | none | Custom series folder name override. |
| no |
| |
| no |
|
{ "tvdb_id": 370761, "root_dir": "/media/videos/Anime" }set_episode_status
Sets episode statuses for a series via POST /api/v2/internal/updateEpisodeStatus. Use when TVDB metadata is out of sync and Medusa is not downloading episodes that should be available.
Arguments:
Argument | Required | Default | Notes |
| yes | none | Series slug (e.g. |
| yes | none | List of episode slugs (e.g. |
| no |
| Target status: |
{ "series_slug": "tvdb370761", "episodes": ["s01e01", "s01e02"], "status": "wanted" }force_search
Force a manual search for specific episodes via PUT /api/v2/search/manual. Queues a provider search that actively queries enabled providers and snatches matching releases. Use after setting episodes to "wanted".
Arguments:
Argument | Required | Default | Notes |
| yes | none | Series slug (e.g. |
| yes | none | List of episode slugs (e.g. |
{ "series_slug": "tvdb370761", "episodes": ["s01e01"] }update_series_quality
Update allowed or preferred qualities for an existing series via PATCH /api/v2/series/{slug}. Uses human-readable quality names. Omitted fields are left unchanged.
Arguments:
Argument | Required | Default | Notes |
| yes | none | Series slug (e.g. |
| no | none | Quality names for the allowed list. |
| no | none | Quality names for the preferred list. |
Quality names: "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".
{ "series_slug": "tvdb370761", "allowed_qualities": ["1080p BluRay", "720p HDTV"] }organize_season_folders
Enable season folders and move episode files into Season XX/ subdirectories without renaming files. Calls POST /api/v2/series/{slug}/operation with type=ORGANIZE_SEASON_FOLDERS.
Use when a multi-season anime has all files in a flat directory and Plex is missing episodes due to poor multi-season-in-one-folder support.
Arguments:
Argument | Required | Default | Notes |
| yes | none | Series slug (e.g. |
{ "series_slug": "tvdb370761" }bulk_add_anime
Dry-runs or executes multiple anime adds through POST /api/v2/anime/bulk-add. Writes require execute: true.
{
"items": [{"animeId": 62076, "displayTitle": "Example Title", "aiDecision": "add"}],
"decision_field": "aiDecision",
"allowed_decisions": ["add"],
"execute": false
}Related MCP server: Bangumi TV MCP Service
Configuration
Environment variables:
Variable | Required | Description |
| yes | Base URL for Medusa, for example |
| recommended | Medusa API key sent as |
| no | Web root if Medusa is hosted below a path |
| no | HTTP timeout in seconds, default |
| no |
|
| no | SSE bind host, default |
| no | SSE bind port, default |
| no | Enable MCP SDK Host/Origin validation, default |
| no | Comma-separated allowed |
| no | Comma-separated allowed |
For container/SSE deployments, keep MCP_HOST=0.0.0.0 or set it explicitly. DNS rebinding protection is disabled by default because mapped ports, reverse proxies, and LAN hostnames otherwise commonly cause 421 Misdirected Request errors. If you enable it, include the externally visible host and port in MCP_ALLOWED_HOSTS.
Run locally
pip install -e .
MEDUSA_URL=http://localhost:8081 MEDUSA_API_KEY=... mcp-medusaFor SSE:
MEDUSA_URL=http://localhost:8081 MEDUSA_API_KEY=... mcp-medusa --transport sse --port 8000Docker
The image defaults to SSE on port 8000.
docker build -t mcp-medusa .
docker run --rm -p 8000:8000 \
-e MEDUSA_URL=http://medusa:8081 \
-e MEDUSA_API_KEY=... \
mcp-medusaFor stdio instead:
docker run --rm -i \
-e MEDUSA_URL=http://medusa:8081 \
-e MEDUSA_API_KEY=... \
mcp-medusa --transport stdioMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cpxazn/mcp-medusa'
If you have feedback or need assistance with the MCP directory API, please join our Discord server