YouTube MCP Server Implementation providing tools to query YouTube data including video details, search, transcripts, channel statistics, and engagement metrics.
The YouTube MCP server implements 9 read-only tools with complete Zod schemas and reasonable descriptions. Tool names follow verb_noun conventions (getVideoDetails, searchVideos, etc.). All tools have non-empty descriptions (110-200 chars, within the 10-1024 char baseline range). However, parameter descriptions are sparse, most parameters lack actionable guidance on format, constraints, or when to use them. For example, 'videoIds' is described as 'Array of YouTube video IDs to retrieve details for' but doesn't explain what a valid video ID looks like, whether it accepts multiple formats, or error cases. Error handling returns raw JSON error responses without recovery guidance. The tools are well-composed (each does one thing) and accept arrays for batch operations (good for agent efficiency), but lack output schema documentation and pagination support for list-returning tools like searchVideos and getTrendingVideos. No tool annotations (readOnlyHint, destructiveHint) despite all tools being READ_ONLY, this metadata would help agents understand tool safety properties without reading descriptions.
Compares statistics between multiple videos. Returns a side-by-side comparison of view counts, likes, comments, and other metrics for the specified videos. Use this when you want to analyze the performance differences between videos.
Retrieves statistics for multiple channels. Returns detailed metrics including subscriber count, view count, and video count for each channel. Use this when you need to analyze the performance and reach of multiple YouTube channels.
Retrieves the top videos from a specific channel. Returns a list of the most viewed or popular videos from the channel, based on view count. Use this when you want to identify the most successful content from a channel.
Retrieves related videos for a specific video. Returns a list of videos that are similar or related to the specified video, based on YouTube's recommendation algorithm. Use this when you want to discover content similar to a particular video.
Retrieves transcripts for multiple videos. Returns the text content of videos' captions, useful for accessibility and content analysis. Use this when you need the spoken content of multiple videos.
Parameter descriptions lack actionable constraints and format guidance. 'videoIds' doesn't explain valid ID format, length, or error cases. LLMs cannot infer constraints from parameter names alone and may pass malformed IDs.
No output schema documentation. Tool descriptions state what data is returned (e.g. 'comprehensive data including video metadata, statistics, and content details') but don't provide a structured schema. Agents cannot reliably plan downstream operations or extract specific fields.
Tools returning lists (searchVideos, getTrendingVideos, getRelatedVideos, getChannelTopVideos) lack pagination support (offset/limit, next_cursor). Results are uncapped, risking context window exhaustion. No documentation of result limits.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 71 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Retrieves trending videos based on region and category. Returns a list of the most popular videos in the specified region and category. Use this when you want to find out what videos are trending on YouTube.
Get detailed information about multiple YouTube videos. Returns comprehensive data including video metadata, statistics, and content details. Use this when you need complete information about specific videos.
Calculates the engagement ratio for multiple videos. Returns metrics such as view count, like count, comment count, and the calculated engagement ratio for each video. Use this when you want to measure the audience interaction with videos.
Searches for videos based on a query string. Returns a list of videos matching the search criteria, including titles, descriptions, and metadata. Use this when you need to find videos related to specific topics or keywords.
Error responses return raw API error data without recovery guidance. E.g. 'error: error.message, details: error.response?.data' tells the agent nothing about why the call failed or what to do next (retry? validate input? check permissions?). Violates recovery-guide pattern.
No tool annotations despite all tools being READ_ONLY. Tool annotations (readOnlyHint: true) would let agents understand safety properties without parsing descriptions. This is a current pattern in the 2026-07-28 spec.
Optional parameters (maxResults, lang, regionCode, categoryId) lack constraints. No min/max, no default values stated, no guidance on what happens when omitted. maxResults could be 1 or 10,000, LLMs will guess.
Response fields and chaining IDs not documented. If searchVideos returns videos, does each video object include videoId, channelId, and other fields needed by downstream tools like getVideoDetails or getChannelStatistics? Without seeing response structure, agents cannot plan multi-step workflows.
getTrendingVideos has optional regionCode and categoryId with no enum or format guidance. YouTube region codes (US, KR, JP) and category IDs are specific enums, LLMs will hallucinate invalid values without explicit constraints.