# TMDB MCP Server (npm · tmdb-mcp)

MCP server for The Movie Database (TMDB) with IMDb/Rotten Tomatoes/Metacritic ratings via OMDb.

- Trust score: 84/100 (high trust)
- Change this week: −10
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- mcpb · `tmdb-mcp.mcpb`: 47/100, [markdown](https://verifymcp.io/servers/grinv-tmdb-mcp/https-github-com-grinv-tmdb-mcp-releases-download-v0-10-1-tmdb-mcp-mcpb.md), [page](https://verifymcp.io/servers/grinv-tmdb-mcp/https-github-com-grinv-tmdb-mcp-releases-download-v0-10-1-tmdb-mcp-mcpb)
- npm · `tmdb-mcp`: 84/100 (this document), [markdown](https://verifymcp.io/servers/grinv-tmdb-mcp/tmdb-mcp.md), [page](https://verifymcp.io/servers/grinv-tmdb-mcp/tmdb-mcp)

## Channel facts

- Registry: `npm`
- Package: `tmdb-mcp`
- Version: `0.10.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 3 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to Grinv/tmdb-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 3 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 76/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 8735 tokens (~281/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### Claude

```bash
claude mcp add grinv-tmdb-mcp -- npx -y tmdb-mcp
```

### Codex

```bash
codex mcp add grinv-tmdb-mcp -- npx -y tmdb-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "grinv-tmdb-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "tmdb-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add grinv-tmdb-mcp --command npx --arg -y --arg tmdb-mcp
```

### Hermes

```yaml
mcp_servers:
  grinv-tmdb-mcp:
    command: "npx"
    args: ["-y", "tmdb-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "grinv-tmdb-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "tmdb-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 83, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-08-01 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 67, +26)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 41, 0)

- [functional] Package version: 0.8.1 → 0.10.1

### 2026-07-29 (score 41, −53)

- [security regression] Malware scan: pass → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Package version: 0.8.1 → 0.9.0

### 2026-07-27 (score 94, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 94)

First indexed and scored.

## MCP tools (31)

### `search_movies` (~312 tokens)

Search movies

Search TMDB movies by title; returns compact summaries with the TMDB id that the other movie tools (get_movie, get_movie_credits, …) require, plus pagination info. Use this over search_multi when you already know the result is a movie. `region` here only picks which country's release_date is shown per result (e.g. a title's US vs. India theatrical date) — verified live, it does not filter which movies match or reorder them; for actual region-based availability use get_watch_providers instead.

Input parameters:

- `include_adult` (boolean): Include adult (NSFW) results. Defaults to false.
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `query` (string, required): Movie title to search for.
- `region` (string): ISO-3166-1 country code for region-specific results (default 'US').
- `year` (integer): Bias results toward this release year — TMDB's search 'year' filter is soft: some results outside this year can still appear (unlike discover_movies' year filter, a hard primary_release_year match).…

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `search_tv` (~179 tokens)

Search TV shows

Search TMDB TV shows by name; returns compact summaries with the TMDB id that get_tv and the other TV tools require. Use this over search_multi when you already know the result is a TV show.

Input parameters:

- `include_adult` (boolean): Include adult (NSFW) results. Defaults to false.
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `query` (string, required): TV show name to search for.
- `year` (integer): Filter by first-air-date year.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `search_multi` (~188 tokens)

Search everything

Search movies, TV shows and people in one call. Each result carries a media_type ('movie' | 'tv' | 'person') so you can route to the right get_* tool. Use when the user's query could be any of these; if you already know the type, search_movies/search_tv/search_people are more precise.

Input parameters:

- `include_adult` (boolean): Include adult (NSFW) results. Defaults to false.
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `query` (string, required): Free-text query.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `search_people` (~173 tokens)

Search people

Search TMDB people (actors, directors, crew) by name; returns the TMDB id needed by get_person plus their top 5 best-known titles (known_for). Use this over search_multi when you already know the result is a person.

Input parameters:

- `include_adult` (boolean): Include adult (NSFW) results. Defaults to false.
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `query` (string, required): Person name to search for.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `search_keywords` (~87 tokens)

Search keywords

Resolve keyword names to TMDB keyword ids (e.g. 'time travel', 'based on true story'). Feed the ids into discover_movies/discover_tv via with_keywords / without_keywords.

Input parameters:

- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `query` (string, required): Keyword text to look up.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `search_companies` (~139 tokens)

Search production companies

Resolve a production company's name to its TMDB numeric id (e.g. 'A24', 'Pixar'). Feed the id into discover_movies/discover_tv via with_companies. Company names aren't unique — TMDB can have several unrelated companies sharing the same name (e.g. two different 'A24's, one US and one GB) — check origin_country and logo_url to tell rows apart when a name matches more than one.

Input parameters:

- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `query` (string, required): Company name to look up.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `search_watch_providers` (~324 tokens)

Search streaming/rental providers

Resolve a streaming/rental/purchase service's name (e.g. 'Netflix', 'Disney Plus') to its TMDB numeric provider id. Feed the id into discover_movies/discover_tv's with_watch_providers (with watch_region set to the same region given here, if any) to find top titles on that service — TMDB has no name-based lookup of its own for this, only numeric ids, and there are hundreds of providers (269+ for the US alone, more elsewhere), so don't guess an id. A provider's id and even whether it's offered at all can differ by region (e.g. a service bundled as a channel add-on in one country vs. standalone in another) — pass watch_region to match what discover_movies/discover_tv will actually see; omitting it searches the full global provider list instead, which may include ids not valid for the region the caller actually cares about.

Input parameters:

- `media_type` (string, required): Whether to search movie or TV providers — a service can be offered for one media type but not the other (its id stays the same either way; a movie-only or TV-only service just returns nothing from th…
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `query` (string, required): Service name (or part of it) to look up, e.g. 'Netflix'.
- `watch_region` (string): Two-letter ISO-3166-1 country code, e.g. 'US'.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `get_movie` (~454 tokens)

Get movie details

Get full details for one movie by TMDB id: overview, genres, runtime, budget/revenue, vote average, the age/content rating (certification) for `region` — falling back to the US rating, then any available country, when `region` has none; check `certification_region` to see which one was used — and links (TMDB + IMDb). By default also includes IMDb/Rotten Tomatoes/Metacritic ratings, an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc.; free text, not a structured count, for the whole film/show, not one person), and OMDb's own age rating (`ratings.rated` — separate from this tool's own `certification` above; the two can differ) from OMDb (set include_ratings=false to skip); if unavailable (no OMDB_API_KEY, no imdb_id, or the OMDb lookup fails), `ratings` degrades to `{found:false, reason}` instead of failing the call. If you only need the headline info (title/year/genres/vote average) — for one id or several — use get_movies instead; it's trimmed on purpose and skips the rest of this payload. Get the id from search_movies.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `include_ratings` (boolean): If true (default), enrich the result with IMDb/Rotten Tomatoes/Metacritic ratings plus an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc., whatever OMDb aggregates;…
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
- `region` (string): ISO-3166-1 country code for region-specific results (default 'US').

