An MCP server for comprehensive music collection management, analysis, and navigation. Provides tools for scanning music folders, advanced searching, collection analytics, web-based navigation, and theme generation.
The server defines 5 tools with reasonable descriptions and parameter schemas. However, there are significant gaps in schema completeness, parameter validation constraints, output schema documentation, and error handling guidance. Naming conventions are generally solid (action verbs), but several tools have underdocumented parameters and missing enum constraints that force LLMs to guess valid values. The descriptions are adequate but could be more actionable (many lack dependency hints or recovery guidance). No evidence of destructive operation confirmation patterns or detailed error classification.
Perform advanced search across all albums with comprehensive filtering options. This tool provides powerful search capabilities across your entire music collection. You can combine multiple filters to find exactly what you're looking for. All parameters are optional - omit any you don't need.
Generate comprehensive collection analytics and insights. This tool performs deep analysis of your entire music collection and provides actionable insights. No parameters needed - it analyzes your complete collection automatically.
Generate a CSS file (_index.css) themed by the collection's genre distribution. This MCP tool generates a CSS file with CSS variables for each genre found in your collection. Each genre is assigned a unique color, and base styles are provided for the web navigator. Re-running with force=True will overwrite the file.
Generate a self-contained _index.html file for web-based navigation of the music collection. References _index.css for theming (external, not generated here). Embeds all JavaScript logic for dynamic data loading, rendering, and navigation. Includes minimal inline CSS fallback.
Get a list of all discovered bands with enhanced filtering, sorting, and pagination. This tool provides comprehensive band listing functionality: search bands by name or album names, filter by genre/metadata/missing albums, sort by name/album count/last update/completion, paginate results, include detailed album information and analysis data, show cached metadata status and last updated info.
Output schemas are not documented. None of the 5 tools provide explicit documentation of what fields they return, their types, or structure. LLMs cannot plan downstream tool calls or extract relevant data without knowing the response shape.
Missing enum constraints on categorical parameters. 'album_types', 'decades', 'editions', 'genres' in advanced_search_albums_tool are documented as comma-separated values but lack explicit enum definitions. Similarly, 'sort_by' and 'sort_order' in get_band_list_tool list allowed values only in descriptions, not as JSON Schema enums. This invites LLMs to hallucinate invalid values.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 51 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | - | v1 |
No error handling guidance or recovery hints. None of the tool descriptions explain what errors might occur, how to classify them (retryable vs user-fixable), or what the LLM should do if a call fails. For example, if a file write fails in generate_collection_theme_css_tool, there is no guidance on fallback actions.
Destructive tools (generate_collection_theme_css_tool, generate_collection_web_navigator_tool) lack confirmation patterns. Both tools accept a 'force' flag to overwrite files, but there is no dry-run option or explicit confirmation step before irreversible operations. Agents should not silently overwrite user files.
Missing numeric bounds documentation. Parameters like 'year_min', 'year_max', 'min_rating', 'max_rating', 'track_count_min', 'track_count_max', 'page', and 'page_size' in advanced_search_albums_tool and get_band_list_tool have ranges in descriptions (e.g., 'Minimum year (1950-2030)') but no JSON Schema minimum/maximum constraints. LLMs cannot validate input ranges programmatically.
analyze_collection_insights_tool has empty input schema but no documentation of what it returns or what analysis is performed. The description says 'No parameters needed, it analyzes your complete collection automatically' but does not explain what insights are generated, how they are structured, or what the LLM should expect to extract from the response.
Missing pagination guidance. get_band_list_tool accepts pagination parameters (page, page_size) but the tool description does not state whether there is a total count returned, whether there is a next_cursor, or what the maximum page_size is. Without this, LLMs cannot efficiently iterate through large result sets.
No tool chaining IDs documented. If advanced_search_albums_tool returns album identifiers (IDs or names), there is no guarantee those identifiers will be accepted by other tools that reference albums. Output fields must match parameter names of downstream tools.