jhomen368/overseerr-mcp
MCP Developer ToolsA Model Context Protocol (MCP) server that lets AI assistants search, request, and manage media for Overseerr and Seerr with batch‑deduplication, caching, and safety features
Features
- Batch deduplication of 50–100 titles in a single API call (99 % fewer calls)
- Compact response format reduces token usage by ~88 %
- Smart caching cuts API traffic by up to 85 %
- Safety features: multi‑season confirmation and strict input validation
- Six built‑in tools covering search, request management, service discovery, and detailed media lookup
Recent releases
View all 14 releases →- `passRate` in dedupe summary now divides by total input titles rather than deduped results — the percentage will be lower if duplicate titles were in the input list
Full changelog
[2.1.2] - 2026-04-08
Fixed
- Non-existent season handling: Searching for a season that doesn't exist (e.g. "Overlord S99") now correctly returns the real show ID with a
SEASON_NOT_FOUNDreason code instead of treating the whole search asNOT_FOUND - Compact search status accuracy:
search_mediain compact format now correctly reflects library availability by readingmediaInfofrom search results — titles already in Plex will showAVAILABLEinstead ofNOT_REQUESTED - autoRequest summary counts: Fixed incorrect
pass/blocked/actionablecounts caused by double-wrapped processor returns; summary now always reflects the actual dedupe results - autoRequest result field: Fixed the
autoRequestsresult object not being populated correctly whenautoRequest: trueis used - Season availability blocking: Dedupe mode now correctly blocks titles where the requested season is already in the library (previously some already-available seasons could slip through as actionable)
- Pass rate calculation:
passRatein dedupe summary now uses total input titles as the denominator instead of the deduped result count, giving a more accurate percentage - Season validation with empty array: Fixed a crash when
dedupeModereceived a title with no specific seasons to validate against - Media title fallback: Removed an unnecessary title fallback that could produce undefined/blank titles in request responses
Breaking Changes
passRatein dedupe summary now divides by total input titles rather than deduped results — the percentage will be lower if duplicate titles were in the input list
What's Changed
- npm(deps): bump axios from 1.13.6 to 1.14.0 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/69
- fix: cache media details to prevent undefined media titles by @jhomen368 in https://github.com/jhomen368/overseerr-mcp/pull/72
- Fix/autorequest dedupe bug by @jhomen368 in https://github.com/jhomen368/overseerr-mcp/pull/73
- npm(deps-dev): bump @types/node from 25.5.0 to 25.5.2 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/74
- npm(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/76
- fix(search): use item.mediaInfo in compact format status by @jhomen368 in https://github.com/jhomen368/overseerr-mcp/pull/77
- npm(deps-dev): bump typescript from 5.9.3 to 6.0.2 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/70
- npm(deps): bump @modelcontextprotocol/sdk from 1.27.1 to 1.29.0 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/75
Full Changelog: https://github.com/jhomen368/overseerr-mcp/compare/v2.1.1...v2.1.2
Fixed HTTP/SSE reconnection stability and `request_media` seasons array handling crashes.
Full changelog
[2.1.1] - 2026-03-25
Fixed
- HTTP/SSE reconnection stability: Fixed "Error: Already connected to a transport" crash when an MCP client reconnects after disconnecting in HTTP mode
- Added single-client enforcement: returns HTTP 409 Conflict with
Retry-Afterheader if a client is already connected - Properly cleans up server state when a client disconnects via
req.on('close') - Resets connection flag on failed connection attempts to prevent permanent lockout
- Prevents race condition by setting the connection flag before the async
connect()call
- Added single-client enforcement: returns HTTP 409 Conflict with
request_mediaseasons array handling: Fixed "seasonsToRequest.forEach is not a function" crash when callingrequest_mediawith an explicit seasons array (e.g.seasons: [1, 2]) — the MCP SDK can deliver array parameters in non-standard formats; added runtime type checking to normalize them correctly before processing
What's Changed
- fix(http): enforce single SSE client with 409, cleanup on disconnect,… by @jhomen368 in https://github.com/jhomen368/overseerr-mcp/pull/66 (thanks for @dkbnz for finding this in https://github.com/jhomen368/overseerr-mcp/pull/65)
Full Changelog: https://github.com/jhomen368/overseerr-mcp/compare/v2.1.0...v2.1.1
- Runtime dependency `express` upgraded from ^4.18.2 to ^5.1.0 (major version bump).
- `get_services` tool: list configured Radarr/Sonarr servers with detailed metadata.
- `get_service_details` tool: retrieve quality profiles, root folders, tags, and language profiles for a specific server.
Full changelog
[2.1.0] - 2026-03-16
Added
-
get_servicesTool: List configured Radarr/Sonarr servers from the Seerr/Overseerr instance- Returns server details:
id,name,isDefault,is4k, active directory, profile ID, and tags - Supports optional
serviceTypefilter (radarrorsonarr); omit for both - Anime-specific overrides included when configured (
activeAnimeDirectory,activeAnimeProfileId,activeAnimeTags) - Results cached for 10 minutes (
CACHE_SERVICES_TTLenv var, default: 10 min)
- Returns server details:
-
get_service_detailsTool: Get quality profiles, root folders, tags, and language profiles for a specific server- Required
serviceTypeparameter (radarrorsonarr) - Optional
serverIdparameter (default:0; useget_servicesto retrieve IDs) - Sonarr responses include
languageProfilesarray - Results cached for 10 minutes (
CACHE_SERVICEDETAILS_TTLenv var, default: 10 min)
- Required
-
Service Discovery Type Definitions (
src/types.ts)- New types:
ServiceConfig,QualityProfile,RootFolder,Tag,LanguageProfile,ServiceDetailsResponse - New input types:
GetServicesArgsandGetServiceDetailsArgs
- New types:
-
New Cache Types:
servicesandserviceDetailsadded to caching layer- TTL: 10 minutes each (configurable via
CACHE_SERVICES_TTLandCACHE_SERVICEDETAILS_TTL) - Both types tracked in hit/miss stats and visible at
/cache/statsendpoint
- TTL: 10 minutes each (configurable via
-
MCP Metadata Updated:
package.jsonmcp.server.toolsdeclaration now lists all 6 tools- Improves discoverability on LobeHub and compatible MCP clients
Changed
- Express updated to v5: Runtime dependency
expressbumped from^4.18.2to^5.1.0@types/expressdev dependency updated to^5.0.5
- Node types updated:
@types/nodedev dependency updated to^25.0.3 - Tool count: Server now exposes 6 tools (up from 4)
What's Changed
- npm(deps): bump hono from 4.11.8 to 4.12.0 in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/46
- ci: bump aquasecurity/trivy-action from 0.34.0 to 0.34.1 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/47
- npm(deps): bump axios from 1.13.5 to 1.13.6 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/50
- npm(deps): bump hono from 4.12.0 to 4.12.4 in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/53
- npm(deps): bump @modelcontextprotocol/sdk from 1.26.0 to 1.27.1 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/51
- npm(deps-dev): bump @types/node from 25.2.3 to 25.3.3 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/52
- ci: bump docker/setup-qemu-action from 3 to 4 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/60
- ci: bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/59
- ci: bump docker/login-action from 3 to 4 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/57
- ci: bump docker/build-push-action from 6 to 7 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/56
- npm(deps): bump @hono/node-server from 1.19.9 to 1.19.10 in the npm_and_yarn group across 1 directory by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/54
- npm(deps-dev): bump @types/node from 25.3.3 to 25.3.5 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/55
- ci: bump aquasecurity/trivy-action from 0.34.1 to 0.35.0 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/58
- npm(deps-dev): bump @types/node from 25.3.5 to 25.5.0 by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/62
- npm(deps): bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/jhomen368/overseerr-mcp/pull/63
- feat: Add get_services and get_service_details to available MCP tools by @BronsonZ in https://github.com/jhomen368/overseerr-mcp/pull/61
- chore(release): bump version to 2.1.0 and update changelog by @jhomen368 in https://github.com/jhomen368/overseerr-mcp/pull/64
New Contributors
- @BronsonZ made their first contribution in https://github.com/jhomen368/overseerr-mcp/pull/61
Full Changelog: https://github.com/jhomen368/overseerr-mcp/compare/v2.0.0...v2.1.0
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.