An MCP server for processing and analyzing video files, extracting frames, transcribing audio, and answering questions about video content using local LLM models via Ollama.
Server has 5 tools with schemas and descriptions present, but quality is inconsistent. process_video has detailed descriptions with parameter explanations; ask_video and query_location_time are well-documented. However, get_video_summary and list_videos have minimal descriptions (under 20 chars). No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Parameter descriptions are present but lack constraints (enums, ranges, formats). Output schemas are not documented, LLMs cannot infer what fields to expect from responses. Error handling guidance is absent. No validation rules stated for inputs like video_path or location. Tool composition is reasonable (single responsibility), but missing idempotency guarantees and recovery guidance.
Ask a question about a processed video. Args: video_id: ID of the processed video question: Natural language question about the video context_window: Seconds of context around relevant moments (default: 60) Returns: Answer based on video content analysis
Get a summary of a processed video.
List all processed videos with optional filtering.
Process a video file for analysis. Args: video_path: Path to the video file location: Location name (e.g., "shed", "driveway"). Auto-detected if not provided. recording_timestamp: When the video was recorded (ISO format or natural language). Uses file timestamp if not provided. sample_rate: Extract 1 frame every N frames (default: 30) extract_audio: Whether to transcribe audio (default: True) Returns: Processing result with video_id and statistics
Query videos by location and time using natural language. Args: location: Location name (e.g., "shed", "driveway", "front door") time_query: Natural language time query (e.g., "today", "yesterday", "last week", "December 6th", "last 3 days") content_query: Optional content to search for (e.g., "car", "person") limit: Maximum number of results Returns: List of videos matching the criteria with summaries Examples: - location="shed", time_query="today" - location="driveway", time_query="yesterday", content_query="car" - time_query="last week" (all locations)
Minimal descriptions for get_video_summary and list_videos (under 20 chars). LLMs cannot determine when to select these tools or what they return.
No output schemas documented. LLMs cannot infer response structure (fields, types, pagination). Responses must include video_id, timestamps, summaries, and counts for downstream tool chaining.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications. process_video is WRITE; others are READ_ONLY. Annotations guide agent planning and retry logic.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
Parameter constraints missing. location accepts free-form strings (should be enum or validated against known locations). sample_rate lacks min/max bounds. context_window and limit lack ranges. LLMs will pass invalid values.
No error handling guidance. If video_path is invalid, location auto-detection fails, or Ollama is unavailable, LLMs receive no recovery hints. Errors should guide next steps (retry, lookup, fallback).