Discogs MCP has well-structured tool definitions with complete schemas and reasonable descriptions. All 5 tools follow verb_noun naming (search, get_*). Schemas are properly typed with required fields declared. However, descriptions are generic and lack LLM-optimization guidance (e.g., no 'when to use' context, no dependency hints). Parameter descriptions are minimal (1-5 words). Output schemas are not documented, callers cannot predict response structure. Error handling is basic (no recovery guidance). The server lacks pagination guidance for search results despite returning potentially large datasets.
Artist profile + identifiers.
Label profile + parent label + sublabels.
Master release detail (the canonical work across all editions/pressings).
Full release detail: title, artists, labels, formats, tracklist, credits, year, country, notes, identifiers (barcode, matrix), data quality.
Full-text search across Discogs (releases, masters, artists, labels). Filter by type, title, artist, format (e.g., "Vinyl", "CD"), country, year, genre, style, label.
Output schemas not documented. Callers cannot predict response structure (fields, types, nesting). Forces LLMs to guess what data is available for downstream operations.
Descriptions lack LLM-optimization guidance. No 'when to use' context, no dependency hints (e.g., 'search first if you only have a name'), no prerequisites. Generic 1-5 word parameter descriptions (e.g., 'Artist filter', 'Label filter') do not explain what the parameter controls or how it affects results.
Search tool returns potentially large result sets (per_page up to 100) but no guidance on pagination limits or result capping. LLMs may request 100 items per page, bloating context. No documented limit or recommendation for reasonable defaults.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Error handling is minimal. callTool() throws generic Error objects with no recovery guidance. E.g., 'Discogs: not found (HTTP 404)' tells LLM nothing about what to do next. No categorization of errors as retryable, user-fixable, or fatal.
API key injection via _apiKey parameter is non-standard. MCP spec recommends server-side secret injection via environment variables or vault. Passing secrets as tool parameters risks logging them in traces and prompt history.