get_movie_recommendations
Find Indian movie recommendations by filtering with genre, language, rating, or release year preferences.
Instructions
Get Indian movie recommendations based on genre, language, or rating preferences
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | Preferred genre (e.g., Comedy, Drama, Action, etc.) | |
| language | No | Preferred language (e.g., Hindi, Telugu, Tamil, etc.) | |
| min_rating | No | Minimum rating (0-10) | |
| year_after | No | Movies released after this year |
Implementation Reference
- index.js:224-317 (handler)Main handler for get_movie_recommendations tool in stdio MCP server. Filters the indianMovies array based on genre, language, min_rating, and year_after parameters, logs each step, and returns a text content response with JSON-stringified filtered movies.
case 'get_movie_recommendations': { log('=== EXECUTING get_movie_recommendations TOOL ==='); log('Processing movie recommendations request with filters...'); let filteredMovies = [...indianMovies]; log('Starting with total movies:', { count: filteredMovies.length }); // Filter by genre if (args.genre) { log('=== APPLYING GENRE FILTER ==='); log('Requested genre:', args.genre); const beforeCount = filteredMovies.length; filteredMovies = filteredMovies.filter(movie => movie.genre.some(g => g.toLowerCase().includes(args.genre.toLowerCase())) ); log('Genre filter results:', { before: beforeCount, after: filteredMovies.length, filtered_out: beforeCount - filteredMovies.length }); log('Remaining movies after genre filter:', filteredMovies.map(m => m.title)); } // Filter by language if (args.language) { log('=== APPLYING LANGUAGE FILTER ==='); log('Requested language:', args.language); const beforeCount = filteredMovies.length; filteredMovies = filteredMovies.filter(movie => movie.language.toLowerCase() === args.language.toLowerCase() ); log('Language filter results:', { before: beforeCount, after: filteredMovies.length, filtered_out: beforeCount - filteredMovies.length }); log('Remaining movies after language filter:', filteredMovies.map(m => m.title)); } // Filter by minimum rating if (args.min_rating) { log('=== APPLYING RATING FILTER ==='); log('Minimum rating requested:', args.min_rating); const beforeCount = filteredMovies.length; filteredMovies = filteredMovies.filter(movie => movie.rating >= args.min_rating ); log('Rating filter results:', { before: beforeCount, after: filteredMovies.length, filtered_out: beforeCount - filteredMovies.length }); log('Remaining movies after rating filter:', filteredMovies.map(m => `${m.title} (${m.rating})`)); } // Filter by year if (args.year_after) { log('=== APPLYING YEAR FILTER ==='); log('Movies after year:', args.year_after); const beforeCount = filteredMovies.length; filteredMovies = filteredMovies.filter(movie => movie.year > args.year_after ); log('Year filter results:', { before: beforeCount, after: filteredMovies.length, filtered_out: beforeCount - filteredMovies.length }); log('Remaining movies after year filter:', filteredMovies.map(m => `${m.title} (${m.year})`)); } log('=== FINAL FILTERING RESULTS ==='); log('Total movies found:', filteredMovies.length); log('Final movie list:', filteredMovies.map(m => `${m.title} (${m.year}) - ${m.language}`)); const response = { content: [ { type: 'text', text: JSON.stringify(filteredMovies, null, 2), }, ], }; log('=== SENDING get_movie_recommendations RESPONSE ==='); log('Response structure:', { content_type: 'text', movie_count: filteredMovies.length, response_size_chars: JSON.stringify(filteredMovies).length }); log('Full response object:', JSON.stringify(response, null, 2)); return response; } - index.js:146-171 (schema)Input schema definition for the get_movie_recommendations tool provided in the ListToolsRequestSchema handler.
name: 'get_movie_recommendations', description: 'Get Indian movie recommendations based on genre, language, or rating preferences', inputSchema: { type: 'object', properties: { genre: { type: 'string', description: 'Preferred genre (e.g., Comedy, Drama, Action, etc.)', }, language: { type: 'string', description: 'Preferred language (e.g., Hindi, Telugu, Tamil, etc.)', }, min_rating: { type: 'number', description: 'Minimum rating (0-10)', minimum: 0, maximum: 10, }, year_after: { type: 'number', description: 'Movies released after this year', }, }, }, }, - http-server.js:83-108 (handler)Handler for get_movie_recommendations tool in HTTP MCP server. Similar filtering logic without logging, returns text content with JSON-stringified filtered movies.
case 'get_movie_recommendations': { let filteredMovies = [...indianMovies]; if (args.genre) { filteredMovies = filteredMovies.filter(movie => movie.genre.some(g => g.toLowerCase().includes(args.genre.toLowerCase())) ); } if (args.language) { filteredMovies = filteredMovies.filter(movie => movie.language.toLowerCase() === args.language.toLowerCase() ); } if (args.min_rating) { filteredMovies = filteredMovies.filter(movie => movie.rating >= args.min_rating); } if (args.year_after) { filteredMovies = filteredMovies.filter(movie => movie.year > args.year_after); } return { content: [{ type: 'text', text: JSON.stringify(filteredMovies, null, 2) }], }; - http-server.js:46-56 (schema)Input schema definition for the get_movie_recommendations tool in the HTTP server's ListToolsRequestSchema handler.
name: 'get_movie_recommendations', description: 'Get Indian movie recommendations based on genre, language, or rating preferences', inputSchema: { type: 'object', properties: { genre: { type: 'string', description: 'Preferred genre' }, language: { type: 'string', description: 'Preferred language' }, min_rating: { type: 'number', description: 'Minimum rating (0-10)', minimum: 0, maximum: 10 }, year_after: { type: 'number', description: 'Movies released after this year' }, }, }, - index.js:19-110 (helper)The indianMovies database array used by the get_movie_recommendations handler for filtering and recommendations.
const indianMovies = [ { title: "3 Idiots", year: 2009, genre: ["Comedy", "Drama"], language: "Hindi", rating: 8.4, director: "Rajkumar Hirani", description: "Two friends search for their long lost companion while reflecting on their college days." }, { title: "Dangal", year: 2016, genre: ["Biography", "Drama", "Sport"], language: "Hindi", rating: 8.4, director: "Nitesh Tiwari", description: "Former wrestler Mahavir Singh trains his daughters to become world-class wrestlers." }, { title: "Baahubali 2", year: 2017, genre: ["Action", "Drama"], language: "Telugu", rating: 8.2, director: "S.S. Rajamouli", description: "Shiva discovers his legacy and must save his love and his kingdom." }, { title: "Taare Zameen Par", year: 2007, genre: ["Drama", "Family"], language: "Hindi", rating: 8.4, director: "Aamir Khan", description: "An eight-year-old boy is thought to be lazy but actually has dyslexia." }, { title: "Zindagi Na Milegi Dobara", year: 2011, genre: ["Adventure", "Comedy", "Drama"], language: "Hindi", rating: 8.2, director: "Zoya Akhtar", description: "Three friends on a bachelor trip discover themselves and their friendship." }, { title: "Lagaan", year: 2001, genre: ["Adventure", "Drama", "Musical"], language: "Hindi", rating: 8.1, director: "Ashutosh Gowariker", description: "Villagers accept a challenge from British officers to play cricket to avoid taxes." }, { title: "Queen", year: 2013, genre: ["Comedy", "Drama"], language: "Hindi", rating: 8.2, director: "Vikas Bahl", description: "A woman goes on her honeymoon alone and discovers herself." }, { title: "Tumhari Sulu", year: 2017, genre: ["Comedy", "Drama"], language: "Hindi", rating: 7.1, director: "Suresh Triveni", description: "A housewife becomes a radio jockey and finds her voice." }, { title: "Andhadhun", year: 2018, genre: ["Crime", "Thriller"], language: "Hindi", rating: 8.2, director: "Sriram Raghavan", description: "A blind pianist gets embroiled in multiple murders." }, { title: "Kumbakonam Gopals", year: 2015, genre: ["Comedy"], language: "Tamil", rating: 7.8, director: "PC Shekar", description: "A hilarious tale of a small-town family." } ];