YouTube MCP Server for local deployment with Google OAuth2 authentication
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (youtube_authenticate, youtube_status, youtube_search_videos), which is good. However, descriptions are minimal (10-50 chars), parameter descriptions are sparse or missing, and output schemas are not documented. No error handling guidance. The youtube_search_videos tool lacks enum constraints for the 'order' parameter, inviting hallucinated values. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata.
Start YouTube authentication process or check status
Search for videos on YouTube
Check YouTube connection status and account info
Descriptions are too short (10-50 chars) to guide LLM tool selection. Pattern baseline is 194 chars average. youtube_status description 'Check YouTube connection status and account info' (50 chars) lacks context on when to call it vs youtube_authenticate.
youtube_search_videos 'order' parameter accepts free-form string with no enum constraint. Description says 'Sort order for results' but does not list valid values (relevance, date, viewCount, etc.). LLMs will hallucinate invalid values.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Pattern baseline: 100% of A+ tools have documented return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
youtube_search_videos 'max_results' parameter lacks range constraints (min/max). Unbounded numeric parameters let LLMs pass absurd values (e.g. 999999) that break APIs or cause timeouts.
No error handling guidance. Code catches errors but returns generic messages. Pattern baseline: error responses must tell LLM what to do next (e.g. 'User not found. Try search_users() first.').