Skip to main content
Glama
simentob

TMDB MCP Server

by simentob
README.md
<div align="center">

<img src="https://github.com/simentob.png" width="120" style="border-radius: 50%" />

# 🎬 TMDB MCP Server

**Et Model Context Protocol-prosjekt som gir Claude direkte tilgang til filmdatabasen TMDB**

[![Python](https://img.shields.io/badge/Python-3.12+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://python.org)
[![MCP](https://img.shields.io/badge/MCP-FastMCP-blueviolet?style=for-the-badge)](https://github.com/modelcontextprotocol/python-sdk)
[![TMDB](https://img.shields.io/badge/API-TMDB-01B4E4?style=for-the-badge&logo=themoviedatabase&logoColor=white)](https://developer.themoviedb.org)
[![uv](https://img.shields.io/badge/Pakkebehandler-uv-DE5FE9?style=for-the-badge)](https://github.com/astral-sh/uv)
[![Lisens](https://img.shields.io/badge/Lisens-MIT-green?style=for-the-badge)](LICENSE)

</div>

---

## πŸ€” Hva er dette?

Dette prosjektet kobler **Claude AI** til **The Movie Database (TMDB)** via **Model Context Protocol (MCP)**.

I stedet for Γ₯ sΓΈke manuelt pΓ₯ nettet kan du spΓΈrre Claude direkte i chatten:

> *"Hva trender pΓ₯ film denne uken?"*
> *"Finn anmeldelser av Oppenheimer"*
> *"SΓΈk etter norske thrillere fra 2023"*

Claude kaller riktig verktΓΈy, henter data fra TMDB, og svarer deg β€” alt i samme samtale.

---

## πŸ—οΈ Arkitektur

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Claude Desktop / MCP  β”‚
β”‚         Klient          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚  stdio transport
             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        main.py          β”‚  ← Starter MCP-serveren
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        server.py        β”‚  ← Definerer MCP-verktΓΈyene (FastMCP)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       services.py       β”‚  ← Kaller TMDB REST API
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       TMDB API          β”‚  ← Henter film- og seriedata
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

| Fil | Rolle |
|-----|-------|
| `main.py` | Inngangspunkt β€” starter serveren over stdio |
| `server.py` | Alle MCP-verktΓΈy definert med FastMCP-dekoratorer |
| `services.py` | Rene funksjoner som snakker med TMDB API |

---

## πŸ› οΈ Tilgjengelige verktΓΈy

NΓ₯r Claude er koblet til, har den tilgang til disse verktΓΈyene:

| VerktΓΈy | Beskrivelse |
|---------|-------------|
| πŸ” `tmdb_search_movies` | SΓΈk etter filmer pΓ₯ tittel, Γ₯r, region og sprΓ₯k |
| 🎭 `tmdb_multi_search` | SΓΈk pΓ₯ tvers av filmer, serier og personer |
| πŸ“ˆ `tmdb_trending_search` | Hent det som trender i dag eller denne uken |
| ⭐ `tmdb_movie_reviews` | Hent brukeranmeldelser for en film |
| πŸ“Ί `tmdb_tv_reviews` | Hent brukeranmeldelser for en TV-serie |
| πŸ“ `tmdb_review_details` | Hent fullstendige detaljer for Γ©n anmeldelse via ID |

---

## πŸš€ Kom i gang

### 1. Forutsetninger

- Python 3.12+
- [uv](https://github.com/astral-sh/uv) installert
- En TMDB API-nΓΈkkel (gratis β€” se nedenfor)

### 2. Skaff en TMDB API-nΓΈkkel

1. GΓ₯ til [themoviedb.org](https://www.themoviedb.org/) og opprett en konto
2. GΓ₯ til **Innstillinger β†’ API** og be om en API-nΓΈkkel
3. Kopier **Bearer-tokenet** (den lange nΓΈkkelen kalt "API Read Access Token")

![TMDB abonnementsskjermbilde](public/subscribe_screenshot.png)

### 3. Klon og installer

```bash
git clone https://github.com/simentob/movies-mcp-server.git
cd movies-mcp-server
uv sync
```

### 4. Konfigurer API-nΓΈkkelen

Opprett en `.env`-fil i prosjektmappen:

```env
TMDB_API_KEY="din_bearer_token_her"
```

![.env oppsett](public/env_key.png)

### 5. Start serveren

```bash
uv run main.py
```

Du skal se:
```
Starting MCP server...
```

---

## πŸ–₯️ Koble til Claude Desktop

Rediger konfigurasjonsfilen for Claude Desktop:

**macOS** (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "tmdb-server": {
      "command": "/opt/homebrew/bin/uv",
      "args": [
        "--directory",
        "/ABSOLUTT/STI/TIL/movies-mcp-server",
        "run",
        "main.py"
      ]
    }
  }
}
```

**Windows** (`%APPDATA%\Claude\claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "tmdb-server": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\ABSOLUTT\\STI\\TIL\\movies-mcp-server",
        "run",
        "main.py"
      ]
    }
  }
}
```

Start Claude Desktop pΓ₯ nytt etter lagring. VerktΓΈyene skal nΓ₯ dukke opp i verktΓΈyvelgeren.

---

## πŸ’¬ Eksempelsamtaler

NΓ₯r Claude er koblet til kan du ha samtaler som dette:

> **Du:** Hva trender pΓ₯ film i dag?
>
> **Claude:** *(kaller `tmdb_trending_search`)* Her er dagens trendende filmer: ...

> **Du:** Finn anmeldelser av "Interstellar"
>
> **Claude:** *(kaller `tmdb_search_movies` og deretter `tmdb_movie_reviews`)* Her er anmeldelsene for Interstellar: ...

> **Du:** SΓΈk etter koreanske thrillere
>
> **Claude:** *(kaller `tmdb_multi_search`)* Fant flere koreanske thrillere: ...

---

## πŸ“ Prosjektstruktur

```
movies-mcp-server/
β”œβ”€β”€ main.py           # Starter MCP-serveren
β”œβ”€β”€ server.py         # MCP-verktΓΈy (FastMCP)
β”œβ”€β”€ services.py       # TMDB API-funksjoner
β”œβ”€β”€ pyproject.toml    # Prosjektavhengigheter
β”œβ”€β”€ .env              # API-nΓΈkkel (ikke committet)
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ subscribe_screenshot.png
β”‚   └── env_key.png
└── README.md
```

---

## πŸ“Œ Merknader

- Dette prosjektet er **ikke tilknyttet TMDB**. Du mΓ₯ bruke din egen API-nΓΈkkel.
- Serveren bruker **stdio-transport**, som er standarden for lokale MCP-servere.
- API-nΓΈkler lastes fra `.env` og skrives aldri rett inn i koden β€” commit aldri `.env`-filen din.
- Les mer om MCP pΓ₯ [modelcontextprotocol.io](https://modelcontextprotocol.io) og i [MCP servers-repoet](https://github.com/modelcontextprotocol/servers).

---

<div align="center">

Laget av [simentob](https://github.com/simentob)

</div>

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have clear boundaries (movie vs TV reviews, search vs trending), but tmdb_search_movies and tmdb_multi_search overlap in purpose since multi-search includes movies. This creates minor ambiguity when an agent needs a movie-only search.

Naming Consistency4/5

All tools use the consistent tmdb_ prefix and lowercase_with_underscores, but the structure varies: some are noun phrases (movie_reviews) while others are verb phrases (search_movies) or compound nouns (multi_search, trending_search). This mixed pattern is mostly readable but not perfectly uniform.

Tool Count5/5

Six tools is a well-scoped set for a TMDB server focused on search, trending, and reviews. The count is neither too thin nor too heavy.

Completeness4/5

The server covers the search/review niche well: movie and TV reviews, review details, and search/trending. However, comprehensive TMDB operations like movie details, credits, or recommendations are missing, though these fall outside the apparent niche.

Maintenance

ActivityInactive
ResponsivenessNo issues