MCP server exposing YouTube transcript fetch/search/summarize tools (no API key required)
Server has 4 well-named tools with complete input schemas and reasonable descriptions. All tools follow verb_noun naming (get_*, search_*, summarize_*). Schemas include proper types and descriptions for all parameters. However, output schemas are not formally documented, responses are plain text strings rather than structured objects. Error handling returns error strings inline rather than guiding recovery. Parameter descriptions lack constraint details (e.g., no mention of valid language code formats, no bounds on gap_seconds/min_chunk_seconds). Tool descriptions are adequate (100-200 chars) but could better explain when to use each tool vs. alternatives.
Fetch the full transcript of a YouTube video as plain text.
Fetch title, channel name, and thumbnail for a YouTube video via the no-auth oEmbed endpoint. Note: oEmbed does not expose upload date or full description (those require the official Data API + an API key). This returns what's available without one.
Search a video's transcript for a keyword/phrase and return matching segments with timestamps.
Break a transcript into rough time-blocked chunks at natural pauses, for easier per-section summarizing. This is a heuristic, not real chapter data: it splits wherever the gap between two consecutive caption snippets exceeds `gap_seconds`, then merges any resulting chunk shorter than `min_chunk_seconds` into its neighbor so chunks stay summarizable.
Output schemas not documented. All tools return plain text strings; LLMs cannot parse structured results or chain downstream calls. Should return JSON objects with typed fields (e.g., {transcript: string, duration: number} for get_transcript).
Error handling returns error strings inline (e.g., 'Error: ...') rather than guiding recovery. Should include actionable next steps: 'Video unavailable. Try a different video ID or check if it is region-locked.'
Parameter descriptions lack constraint details. 'languages' array has no format guidance (e.g., 'ISO 639-1 codes like en, fr, de'). 'gap_seconds' and 'min_chunk_seconds' have no bounds (e.g., 'must be 0.1 - 60 seconds').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Tool descriptions do not explain when to use each tool vs. alternatives. E.g., when should an LLM call search_transcript vs. get_transcript + manual search? When is summarize_chapters preferred over get_transcript?
No pagination or result limits documented. search_transcript could return thousands of matches; get_transcript could return very long transcripts. Should cap results and offer pagination (e.g., 'Returns up to 50 matches; use offset/limit for more').