Skip to main content
Glama

search_tmdb_movies

Search for movies in The Movie Database to find specific films by title, filter by release year, language, and region for AI-driven content discovery.

Instructions

Searches specifically for movies in TMDB. Input: query (required search string), year (optional release year filter), page (optional), language (optional ISO 639-1), include_adult (optional boolean), region (optional ISO 3166-1). Output: JSON with paginated normalized results. Purpose: Targeted movie discovery for AI-driven content queries.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
include_adultNoInclude adult results
languageNoISO 639-1 code (e.g., en-US)
pageNoPage number
queryYesSearch query for movies
regionNoISO 3166-1 region code (e.g., US)
yearNoFilter by release year

Implementation Reference

  • The handler function that executes the tool: fetches movie search results from TMDB /search/movie endpoint, normalizes results using mapSearchResult helper, and returns paginated JSON.
    handler: async ({query, year, page, language, include_adult, region}) => { const data = await tmdbFetch("/search/movie", {query, year, page, language, include_adult, region}); const results = (data.results || []).map(mapSearchResult); return { content: [{ type: "text", text: JSON.stringify({ page: data.page, total_pages: data.total_pages, total_results: data.total_results, results }, null, 2) }] }; },
  • Input JSON Schema for the tool, specifying required 'query' and optional filters like year, page, language, etc.
    inputSchema: { type: "object", properties: { query: {type: "string", description: "Search query for movies"}, year: {type: "number", description: "Filter by release year"}, page: {type: "number", minimum: 1, description: "Page number"}, language: {type: "string", description: "ISO 639-1 code (e.g., en-US)"}, include_adult: {type: "boolean", description: "Include adult results"}, region: {type: "string", description: "ISO 3166-1 region code (e.g., US)"}, }, required: ["query"], additionalProperties: false, },
  • The complete tool definition object registered in the 'tools' array, including name, description, schema, and handler.
    { name: "search_tmdb_movies", description: "Searches specifically for movies in TMDB. Input: query (required search string), year (optional release year filter), page (optional), language (optional ISO 639-1), include_adult (optional boolean), region (optional ISO 3166-1). Output: JSON with paginated normalized results. Purpose: Targeted movie discovery for AI-driven content queries.", inputSchema: { type: "object", properties: { query: {type: "string", description: "Search query for movies"}, year: {type: "number", description: "Filter by release year"}, page: {type: "number", minimum: 1, description: "Page number"}, language: {type: "string", description: "ISO 639-1 code (e.g., en-US)"}, include_adult: {type: "boolean", description: "Include adult results"}, region: {type: "string", description: "ISO 3166-1 region code (e.g., US)"}, }, required: ["query"], additionalProperties: false, }, handler: async ({query, year, page, language, include_adult, region}) => { const data = await tmdbFetch("/search/movie", {query, year, page, language, include_adult, region}); const results = (data.results || []).map(mapSearchResult); return { content: [{ type: "text", text: JSON.stringify({ page: data.page, total_pages: data.total_pages, total_results: data.total_results, results }, null, 2) }] }; }, },
  • Helper function to normalize and compact TMDB search result items for consistent output format, called by the handler.
    function mapSearchResult(item) { const media_type = item.media_type || (item.title ? "movie" : item.name ? "tv" : "unknown"); const title = item.title || item.name || ""; const date = item.release_date || item.first_air_date || ""; return { id: item.id, media_type, title, date, original_language: item.original_language, popularity: item.popularity, vote_average: item.vote_average, overview: item.overview, }; }
  • Utility function for making authenticated HTTP requests to the TMDB API via proxy, used by the tool handler.
    async function tmdbFetch(path, params = {}) { if (!TMDB_AUTH_TOKEN) { throw new Error("TMDB authorization token is not configured"); } const url = new URL(TMDB_BASE + path); Object.entries(params).forEach(([k, v]) => { if (v !== undefined && v !== null && v !== "") url.searchParams.set(k, String(v)); }); const res = await fetch(url, { headers: { Accept: "application/json", Authorization: TMDB_AUTH_TOKEN, }, }); if (!res.ok) { const text = await res.text().catch(() => ""); throw new Error(`TMDB request failed ${res.status}: ${text}`); } return res.json(); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/drakonkat/wizzy-mcp-tmdb'

If you have feedback or need assistance with the MCP directory API, please join our Discord server