Skip to main content
Glama

get_recommendations

Get personalized movie suggestions based on your preferred genre, current mood, or time of day to find films that match your viewing preferences.

Instructions

Suggests movies based on mood, genre, or time preferences.

Args: genre: Movie genre (optional, e.g., "action", "comedy") mood: Mood description (optional, e.g., "exciting", "romantic") time_preference: Time of day preference (optional, e.g., "evening")

Returns: JSON string with movie recommendations

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
genreNo
moodNo
time_preferenceNo

Implementation Reference

  • Primary handler for the get_recommendations tool in the standard MCP server implementation. Filters movies from mock data based on genre and mood, returns top 5 recommendations as JSON.
    async def _get_recommendations(self, args: Dict[str, Any]) -> CallToolResult: """Get movie recommendations based on preferences""" genre = args.get("genre", "").lower() mood = args.get("mood", "").lower() recommendations = [] for movie in self.movies.values(): # Simple matching logic if genre and genre in movie.genre.lower(): recommendations.append({ "movie_id": movie.movie_id, "title": movie.title, "genre": movie.genre, "description": movie.description, "rating": movie.rating }) elif mood and (mood in movie.description.lower() or mood in movie.genre.lower()): recommendations.append({ "movie_id": movie.movie_id, "title": movie.title, "genre": movie.genre, "description": movie.description, "rating": movie.rating }) if not recommendations and not genre and not mood: # Return top picks if no specific criteria recommendations = [ { "movie_id": movie.movie_id, "title": movie.title, "genre": movie.genre, "description": movie.description, "rating": movie.rating } for movie in list(self.movies.values())[:5] ] result = { "criteria": {"genre": genre, "mood": mood}, "recommendations": recommendations[:5] } return CallToolResult( content=[TextContent(type="text", text=json.dumps(result, indent=2))] )
  • Tool registration in list_tools() handler, defining the name, description, and input schema for get_recommendations.
    Tool( name="get_recommendations", description="Suggests movies based on mood, genre, or time preferences", inputSchema={ "type": "object", "properties": { "genre": {"type": "string", "description": "Movie genre (optional)"}, "mood": {"type": "string", "description": "Mood description (optional)"}, "time_preference": {"type": "string", "description": "Time of day preference (optional)"} } } ),
  • Handler function for get_recommendations in FastMCP implementation, registered via @mcp.tool() decorator, calls internal _get_recommendations.
    def get_recommendations( genre: Optional[str] = None, mood: Optional[str] = None, time_preference: Optional[str] = None ) -> str: """ Suggests movies based on mood, genre, or time preferences. Args: genre: Movie genre (optional, e.g., "action", "comedy") mood: Mood description (optional, e.g., "exciting", "romantic") time_preference: Time of day preference (optional, e.g., "evening") Returns: JSON string with movie recommendations """ return _get_recommendations(genre, mood, time_preference)
  • Supporting helper function implementing the recommendation logic for the FastMCP get_recommendations tool.
    def _get_recommendations( genre: Optional[str] = None, mood: Optional[str] = None, time_preference: Optional[str] = None ) -> str: """Get movie recommendations based on preferences""" recommendations = [] genre_lower = genre.lower() if genre else "" mood_lower = mood.lower() if mood else "" for movie in movies.values(): if genre_lower and genre_lower in movie.genre.lower(): recommendations.append({ "movie_id": movie.movie_id, "title": movie.title, "genre": movie.genre, "description": movie.description, "rating": movie.rating }) elif mood_lower and (mood_lower in movie.description.lower() or mood_lower in movie.genre.lower()): recommendations.append({ "movie_id": movie.movie_id, "title": movie.title, "genre": movie.genre, "description": movie.description, "rating": movie.rating }) if not recommendations and not genre and not mood: # Return top picks if no specific criteria recommendations = [ { "movie_id": movie.movie_id, "title": movie.title, "genre": movie.genre, "description": movie.description, "rating": movie.rating } for movie in list(movies.values())[:5] ] result = { "criteria": {"genre": genre, "mood": mood, "time_preference": time_preference}, "recommendations": recommendations[:5] } return json.dumps(result, indent=2)

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/hi5d/amc-mcp'

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