film-tv-mcp
Provides IMDb ratings and vote counts through OMDb/MDBList, and supports resolving IMDb title and person IDs to TMDB entries.
Includes Letterboxd scores in merged ratings via MDBList.
Surfaces Metacritic critic Metascores and user scores through OMDb/MDBList as part of merged ratings.
Includes MyAnimeList scores in merged ratings via MDBList.
Surfaces Rotten Tomatoes Tomatometer critic scores and audience scores through OMDb/MDBList as part of merged ratings.
Includes Trakt scores in merged ratings via MDBList.
Supports resolving Wikidata IDs to TMDB movie, TV, or person entries through external-ID lookup.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
film-tv-mcp
An MCP server for movie and TV lookups: search, full title and person detail, episode lists, discovery by genre, year, language or streaming service, where to watch in any country, and critic/audience scores from IMDb, Rotten Tomatoes, Metacritic, Letterboxd and more. Twelve read-only tools, built on the Python MCP SDK (FastMCP). Runs as a local stdio server or as a containerized Streamable HTTP service with bearer auth.
Providers:
Provider | Required | Gives you |
yes (free key) | Everything except third-party scores. Where-to-watch data is from JustWatch. | |
optional | IMDb rating + votes, Rotten Tomatoes Tomatometer, Metascore. | |
optional | The above plus RT audience score, Metacritic users, Letterboxd, Trakt, MyAnimeList, RogerEbert.com. |
Rotten Tomatoes has no public API (the official one is a paid partner licence), so its scores come through OMDb or MDBList.
Tool Reference
Titles are addressed by tmdb_id + kind (movie or tv). Every result
row prints them as [movie 550] / [tv 1399], so a model can pass them
straight back.
Tool | Parameters | Description |
|
| Find titles or people by name. |
|
| One call for genres, runtime, status, classification + release dates for the region, director/creators, cast, IMDb/TVDB ids, trailer, overview and where to watch. TV adds seasons, network, last/next episode. |
|
| Episodes: number, title, air date, runtime, rating, synopsis. Season 0 = specials. |
|
| Find titles by criteria. Genres and providers are names ( |
|
| Trending titles or people, |
|
|
|
|
| "If you liked this." |
|
| Stream / free / rent / buy services in a region; |
|
| Bio, birth/death, IMDb id, best-known acting and crew credits. |
|
| IMDb ( |
|
| Scores from every configured provider, merged (MDBList preferred, OMDb fills gaps). A failing provider becomes a note, not an error. |
|
| Configured providers, region, language; |
search(query="severance") # → [tv 95396]
title_details(tmdb_id=95396, kind="tv") # cast, seasons, next episode, where to watch
discover(kind="tv", genres="Comedy", providers="Stan,Binge", sort_by="rating")
where_to_watch(tmdb_id=550, region="all") # which countries stream it
ratings(tmdb_id=550) # IMDb, RT critics + audience, Metacritic, LetterboxdRelated MCP server: MCP JustWatch Server
Setup
TMDB (required): create a free account, then Settings → API → request an API key. Use the API Read Access Token (v4, a long JWT) as
TMDB_API_TOKEN; the short v3 API Key also works asTMDB_API_KEY.OMDb (optional): request a key at omdbapi.com (free tier: 1,000 requests/day) and set
OMDB_API_KEY.MDBList (optional): sign in at mdblist.com, copy the API key from Preferences and set
MDBLIST_API_KEY. The free tier has a daily request cap;source_status(check_live=True)shows usage.Set
WATCH_REGION(e.g.AU) andTMDB_LANGUAGE(e.g.en-AU) for your country.
The server starts without any key: TMDB tools return a setup error, and
ratings falls back to TMDB's own score until OMDb or MDBList is set.
Quick start (stdio)
Most MCP clients (Claude Code, Claude Desktop, VS Code, …) spawn stdio servers directly. With uv installed:
// e.g. Claude Desktop claude_desktop_config.json / Claude Code .mcp.json
{
"mcpServers": {
"film-tv": {
"command": "uvx",
"args": ["film-tv-mcp", "--stdio"],
"env": {
"TMDB_API_TOKEN": "your-read-access-token",
"WATCH_REGION": "AU",
"OMDB_API_KEY": "optional",
"MDBLIST_API_KEY": "optional"
}
}
}
}stdio mode has no network surface and skips bearer auth — the client owns the process.
HTTP mode (container)
The bundled Containerfile builds a Streamable HTTP server at /mcp
(stateless — restarts never strand client sessions). HTTP mode refuses
to start without MCP_BEARER_TOKEN; clients authenticate with
Authorization: Bearer <token>.
podman build -t film-tv-mcp . # or: docker build -t film-tv-mcp .
podman run -d --name film-tv-mcp -p 8337:8337 \
-e TMDB_API_TOKEN=... -e WATCH_REGION=AU -e MCP_BEARER_TOKEN=some-long-random-token \
film-tv-mcpfilm_tv_mcp.healthcheck does a full HTTP round-trip to /mcp (the 401
counts as alive — it proves the event loop responds); wire it to your
container healthcheck with a restart-on-unhealthy policy. Terminate TLS
at a reverse proxy — the server itself speaks plain HTTP.
Configuration
Env var | Default | Purpose |
| (empty) | TMDB v4 read access token (bearer). Preferred. |
| (empty) | TMDB v3 API key, used only when no token is set. |
| (empty) | Optional OMDb key for the |
| (empty) | Optional MDBList key for the |
|
| ISO 3166-1 country for where-to-watch, classification and release dates. Every tool with a |
|
| Language for titles and overviews (not |
|
| HTTP listen port. |
| (empty) | Required in HTTP mode; server refuses to start without it. Not used in |
Architecture notes
One thread-safe
httpx.Clientper provider. TMDB detail calls fold credits, external ids, videos, certifications and watch providers into one request withappend_to_response.Genre and provider name→id tables are fetched once per process and cached. Name matching is case-insensitive; an exact name wins, otherwise every name containing the term matches (
netflixalso matches "Netflix Standard with Ads").Every tool is read-only: nothing writes to TMDB, OMDb or MDBList.
Sync tool handlers are offloaded to a worker thread (the MCP SDK runs sync tools inline on the event loop, so a slow upstream call would otherwise stall every concurrent request). Per-request log lines (
tool= outcome= duration_ms= rss_mib=) go to stderr.API-key values are redacted from error messages before they can reach logs or clients.
Testing
# Tiers 1 + 2 — pure helpers + mocked HTTP (fast, no network, no keys)
uv run --extra test pytest tests/test_tmdb_client.py tests/test_ratings_client.py -v
# Tier 3 — live, read-only round-trips. Each provider's tests skip
# without its key.
TMDB_API_TOKEN=... OMDB_API_KEY=... MDBLIST_API_KEY=... \
uv run --extra test pytest tests/test_integration.py -vAttribution
This product uses the TMDB API but is not endorsed or certified by TMDB. Where-to-watch data is provided by JustWatch via TMDB.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
OMDb MCP — IMDB-derived movie / TV / episode data (BYO key)
The media memory layer for AI agents and their humans. Your AI client can search your collection, add and log what you've finished, update ratings and lists, and find patterns across everything you've read, watched, played, and listened to.
Movie and series ranking as MCP tools: top titles, search, lookup by IMDb id. Free, no key.
Search movies/TV by mood, genre, score, cast, and awards, filtered to what's streaming near you.
Related MCP Servers
AlicenseAqualityDmaintenanceGiving AI assistants the ability to search movies and TV shows, find torrents with magnet links, check streaming availability, and explore cast/crew metadata.4010115 npm16MIT- FlicenseAqualityCmaintenanceEnables searching for movies and TV shows and retrieving streaming availability data across multiple platforms and countries.33-
- AlicenseNot gradedqualityDmaintenanceProvides 34 tools to search and discover movies, TV shows, and people from The Movie Database (TMDB) API.76 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables natural-language discovery and resolution of movies and TV shows into verified canonical media, then requesting them through an existing Seerr/Radarr/Sonarr stack. Exposes these capabilities via MCP tools and a REST API for AI agents.MIT