Skip to content

jhomen368/overseerr-mcp

MCP Developer Tools

A 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

JavaScript Latest v2.2.0 · 1mo ago Security brief →

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 →
Upgrade now
v2.2.0 Breaking risk
Dependencies

Streamable HTTP + session hardening + deps

Review required
v2.1.3 Bug fix
Dependencies

Request API path fix

v2.1.2 Breaking risk
Breaking changes
  • `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_FOUND reason code instead of treating the whole search as NOT_FOUND
  • Compact search status accuracy: search_media in compact format now correctly reflects library availability by reading mediaInfo from search results — titles already in Plex will show AVAILABLE instead of NOT_REQUESTED
  • autoRequest summary counts: Fixed incorrect pass/blocked/actionable counts caused by double-wrapped processor returns; summary now always reflects the actual dedupe results
  • autoRequest result field: Fixed the autoRequests result object not being populated correctly when autoRequest: true is 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: passRate in 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 dedupeMode received 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

  • 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

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

v2.1.1 Bug fix

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-After header 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
  • request_media seasons array handling: Fixed "seasonsToRequest.forEach is not a function" crash when calling request_media with 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

v2.1.0 Breaking risk
Breaking changes
  • Runtime dependency `express` upgraded from ^4.18.2 to ^5.1.0 (major version bump).
Notable features
  • `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_services Tool: 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 serviceType filter (radarr or sonarr); omit for both
    • Anime-specific overrides included when configured (activeAnimeDirectory, activeAnimeProfileId, activeAnimeTags)
    • Results cached for 10 minutes (CACHE_SERVICES_TTL env var, default: 10 min)
  • get_service_details Tool: Get quality profiles, root folders, tags, and language profiles for a specific server

    • Required serviceType parameter (radarr or sonarr)
    • Optional serverId parameter (default: 0; use get_services to retrieve IDs)
    • Sonarr responses include languageProfiles array
    • Results cached for 10 minutes (CACHE_SERVICEDETAILS_TTL env var, default: 10 min)
  • Service Discovery Type Definitions (src/types.ts)

    • New types: ServiceConfig, QualityProfile, RootFolder, Tag, LanguageProfile, ServiceDetailsResponse
    • New input types: GetServicesArgs and GetServiceDetailsArgs
  • New Cache Types: services and serviceDetails added to caching layer

    • TTL: 10 minutes each (configurable via CACHE_SERVICES_TTL and CACHE_SERVICEDETAILS_TTL)
    • Both types tracked in hit/miss stats and visible at /cache/stats endpoint
  • MCP Metadata Updated: package.json mcp.server.tools declaration now lists all 6 tools

    • Improves discoverability on LobeHub and compatible MCP clients

Changed

  • Express updated to v5: Runtime dependency express bumped from ^4.18.2 to ^5.1.0
    • @types/express dev dependency updated to ^5.0.5
  • Node types updated: @types/node dev 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.

About

Stars
18
Forks
10
Languages
JavaScript TypeScript Dockerfile
Downloads/week
3 ↑17%
NPM Maintainers
2
Contributors
4

Install & Platforms

Install via
npm docker docker-compose shell-script

Community & Support

Beta — feedback welcome: [email protected]