MCP server: fetch YouTube transcripts, search for moments by keyword, return text-only summaries. Powered by youtube-transcript. Free, MIT.
Server has 5 well-named tools with clear descriptions and complete input schemas. All tools are READ_ONLY and follow verb_noun naming (get_, search_, extract_, clip_). Descriptions are concise (50 - 150 chars) and explain purpose clearly. Input schemas include types, defaults, and constraints (e.g., context_segments 0 - 5, max_results 1 - 100). However, output schemas are not documented, LLMs cannot predict response structure. Parameter descriptions are minimal (e.g., 'video' lacks format guidance; 'lang' lacks language code examples). Error handling is present but generic ('Failed to fetch transcript...') without recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only and idempotent.
Build a YouTube URL that starts at a specific timestamp.
Extract the 11-character video ID from any YouTube URL format (youtube.com/watch, youtu.be, shorts, embed, etc.).
Fetch YouTube transcript as an array of segments with text + start time + duration.
Search a YouTube transcript for a keyword or phrase. Returns matching segments with timestamps + clickable clip URLs.
Get just the concatenated transcript text (no timestamps) — ideal for LLM summarization.
Output schemas not documented. LLMs cannot predict response structure (e.g., get_transcript returns {video_id, lang, segment_count, total_duration_seconds, segments[]}). Without documented schemas, agents cannot plan downstream operations or extract fields reliably.
'video' parameter lacks format guidance. Description says 'YouTube URL or 11-character video ID' but does not specify accepted URL formats (youtube.com/watch, youtu.be, shorts, embed). LLMs may pass invalid formats.
'lang' parameter lacks examples or valid language code list. Description says 'Two-letter language code' but does not specify ISO 639-1 codes or provide examples (en, es, fr, de). LLMs may guess invalid codes.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Error messages are generic and non-actionable. 'Failed to fetch transcript for {videoId} (lang={lang}): {msg}' does not guide recovery. Should suggest: 'Video not found, verify URL is correct. Try extract_video_id() to validate the video ID first.'
No tool annotations despite all tools being read-only and idempotent. Adding readOnlyHint and idempotentHint would signal to agents that these tools are safe to call repeatedly without side effects.