A comprehensive Model Context Protocol server for YouTube Data API access with 14 functions including transcript extraction and intelligent content evaluation
The server declares 2 tools in the spec (get_video_details, get_playlist_details) but the source code shows evidence of many more functions in the docstring ('14 functions including transcript extraction'). Only 2 tools are visible in the provided source excerpt. Both visible tools have minimal descriptions (under 100 chars) and very sparse parameter documentation. Input schemas are present but lack richness, parameters have type and description, but no enums, constraints, or validation guidance. No output schemas are documented. The code loads secrets from a credentials file rather than environment variables, violating secure credential handling. Error handling is minimal, no recovery guidance, no categorized errors, no user-fixable vs retryable classification. The tool names are reasonable action verbs ('get_*') but descriptions lack LLM-optimization details like when to use each tool and what structure they return.
Get information about a YouTube playlist.
Get detailed information about a YouTube video.
Tool descriptions are too generic and lack LLM optimization. 'Get detailed information about a YouTube video' does not explain what fields are returned, when to use it vs other tools, or what the response structure is. Descriptions should be 50 - 200 chars with explicit WHAT/WHEN/WHAT-IT-RETURNS guidance.
No documented output schemas. LLMs cannot plan downstream tool calls or extract relevant data from the response without knowing what fields to expect. Every tool must document its return type and structure.
Credentials loaded from local file (credentials.yml) rather than environment variables. Secrets in code or config files risk exposure in logs, backups, and version control. Use server-side secret injection via environment variables or a vault system.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter 'video_input' and 'playlist_input' descriptions lack format guidance. They accept both URLs and IDs, but no examples or validation rules are provided. LLMs need explicit format hints: '(YouTube URL or 11-char video ID, e.g., dQw4w9WgXcQ or https://youtube.com/watch?v=dQw4w9WgXcQ)', but avoid concrete examples that LLMs may reuse literally; use regex patterns instead.
No error handling guidance. If a video ID is invalid or private, the tool likely returns an API error. The LLM receives no actionable recovery hint, it cannot know whether to retry, ask the user for a different ID, or treat it as a fatal failure. All error responses should include 'what went wrong' and 'what to do next'.
Docstring claims '14 functions' but only 2 are declared in the tools list. The discrepancy suggests either the server is incomplete, or tool definitions are not being registered. Verify all intended tools are explicitly registered with the MCP framework.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). These tools appear read-only (Risk: READ_ONLY noted in spec), but the code does not declare this via tool annotations, so the LLM cannot reason about retry safety or side effects without explicit guidance.