MCP server for YouTube Music: audit liked songs, organize playlists, search, like — from Claude or any MCP client.
This server has severe definition quality gaps. Both tools lack explicit input schemas in the visible code, both descriptions are present but one is misleading about functionality, and there is no evidence of parameter documentation, output schema definitions, or error handling guidance. Tool #1 (get_claude_md) appears to be a documentation/doctrine reader, not a traditional MCP tool. Tool #2 (library_app) is registered as a UI component via FastMCPApp, not a standard tool with callable parameters. The server relies on opaque, undocumented tool registration through fastmcp's decorator pattern, making schema verification impossible from static analysis. No evidence of input validation, error categorization, or recovery guidance.
Read this FIRST: the orchestration doctrine (mental model, workflows, guardrails) for managing the YouTube Music library.
Open a **rendered dashboard** of the YouTube Music library: liked / unfiled / playlists metrics, recent changes and the unfiled tracks table. Same data as the cached JSON tools — prefer it when the user wants to *see* the state of their library. Requires a successful `sync` first.
No visible input schemas for either tool. Both tools declared with empty input objects {} but no JSON Schema type definitions, property constraints, or parameter descriptions visible in source.
Tool #2 (library_app) is registered via FastMCPApp.ui() decorator, not as a standard MCP tool. The return type is PrefabApp (a UI component), not a structured data response. This is an MCP Apps extension construct, not a callable tool with input parameters. Unclear if LLMs can invoke this or if it is client-only UI.
Tool #1 (get_claude_md) description states 'Read this FIRST: the orchestration doctrine...' but does not clarify what it returns, where the doctrine is stored, or how the LLM should use the output. Description is instructional (imperative) rather than declarative about the tool's contract.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
No output schema documentation visible for either tool. LLMs cannot plan downstream calls or extract data without knowing the response structure. get_claude_md presumably returns markdown text; library_app returns a PrefabApp UI object, neither is formally documented.
No error handling or recovery guidance. No visible try/catch blocks, validation, or error messages in tool implementations. If sync has not been run, library_app returns a UI alert but does not indicate to the LLM whether it should retry, ask the user, or call a different tool.
get_claude_md appears to be a static documentation tool, not a functional action tool. No parameters, no state changes, no integration with the library state. This violates the single-responsibility principle, it is a passive information surface, not an actionable tool.