Skip to main content
Glama

media-mcp

Servidor MCP personal para recomendaciones de películas/series (vía TMDB) y seguimiento de vistos/watchlist/episodios en SQLite local.

Setup

  1. Consigue un API Read Access Token gratuito en https://www.themoviedb.org/settings/api

  2. cp .env.example .env y pon tu token en TMDB_API_KEY

  3. npm install

  4. npm run build

Related MCP server: MediaSage

Registrar en Claude Code

Añade en ~/.mcp.json (o /home/user/.mcp.json):

{
  "mcpServers": {
    "media-mcp": {
      "command": "node",
      "args": ["/home/user/media-mcp/dist/index.js"],
      "env": { "TMDB_API_KEY": "tu_token_aqui" }
    }
  }
}

Reinicia Claude Code y verifica con /mcp que aparece conectado.

Herramientas

Tool

Qué hace

search_media

Busca películas/series en TMDB

add_to_watchlist

Agrega algo a la watchlist

get_watchlist

Lista watchlist + en progreso

mark_watched

Marca como visto (con rating/notas opcional)

get_watched_history

Lista todo lo visto

mark_episode_watched

Marca un episodio de una serie como visto

get_next_episode

Próximo episodio pendiente de una serie

get_recommendations

Recomienda basado en historial o en un título dado

Los datos se guardan en data/media.db (SQLite, gitignored).

Available Tools

8 tools
add_to_watchlistadd_to_watchlistB

Agrega una película o serie a la watchlist (pendiente de ver).

ParametersJSON Schema
NameRequiredDescriptionDefault
tmdb_idYesID de TMDB de la película/serie (obtenido con search_media)
media_typeYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the add action but does not mention idempotency, overwrite behavior, error conditions, or authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly communicates the tool's purpose without any wasted words. It is optimally front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple add operation with 2 parameters and no output schema, the description is minimally adequate. However, given the lack of annotations, more context (e.g., success/failure indication, expected effects) would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (tmdb_id has a description, media_type has only enum). The description adds that the tool handles movies or series, which aligns with media_type but adds no new meaning beyond the schema. Baseline 3 is appropriate given marginal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'add' and the resource 'watchlist', specifying it's for movies or series. This clearly differentiates it from sibling tools like get_watchlist (viewing) or mark_watched (marking as watched).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., need to call search_media first) or situations where this tool is not appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_next_episodeget_next_episodeC

Encuentra el próximo episodio no visto de una serie.

ParametersJSON Schema
NameRequiredDescriptionDefault
tmdb_idYesID de TMDB de la serie

TDQS

C2.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits, but it only states the core function. It does not mention whether it requires prior user data, what happens if all episodes are watched, or the format of the returned data. This is severely inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no fluff. It is front-loaded with the key action. However, it may be too brief, missing necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and annotations, the description is insufficiently complete. It does not explain return values, error conditions, or integration with other tools like watch history.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters, each with a description. The tool description adds no additional meaning beyond the schema, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool finds the next unwatched episode of a series, using a specific verb ('encuentra') and resource ('próximo episodio no visto'). It clearly distinguishes from sibling tools like 'mark_episode_watched' or 'get_watched_history'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as prerequisites (e.g., series must be in watchlist) or handling of all-watched cases. The description lacks context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recommendationsget_recommendationsA

Recomienda películas o series. Si das 'based_on' recomienda parecidos a ese título; si no, usa tu historial de vistos como base.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
based_onNoTítulo para pedir recomendaciones parecidas a esta obra
media_typeNoFiltra el tipo de resultado

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses core behavior (history-based vs similarity-based) and the media_type filter. However, it does not explain what happens without history, privacy implications, or recommendation methodology.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that efficiently conveys the tool's purpose and two usage modes. No wasted words, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers the core functionality but lacks details on return format, error cases, and how recommendations are scored or personalized.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (2 of 3 params have descriptions). The description adds meaning by clarifying the conditional purpose of based_on and the default behavior. For limit, no additional detail provided beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool recommends movies or series. It distinguishes two modes: based_on for similar titles, or using viewing history. However, it does not explicitly differentiate from sibling tools like search_media or get_watched_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on when to use based_on versus relying on history. It does not explicitly state when not to use the tool or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watched_historyget_watched_historyA

Lista todo lo marcado como visto, con rating y notas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions that it returns rating and notes, which adds behavioral context. However, without annotations, it does not disclose ordering, pagination, or whether it is read-only, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no wasted words. Every part of the description contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema, the description adequately covers the core functionality. Could be slightly more complete by indicating ordering or data scope, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description correctly implies no input needed, which is sufficient for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'lista' (lists) and identifies the resource as 'todo lo marcado como visto' (everything marked as watched), clearly distinguishing it from sibling tools like get_watchlist or get_next_episode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_watchlist. The description does not provide any context about prerequisites or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watchlistget_watchlistA

