MCP server for interacting with YouTube Data API to search and retrieve information about videos, channels, and playlists, as well as download video transcripts
8 tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. All tools are READ_ONLY (good for safety), but descriptions are generic (avg ~40 chars, well below 194-char baseline). Parameter descriptions exist but lack constraints (enums, ranges, formats). Output schemas inferred from Pydantic models in source but not explicitly documented in tool definitions. No error handling guidance. Tool names follow verb_noun pattern (positive), but some are generic ('Get Video Info' vs 'Get Video Metadata'). Composition is reasonable, tools are single-purpose and chainable via IDs.
Download the transcript of a Youtube Video
Extract Youtube Video ID from a given string
Get channel information from Youtube
Get videos uploaded by Youtube Channel
Get video information from Youtube
Search for Youtube Channels
Search for Youtube Playlists
Tool descriptions are too short (avg ~40 chars vs 194-char baseline). 'Get video information from Youtube' lacks context on when to use this vs other tools, what fields are returned, and prerequisites (e.g., valid video_id format).
Parameter descriptions lack constraints. 'order' param in Search Channel accepts 'date, rating, relevance, title, videoCount, viewCount' but is documented as free-form string. Should be enum or include explicit constraint in description.
Output schemas not documented in tool definitions. Pydantic models (VideoInfo, ChannelInfo, PlaylistInfo) exist in source but are not exposed as formal JSON Schema in the tool registration. LLMs cannot plan downstream calls without knowing return structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Search for Youtube Videos
No error handling guidance. If a video_id is invalid or a channel is not found, the tool likely returns a raw API error or exception. Should return actionable recovery hints (e.g., 'Video not found. Try search_videos() to find the correct ID').
Pagination not fully documented. Search tools accept max_results but do not explicitly state result limits, whether pagination is automatic, or how to retrieve next pages. Should clarify: 'Returns up to 50 results per call. Use next_page_token (if present) to fetch additional results.'