Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TMDB_API_KEYYesAPI key for The Movie Database (TMDB), obtained from account settings in the API section.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_genresA

List all available entertainment genres across media types and providers.

Returns: Dictionary mapping genre names to their properties: { "Documentary": { "id": 99, "has_films": true, "has_tv_shows": true }, "Action": { "id": 28, "has_films": true, "has_tv_shows": false }, ... }

list_genres_simplifiedA

Get a simplified list of available genre names.

Uses LLM sampling to extract genre names from the full genre data, returning a clean, formatted list without IDs or media type flags. Falls back to direct extraction if sampling is not supported.

Returns: A formatted string containing the sorted list of genre names.

Raises: Sampling errors are logged and result in fallback to direct key extraction.

categorize_genresA

Categorize all available genres by mood/tone.

Groups entertainment genres into mood categories (Dark, Light, Serious, Fun) using a hybrid approach: hardcoded mappings for common genres with LLM-based categorization for edge cases and unknown genres.

Returns: Dictionary mapping mood categories to lists of genre names: { "Dark": ["Horror", "Thriller", "Crime", "Mystery"], "Light": ["Comedy", "Family", "Kids", "Animation", "Romance"], "Serious": ["Documentary", "History", "War", "Drama"], "Fun": ["Action", "Adventure", "Fantasy", "Science Fiction"], "Other": ["Western", "Film Noir"] }

compare_llm_responsesA

Compare how Claude and a second agent (defaults to Ollama) respond to the same prompt.

Sends the same prompt to both Claude (via ctx.sample) and the second agent in parallel, returning a structured comparison of their responses.

Args: prompt: The prompt to send to both LLMs llm_model: Which second model to use (default: llama3.2:latest) temperature: Temperature for both LLMs (default: 0.7) max_tokens: Maximum tokens for responses (default: 500)

Returns: Dictionary containing: { "prompt": "original prompt text", "claude_response": { "text": "Claude's response...", "model": "claude-sonnet-4-5", "error": None }, "alternative_response": { "text": "Ollama's response...", "model": "llama3.2:latest", "error": None }, "comparison": { "claude_length": 150, "alternative_length": 142, "both_succeeded": true } }

Raises: ValueError: If prompt is empty or invalid parameters provided

discover_filmsA

Discovers films from based on optional filters like genre, release year, language, and sorting preferences. For now, defaults to TMDB service.

Args: genre_id: Optional TMDB genre ID to filter by (use list_genres to find IDs) year: Optional release year to filter by (e.g., 2024) language: Optional ISO 639-1 language code (e.g., "en", "es", "fr") sort_by: Sort order - options: "popularity.desc", "popularity.asc", "vote_average.desc", "vote_average.asc", "date.desc", "date.asc" (None defaults to "popularity.desc") page: Page number for pagination, 1-indexed (default: 1) max_results: Maximum number of results to return (default: 20, max: 100)

Returns: Dictionary containing: { "results": [ { "id": str, "media_type": str, "title": str, "date": str (YYYY-MM-DD format, may be None), "rating": float (0-10 scale, may be None), "description": str (may be None), "genre_ids": List[int] } ], "total_results": int, "page": int, "total_pages": int, "provider": str }

Raises: ValueError: If invalid parameters provided RuntimeError: If service returns an error ConnectionError: If unable to connect to service

discover_televisionA

Discovers television shows based on optional filters like genre, first air year, language, and sorting preferences. For now, defaults to TMDB service.

Args: genre_id: Optional TMDB genre ID to filter by (use list_genres to find IDs) year: Optional first air year to filter by (e.g., 2024) language: Optional ISO 639-1 language code (e.g., "en", "es", "fr") sort_by: Sort order - options: "popularity.desc", "popularity.asc", "vote_average.desc", "vote_average.asc", "date.desc", "date.asc" (None defaults to "popularity.desc") page: Page number for pagination, 1-indexed (default: 1) max_results: Maximum number of results to return (default: 20, max: 100)

Returns: Dictionary containing: { "results": [ { "id": str, "media_type": str, "title": str, "date": str (YYYY-MM-DD format, may be None), "rating": float (0-10 scale, may be None), "description": str (may be None), "genre_ids": List[int] } ], "total_results": int, "page": int, "total_pages": int, "provider": str }

Raises: ValueError: If invalid parameters provided RuntimeError: If service returns an error ConnectionError: If unable to connect to service

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
get_versionGet MCP server version.

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation3/5

Most tools have distinct purposes (categorizing genres, comparing LLMs, discovering films/TV, listing genres), but there is notable overlap between 'list_genres' and 'list_genres_simplified'—both list genres with only output format differences. This could confuse agents about which to use for basic genre listing. The other tools are clearly differentiated.

Naming Consistency4/5

Tools follow a consistent verb_noun naming pattern (e.g., 'categorize_genres', 'compare_llm_responses', 'discover_films'), which is predictable and readable. However, 'list_genres' and 'list_genres_simplified' deviate slightly by adding a modifier, breaking the pure verb_noun convention but maintaining clarity.

Tool Count4/5

With 6 tools, the count is reasonable for a media/entertainment-focused server, covering genre management, content discovery, and LLM comparison. It's slightly thin for full media lifecycle coverage (e.g., no update/delete tools for genres or content), but each tool serves a clear purpose without obvious bloat.

Completeness3/5

The server covers genre listing and content discovery for films and TV, but there are notable gaps. It lacks CRUD operations for genres (only listing/categorizing) and media (no create/update/delete tools for films/TV). The LLM comparison tool feels out of scope, and there's no integration between discovery and genre tools (e.g., filtering by mood from categorize_genres).

Maintenance

ActivityMaintained
ResponsivenessNo issues