Lista lo que está en watchlist o en progreso (watching).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations. Description specifies read operation ('lista'), but does not disclose any behavioral traits like sorting, limits, or permissions. Adequate for a simple 0-param tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no unnecessary words, directly communicates purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 0 parameters and no output schema, description sufficiently covers the tool's function for listing watchlist/watching items. Could mention return type but not essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters; baseline score of 4 per instructions. Description did not need to add parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Lista' and resource 'watchlist or en progreso'. Distinguishes from siblings like add_to_watchlist and get_watched_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as get_recommendations or get_watched_history. Lacks when-not or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_episode_watchedmark_episode_watchedB

Marca un episodio específico de una serie como visto.

ParametersJSON Schema
NameRequiredDescriptionDefault
tmdb_idYesID de TMDB de la serie
season_numberYes
episode_numberYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully convey behavioral traits. It only states the action, failing to disclose side effects (e.g., state change, authentication needs, duplication handling) or what happens after marking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no extraneous information. Every word is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is too minimal. It does not clarify prerequisites (e.g., does the series need to be in the user's library?), success indicators, or error conditions, which are critical for a write operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only 'tmdb_id' is described). The tool description does not add meaning for 'season_number' or 'episode_number', leaving ambiguity about whether episodes are 0-based or 1-based.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action: mark a specific episode as watched. It clearly distinguishes from sibling tools like 'mark_watched' (which likely marks a whole series/movie) and 'add_to_watchlist'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for marking a single episode, but it does not provide guidance on when to use this tool versus alternatives (e.g., 'mark_watched' for a whole series) or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_watchedmark_watchedA

Marca una película o serie (a nivel general) como vista, opcionalmente con rating y notas. Para episodios sueltos de una serie usa mark_episode_watched.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
ratingNoTu puntuación de 1 a 10
tmdb_idYes
media_typeYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It discloses that the tool marks as watched with optional rating and notes, but lacks detail on side effects, reversibility, authentication needs, or rate limits. It provides basic context but not enough depth for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the first stating the core purpose and the second providing a critical usage distinction. Every sentence adds value, no filler, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no output schema, and no annotations, the description covers the main action and distinguishes from a sibling, but lacks details on return values, error handling, prerequisites (e.g., tmdb_id validity), or behavior when media is already watched. It is adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (only rating has a description). The description mentions 'optional rating and notes', adding meaning for those two parameters, but gives no additional guidance for 'tmdb_id' or 'media_type'. While it implies media_type is 'movie' or 'tv', it does not fully compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('marks as watched'), the resource ('movie or series at a general level'), and distinguishes from the sibling tool 'mark_episode_watched' by specifying that this is for whole series, not individual episodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use this tool ('for a movie or series at a general level') and when not to ('for individual episodes, use mark_episode_watched'), providing clear guidance and an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_mediasearch_mediaA

Busca películas o series en TMDB por título.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesTítulo o palabras clave a buscar
media_typeNoFiltra por tipo (opcional)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states the search action without mentioning pagination, results format, authentication needs, or rate limits. This leaves significant gaps for a search operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise and front-loaded. However, it lacks any structural elements like bullet points or additional context. It earns its place but could be expanded slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should explain return values or behavior (e.g., list of results, empty handling). It does not. Given the search complexity, this is a notable omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already described in the schema (query and media_type). The tool description adds no extra meaning; it only restates the purpose. Baseline 3 applies as schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for movies or series on TMDB by title, specifying the resource (TMDB), action (search), and scope (movies or series). This distinguishes it from siblings like get_recommendations or add_to_watchlist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving media by title, which is clear. However, it does not explicitly state when not to use this tool or mention alternatives, though the sibling tools indicate other use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.0.0
    • First observedadd_to_watchlist
    • First observedget_next_episode
    • First observedget_recommendations
    • First observedget_watched_history
    • First observedget_watchlist
    • First observedmark_episode_watched
    • First observedmark_watched
    • First observedsearch_media

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct operation: adding to watchlist, getting next episode, recommendations, history, watchlist, marking episodes, marking media, and searching. No overlap in functionality.

Naming Consistency4/5

Most tools follow a verb_object pattern (get_watchlist, mark_watched, search_media). However, add_to_watchlist uses a preposition, breaking the pattern slightly. Overall clear and predictable.

Tool Count5/5

8 tools is well-scoped for a media tracking server, covering essential operations from search to watchlist management to recommendations without being excessive.

Completeness3/5

Covers core read and create operations but lacks update/delete tools (e.g., remove from watchlist, update rating). Episode tracking only allows marking individual episodes, not seasons.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Integrates with The Movie Database (TMDB) API to provide movie information, search capabilities, and recommendations.
    8 npm
    76
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Tracks movies, books, and TV shows with ratings and preferences, providing intelligent cross-media recommendations. Automatically fetches metadata from OMDB, Google Books, and TMDB to help manage watchlists and analyze viewing patterns.
    1
    -
  • A
    license
    A
    quality
    C
    maintenance
    Provides access to The Movie Database (TMDB) API, enabling users to search for movies, TV shows, and people, get detailed information, discover content with advanced filters, and retrieve recommendations.
    13
    35 npm
    5
    MIT