Output parameters:

- `budget_usd`
- `certification`
- `certification_region` (string)
- `certifications` (object)
- `collection`
- `genres` (array)
- `homepage`
- `id` (number)
- `imdb_id`
- `imdb_url`
- `media_type` (string)
- `origin_country` (array)
- `original_language`
- `original_title` (string)
- `overview`
- `popularity`
- `poster_url`
- `production_companies` (array)
- `ratings`
- `release_date`
- `revenue_usd`
- `runtime_minutes`
- `spoken_languages` (array)
- `status`
- `tagline`
- `title` (string)
- `tmdb_url` (string)
- `vote_average`
- `vote_count`
- `year`

### `get_tv` (~746 tokens)

Get TV show details

Get full details for one TV show by TMDB id: overview, genres, seasons/episodes counts, networks, created_by (the show's creator(s)), status, the age/content rating (certification) for `region` — falling back to the US rating, then any available country, when `region` has none; check `certification_region` to see which one was used — and links. By default also includes IMDb/Rotten Tomatoes/Metacritic ratings, an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc.; free text, not a structured count, for the whole film/show, not one person), and OMDb's own age rating (`ratings.rated` — separate from this tool's own `certification` above; the two can differ) from OMDb (set include_ratings=false to skip); if unavailable (no OMDB_API_KEY, no imdb_id, or the OMDb lookup fails), `ratings` degrades to `{found:false, reason}` instead of failing the call. Set expand_episodes=true to also pull every season's episode list in one extra request instead of calling get_tv_season per season. If you only need the headline info (name/year/genres/vote average, season/episode counts) — for one id or several — use get_tv_shows instead; it's trimmed on purpose and skips the rest of this payload. Get the id from search_tv.

Input parameters:

- `expand_episodes` (boolean): If true, also fetch every season's full episode list (name, air date, runtime, rating) as `seasons_detail`, in one extra request — use this instead of calling get_tv_season once per season when you n…
- `id` (integer, required): TMDB numeric id.
- `include_ratings` (boolean): If true (default), enrich the result with IMDb/Rotten Tomatoes/Metacritic ratings plus an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc., whatever OMDb aggregates;…
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
- `region` (string): ISO-3166-1 country code for region-specific results (default 'US').

Output parameters:

- `certification`
- `certification_region` (string)
- `certifications` (object)
- `created_by` (array)
- `episode_run_time` (array)
- `first_air_date`
- `genres` (array)
- `homepage`
- `id` (number)
- `imdb_id`
- `imdb_url`
- `in_production`
- `last_air_date`
- `last_episode_to_air`
- `media_type` (string)
- `name` (string)
- `networks` (array)
- `next_episode_to_air`
- `number_of_episodes`
- `number_of_seasons`
- `original_language`
- `original_name` (string)
- `overview`
- `popularity`
- `poster_url`
- `ratings`
- `seasons` (array)
- `seasons_detail` (array)
- `status`
- `tagline`
- `tmdb_url` (string)
- `type`
- `vote_average`
- `vote_count`

### `get_movies` (~312 tokens)

Get compact movie card(s)

Get a compact card — title, year, genres, vote average, and (opt-in) ratings — for 1-20 movies by TMDB id in one call. Deliberately trimmed (no overview, cast, budget, certifications, production companies, etc.): use this for a single id too when you only need that headline info and not the full get_movie payload, not just for checking many at once. Call get_movie instead when you need the full details for a title (including region-specific certification). A bad/unknown id never fails the whole call — that entry comes back `{id, found:false, reason}` instead, in the same order as `ids`.

Input parameters:

- `ids` (array, required): TMDB movie ids to fetch (1-20). Get them from search_movies/discover_movies/get_similar/get_movie_recommendations/etc.
- `include_ratings` (boolean): If true, enrich every card with compact IMDb/Rotten Tomatoes/Metacritic ratings from OMDb (requires OMDB_API_KEY) — one extra OMDb lookup per id, so a large batch means a burst of OMDb calls; mind OM…
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.

Output parameters:

- `results` (array)

### `get_tv_shows` (~348 tokens)

Get compact TV show card(s)

Get a compact card — name, year, genres, vote average, season/episode counts, and (opt-in) ratings — for 1-20 TV shows by TMDB id in one call. A quick way to spot short/miniseries shows (low episode count) across many candidates without a per-title get_tv call. Deliberately trimmed otherwise (no overview, the actual episode list, networks, certifications, etc.): use this for a single id too when you only need that headline info and not the full get_tv payload, not just for checking many at once. Call get_tv instead when you need the full details for a title (including region-specific certification). A bad/unknown id never fails the whole call — that entry comes back `{id, found:false, reason}` instead, in the same order as `ids`.

Input parameters:

- `ids` (array, required): TMDB TV show ids to fetch (1-20). Get them from search_tv/discover_tv/get_similar/get_tv_recommendations/etc.
- `include_ratings` (boolean): If true, enrich every card with compact IMDb/Rotten Tomatoes/Metacritic ratings from OMDb (requires OMDB_API_KEY) — one extra OMDb lookup per id, so a large batch means a burst of OMDb calls; mind OM…
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.

Output parameters:

- `results` (array)

### `get_person` (~126 tokens)

Get person details

Get full details for one person by TMDB id: biography, birthday/deathday, department, and links (TMDB + IMDb). Does not include filmography — use get_person_credits for that. Get the id from search_people or a credits list.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.

Output parameters:

- `also_known_as` (array)
- `biography`
- `birthday`
- `deathday`
- `gender`
- `homepage`
- `id` (number)
- `imdb_id`
- `imdb_url`
- `known_for_department`
- `name` (string)
- `place_of_birth`
- `popularity`
- `profile_url`
- `tmdb_url` (string)

### `get_movie_credits` (~64 tokens)

Get movie cast & crew

List the top-billed cast (up to 20) and the headline crew (director, writers, composer, DoP, …) of a movie by TMDB id. Get the id from search_movies.

Input parameters:

- `id` (integer, required): TMDB numeric id.

Output parameters:

- `cast` (array)
- `crew` (array)

### `get_tv_credits` (~176 tokens)

Get TV cast & crew

List the main cast (up to 20) and production crew (executive producers, producers, composer, DoP, …) of a TV show by TMDB id. TMDB's show-level TV credits data does not reliably expose director/writer/creator credits — verified live across several shows (Breaking Bad, Stranger Things, Chernobyl, The Queen's Gambit): each show's actual creator/head-writer/director appears only as 'Executive Producer', never as 'Writer', 'Director' or 'Creator'. For who created the show, use get_tv's own `created_by` field instead; for a specific episode's actual director/writer (which TMDB does track reliably at that level), use get_tv_episode. Get the id from search_tv.

Input parameters:

- `id` (integer, required): TMDB numeric id.

Output parameters:

- `cast` (array)
- `crew` (array)

### `get_movie_recommendations` (~129 tokens)

Get movie recommendations

Get movies TMDB recommends for the given movie id, based on co-viewing/personalization data (what users who liked this also liked) — usually the more thematically relevant list. Prefer this over get_similar as the default choice; get_similar matches on shared genres/keywords, a blunter heuristic that can surface tonally unrelated titles. Get the id from search_movies.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `get_tv_recommendations` (~130 tokens)

Get TV recommendations

Get TV shows TMDB recommends for the given show id, based on co-viewing/personalization data (what users who liked this also liked) — usually the more thematically relevant list. Prefer this over get_similar as the default choice; get_similar matches on shared genres/keywords, a blunter heuristic that can surface tonally unrelated titles. Get the id from search_tv.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `get_similar` (~322 tokens)

Get similar titles

Get titles TMDB considers similar to a given movie or TV show, based on shared genres and keywords — a blunter heuristic than get_movie_recommendations'/get_tv_recommendations' behavioral (co-viewing) data, so results can still be thematically noisy (matching on a shared keyword despite an unrelated tone or plot). Results sharing only the source title's broadest genre (e.g. two titles that are both merely tagged 'Drama' among several genres) are filtered out per page, since a title with a common genre can otherwise return results spanning TMDB's entire catalog; a page can come back thin or empty for a niche title once that filter applies. `total_pages`/`total_results` reflect TMDB's raw, pre-filter counts, not how many titles actually pass this filter — don't use them to gauge how many genuinely similar titles exist or when to stop paging; expect per-page result counts well under 20, sometimes 0 (verified live: a real title returned total_pages:23897/total_results:477939 but only 3-6 actual results per page). Try recommendations first for thematically closer picks; use this when you specifically want genre/keyword-adjacent titles. Get the id from search_movies/search_tv.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `media_type` (string, required): Media type: 'movie' or 'tv'.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `get_reviews` (~111 tokens)

Get user reviews

Get user reviews for a movie or TV show (author, their rating if the reviewer left one — it can be null, and the review text, clipped to ~1500 characters). Get the id from search_movies/search_tv.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `media_type` (string, required): Media type: 'movie' or 'tv'.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `get_collection` (~114 tokens)

Get a movie collection

Get a movie collection/franchise and all its parts in release order (e.g. the whole 'The Dark Knight Collection'). Get the collection id from a movie's `collection` field in get_movie.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.

Output parameters:

- `id` (number)
- `name` (string)
- `overview`
- `parts` (array)
- `poster_url`

### `get_person_credits` (~461 tokens)

Get person filmography

List the movies and TV shows a person is known for (cast roles and crew jobs), most popular first, capped to the top 25 of each by default; talk-show/awards-show guest appearances ('Self'/'Himself'/'Herself') and repeat entries for the same title are excluded so the list stays about actual roles. A title with several crew jobs (writer AND director AND producer on one film) still only counts once against the crew cap. Cast entries include a vote_average; crew entries (director, writer, …) do not — call get_movie/get_tv on the id for a crew credit's rating. Pass department (e.g. 'Directing') to restrict crew to just that role — the reliable way to get someone's complete filmography in one department when their other departments would otherwise compete for the same cap; for a handful of exceptionally prolific people even that isn't enough (e.g. 50+ directing credits), so raise `limit` too when department alone still looks short. Use for 'what has this actor/director been in'. This tool has no genre filter — for 'which of X's movies are animated/horror/etc.' use discover_movies instead, combining with_cast/with_crew/with_people with with_genres (discover_tv has no equivalent — it can't filter by person at all — so for a person's TV work in one genre, call this tool and check the returned media_type 'tv' entries' genres yourself, e.g. via get_tv_shows). Get the id from search_people.

Input parameters:

- `department` (string): Restrict crew credits to this department (e.g. 'Directing' for a director's filmography). Without it, a multi-hyphenate's OTHER departments (writing, producing, …) compete for the same 25-credit cap…
- `id` (integer, required): TMDB numeric id.
- `limit` (integer): Max cast entries and max crew entries to return (each capped separately; default 25). Raise this for an exceptionally prolific person — e.g. a director with 50+ films — where even a department filter…

Output parameters:

- `cast` (array)
- `crew` (array)

### `get_trending` (~160 tokens)

Get trending titles

Get what's trending on TMDB. media_type selects movies, TV, people, or all; time_window is the trending period (today vs this week). Good for 'what's popular right now'. Each result row carries its own media_type ('movie' | 'tv' | 'person') — check it to route to the right get_* tool, especially when media_type is left at 'all'.

Input parameters:

- `media_type` (string): Which kind of entity to rank. Defaults to 'all'.
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `time_window` (string): Trending period: 'day' or 'week'. Defaults to 'week'.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `get_movie_genres` (~43 tokens)

List movie genres

List TMDB movie genres with their numeric ids and names (reference data; rarely changes). Feed the ids into discover_movies' with_genres/without_genres.

Output parameters:

- `genres` (array)

### `get_tv_genres` (~43 tokens)

List TV genres

List TMDB TV genres with their numeric ids and names (reference data; rarely changes). Feed the ids into discover_tv's with_genres/without_genres.

Output parameters:

- `genres` (array)

### `discover_movies` (~1237 tokens)

Discover movies (filters)

Find movies by structured filters instead of a title query: genres (include/exclude), year or release-date range, rating range, vote count, runtime range, original language, cast/crew/people, companies, keywords, watch providers, certification, a region code (minor effect only — see its own description), an adult-content toggle, and sort order. certification and with_watch_providers each error if given with no certification_country/watch_region at all, but an unrecognized certification_country still silently disables the filter instead of erroring — see certification's own description. Use for 'popular sci-fi from the 1990s rated above 7 available on Netflix', or for a specific person's work in one genre — 'which of this director's/actor's/composer's films are animated' — via with_crew/with_cast/with_people + with_genres together; get_person_credits has no genre filter, so this combination is the right tool for that question, not that one. Resolve ids with get_movie_genres, search_people, search_keywords, search_companies, search_watch_providers.

Input parameters:

- `certification` (string): Filter by exact age/content certification, e.g. 'PG-13' (movies) or 'TV-Y7' (TV). Requires certification_country, and a certification_country TMDB doesn't recognize silently disables this filter (ret…
- `certification_country` (string): Country whose certification system the `certification` filter uses, e.g. 'US'.
- `include_adult` (boolean): Include adult (NSFW) results. Defaults to false.
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
- `max_rating` (number): Maximum vote average (0-10).
- `max_runtime` (integer): Maximum runtime in minutes.
- `min_rating` (number): Minimum vote average (0-10). Must be <= max_rating if both are given.
- `min_runtime` (integer): Minimum runtime in minutes. Must be <= max_runtime if both are given.
- `min_votes` (integer): Minimum vote count (filters obscure titles).
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `region` (string): ISO-3166-1 country code. TMDB's docs describe this as picking which country's release date counts as a movie's release date for date-based filtering (year, release_date_gte/lte) — but live testing fo…
- `release_date_gte` (string): Only entries released on/after this date (YYYY-MM-DD).
- `release_date_lte` (string): Only entries released on/before this date (YYYY-MM-DD).
- `sort_by` (string): Sort order. Defaults to TMDB's own default (roughly popularity-based) if omitted.
- `watch_region` (string): Two-letter ISO-3166-1 country code, e.g. 'US'.
- `with_cast` (string): Comma-separated TMDB person ids, restricted to cast (actor) roles. Use search_people to resolve an actor's name to their id.
- `with_companies` (string): Comma-separated TMDB production company ids (use search_companies to resolve names → ids).
- `with_crew` (string): Comma-separated TMDB person ids, restricted to crew roles (e.g. a director). Use search_people to resolve a name to their id.
- `with_genres` (string): Comma-separated TMDB genre ids (AND); get ids from get_movie_genres/get_tv_genres.
- `with_keywords` (string): Comma-separated TMDB keyword ids (use search_keywords to resolve names → ids).
- `with_original_language` (string): ISO-639-1 original-language code, e.g. 'en', 'ja'.
- `with_people` (string): Comma-separated TMDB person ids, matching either a cast or crew role. Use search_people to resolve a name to their id.
- `with_watch_providers` (string): Comma-separated TMDB watch-provider ids (use search_watch_providers to resolve a service name, e.g. 'Netflix', to its numeric id); requires watch_region to also be set.
- `without_genres` (string): Comma-separated TMDB genre ids to exclude; get ids from get_movie_genres/get_tv_genres.
- `without_keywords` (string): Comma-separated TMDB keyword ids to exclude (use search_keywords to resolve names → ids).
- `year` (integer): Release / first-air year.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `discover_tv` (~1255 tokens)

Discover TV shows (filters)

Find TV shows by structured filters (genres, first-air year or date range, rating range, vote count, runtime, language, companies, networks, keywords, watch providers, type, status, certification, an adult-content toggle, sort) — but NOT cast/crew/person: this tool doesn't accept those params for TV at all (calling with them is a validation error, not a silent no-op) because TMDB's own /discover/tv would silently ignore them anyway, unlike /discover/movie; to find TV shows featuring someone, call get_person_credits instead and filter its results to media_type 'tv'. certification and with_watch_providers each error if given with no certification_country/watch_region at all, but an unrecognized certification_country still silently disables the filter instead of erroring — see certification's own description. The TV counterpart of discover_movies; use with_networks for 'HBO shows', with_type='Miniseries' for short/limited series (e.g. 'best miniseries to binge in a weekend'), with_status='Ended' to exclude shows still airing, certification='TV-Y7' + certification_country='US' for 'shows appropriate for a young kid'. Resolve ids with get_tv_genres, search_companies, search_keywords, search_watch_providers.

Input parameters:

- `certification` (string): Filter by exact age/content certification, e.g. 'PG-13' (movies) or 'TV-Y7' (TV). Requires certification_country, and a certification_country TMDB doesn't recognize silently disables this filter (ret…
- `certification_country` (string): Country whose certification system the `certification` filter uses, e.g. 'US'.
- `include_adult` (boolean): Include adult (NSFW) results. Defaults to false.
- `language` (string): Override the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
- `max_rating` (number): Maximum vote average (0-10).
- `max_runtime` (integer): Maximum runtime in minutes.
- `min_rating` (number): Minimum vote average (0-10). Must be <= max_rating if both are given.
- `min_runtime` (integer): Minimum runtime in minutes. Must be <= max_runtime if both are given.
- `min_votes` (integer): Minimum vote count (filters obscure titles).
- `page` (integer): 1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
- `release_date_gte` (string): Only entries released on/after this date (YYYY-MM-DD).
- `release_date_lte` (string): Only entries released on/before this date (YYYY-MM-DD).
- `sort_by` (string): Sort order. Defaults to TMDB's own default (roughly popularity-based) if omitted. TV's vocabulary differs from discover_movies' — 'name'/'first_air_date' instead of 'original_title'/'primary_release_…
- `watch_region` (string): Two-letter ISO-3166-1 country code, e.g. 'US'.
- `with_companies` (string): Comma-separated TMDB production company ids (use search_companies to resolve names → ids).
- `with_genres` (string): Comma-separated TMDB genre ids (AND); get ids from get_movie_genres/get_tv_genres.
- `with_keywords` (string): Comma-separated TMDB keyword ids (use search_keywords to resolve names → ids).
- `with_networks` (string): Comma-separated TMDB TV network ids, e.g. HBO=49, Netflix=213 (verified live). Unlike with_companies/with_keywords/with_people, this server has no name-based resolver for networks — supply the raw TM…
- `with_original_language` (string): ISO-639-1 original-language code, e.g. 'en', 'ja'.
- `with_status` (string): Restrict to this production status, e.g. 'Ended' to exclude shows still airing (a still-airing show's later seasons could still be mediocre or unfinished).
- `with_type` (string): Restrict to this TV type — e.g. 'Miniseries' for short/limited series, excluding documentaries/reality/talk shows/etc. that would otherwise mix into a genre/rating search.
- `with_watch_providers` (string): Comma-separated TMDB watch-provider ids (use search_watch_providers to resolve a service name, e.g. 'Netflix', to its numeric id); requires watch_region to also be set.
- `without_genres` (string): Comma-separated TMDB genre ids to exclude; get ids from get_movie_genres/get_tv_genres.
- `without_keywords` (string): Comma-separated TMDB keyword ids to exclude (use search_keywords to resolve names → ids).
- `year` (integer): Release / first-air year.

Output parameters:

- `page` (number)
- `results` (array)
- `total_pages` (number)
- `total_results` (number)

### `get_watch_providers` (~126 tokens)

Where to watch

Find where a movie or TV show can be streamed, rented or bought in a given country (JustWatch data via TMDB). Returns provider names per access type for that country; if it has no data, returns `available:false` plus `available_regions` to retry with. Get the id from search_movies/search_tv.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `media_type` (string, required): Media type: 'movie' or 'tv'.
- `region` (string): ISO-3166-1 country code for region-specific results (default 'US').

### `get_videos` (~145 tokens)

Get trailers & videos

List trailers, teasers and clips for a movie or TV show; YouTube entries include a watch URL. Get the id from search_movies/search_tv. Results are filtered to the server's configured TMDB_LANGUAGE (default 'en-US') — this tool has no per-call language override, so a title with plenty of videos in other languages can come back with few or none if the server is configured for a different language (verified live: 29 results for a title under 'en-US' vs. 2 under 'de-DE').

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `media_type` (string, required): Media type: 'movie' or 'tv'.

Output parameters:

- `results` (array)

### `find_by_imdb_id` (~140 tokens)

Find by IMDb id

Resolve an IMDb id (e.g. 'tt0133093') to TMDB entities — returns matching movie, TV and person results. Use when you only have an IMDb id and need the TMDB id for the other tools. Only matches whole movies/shows/people: IMDb also assigns 'tt' ids to individual episodes (verified live, e.g. Breaking Bad's pilot 'tt0959621'), which this tool does not resolve — such an id comes back with every result list empty, indistinguishable from a genuinely unknown id.

Input parameters:

- `imdb_id` (string, required): IMDb title (tt…) or name (nm…) id.

Output parameters:

- `movie_results` (array)
- `person_results` (array)
- `tv_results` (array)

### `get_tv_season` (~127 tokens)

Get TV season

Get one season of a TV show (by show id + season number): overview and the episode list with air dates, runtimes and ratings, capped at 50 episodes (`episode_count` reports the true total). Season 0 is usually specials, which can run to hundreds of bonus clips on a long-running show. Use get_tv with expand_episodes=true instead if you need every season's episodes in one call. Get the show id from search_tv.

Input parameters:

- `id` (integer, required): TMDB numeric id.
- `season_number` (integer, required): Season number (0 = specials).

Output parameters:

- `air_date`
- `episode_count` (number)
- `episodes` (array)
- `name`
- `overview`
- `poster_url`
- `season_number`

### `get_tv_episode` (~94 tokens)

Get TV episode

Get one episode of a TV show by show id + season number + episode number: overview, air date, runtime, rating, guest stars (up to 15) and director/writer. Get the show id from search_tv.

Input parameters:

- `episode_number` (integer, required): Episode number within the season.
- `id` (integer, required): TMDB numeric id.
- `season_number` (integer, required): Season number (0 = specials).

Output parameters:

- `air_date`
- `crew` (array)
- `episode_number`
- `guest_stars` (array)
- `name`
- `overview`
- `runtime_minutes`
- `season_number`
- `still_url`
- `vote_average`

### `get_ratings` (~319 tokens)

Get IMDb/RT/Metacritic ratings

Look up IMDb, Rotten Tomatoes and Metacritic ratings, an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc.; free text, not a structured count, for the whole film/show, not one person), and OMDb's own age rating (`rated`), from OMDb by IMDb id (preferred, e.g. 'tt0133093') or by title (+ optional year/type). Prefer get_movie/get_tv when you have a TMDB id — they already include this. Requires OMDB_API_KEY. One of imdb_id or title is required; omitting both returns an error. A no-match lookup is not an error: it returns `{found:false, reason}`.

Input parameters:

- `imdb_id` (string): IMDb title id. Takes precedence over title when both are given.
- `title` (string): Movie/show title (used when imdb_id is absent).
- `type` (string): Restrict a title lookup to this entry type. Verified live: without it, OMDb's own title match can silently prefer one type over another when the exact same title exists as more than one — e.g. a titl…
- `year` (integer): Year, to disambiguate a title.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/grinv-tmdb-mcp/tmdb-mcp#diagnostics

## Score history

- 2026-08-03: 84
- 2026-08-02: 83
- 2026-08-01: 68
- 2026-07-31: 67
- 2026-07-30: 41
- 2026-07-29: 41
- 2026-07-28: 94
- 2026-07-27: 94
- 2026-07-26: 94

## Links

- npm package: https://www.npmjs.com/package/tmdb-mcp
- Socket report: https://socket.dev/npm/package/tmdb-mcp
- Repository: https://github.com/Grinv/tmdb-mcp
- Changelog RSS feed: https://verifymcp.io/servers/grinv-tmdb-mcp/tmdb-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/grinv-tmdb-mcp/tmdb-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/grinv-tmdb-mcp/tmdb-mcp
