MCP server for YouTube video analysis via Gemini API
Server has well-structured tool definitions with complete schemas and reasonable descriptions. All 5 tools have input schemas with type definitions and parameter descriptions. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool vs alternatives. Output schemas are not documented. Error handling is minimal. Parameter descriptions lack format constraints and validation rules. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications.
Ask a specific question about a YouTube video's content. Returns an answer based on the video.
Extract frames from a YouTube video at specific timestamps you provide. Use this when you already know the exact timestamps you want (e.g., from get_video_timestamps or video summary).
Extract key screenshots from a YouTube video at important moments. Uses AI to identify visually significant timestamps, then extracts frames. Returns both base64 images and optionally saves to disk.
Preview mode: Use AI to identify important moments in a YouTube video and return their timestamps WITHOUT extracting frames. Use this to preview what timestamps would be selected before committing to extraction.
Summarize a YouTube video's content. Returns a text summary based on the specified detail level.
Output schemas not documented. LLMs cannot plan downstream operations or extract structured data from responses. No documentation of what fields are returned, their types, or pagination behavior.
Tool annotations missing. extract_screenshots and extract_frames are marked WRITE (destructive/state-modifying) but lack destructiveHint annotation. summarize_video, ask_about_video, get_video_timestamps are READ_ONLY but lack readOnlyHint. LLMs cannot distinguish safe from risky operations.
Descriptions lack LLM-optimized guidance. Generic descriptions like 'Ask a specific question about a YouTube video's content' do not explain WHEN to use ask_about_video vs summarize_video, or what format the answer takes. Descriptions should be 50-200 chars with clear intent and prerequisites.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Parameter descriptions lack format constraints. 'youtube_url' accepts 'Full YouTube URL' but does not specify which formats are valid (youtube.com/watch?v=ID vs youtu.be/ID vs youtube.com/shorts/ID). 'focus' parameter in extract_screenshots and get_video_timestamps has no enum or validation guidance.
No error handling guidance in tool descriptions. LLMs do not know what to do if a video is unavailable, private, or too long. No recovery hints like 'If video is private, ask the user for a public link' or 'If extraction fails, try a lower resolution.'