MCP (Model Context Protocol) Server for querying the MusicBrainz database. Provides comprehensive music metadata access including artists, albums, recordings, releases, and related information through a standardized MCP interface.
MusicBrainz MCP server demonstrates solid quality with consistent patterns across 7 tools. All tools follow verb_noun naming conventions (search_*, get_*, browse_*, lookup_*), have descriptions, and include input schemas with proper type definitions. Descriptions are adequate (100-200 chars typical, within the production baseline of 194 chars average). Parameters uniformly include type hints, min/max constraints, and field descriptions. However, output schemas are NOT documented in the source, the code shows tool definitions and request handling, but there is no explicit documentation of what fields are returned by each tool. Error handling is minimal (no recovery guidance, no error classification). The server uses HTTP transport (fastmcp + uvicorn), which is current-spec compliant. Tools are READ_ONLY operations with proper pagination support (limit, offset on search tools). No security risks detected (no credentials in parameters). The main gaps are missing output schema documentation and limited error recovery patterns.
Browse recordings by a specific artist
Browse releases by a specific artist with optional filtering
Get detailed information about a specific artist by MBID
Generic lookup tool for any MusicBrainz entity by MBID
Search for artists in the MusicBrainz database
Search for recordings (tracks) in the MusicBrainz database
Search for releases (albums) in the MusicBrainz database
Output schemas are not documented. Code shows tool definitions and request handlers, but there is no declaration of what fields each tool returns (e.g., what does search_artist return, just a list of names, or does it include release counts, years, country?). This forces LLMs to reason about response structure without explicit guidance, increasing hallucination risk when chaining tools.
Error handling is missing recovery guidance. Tools do not document what to do when a query fails (e.g., if search_artist returns 0 results, should the LLM retry with a different query, call a discovery tool, or ask the user?). Error responses should include actionable next steps and error classification (retryable vs. user-fixable vs. fatal).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Tool descriptions lack dependency hints and prerequisite context. For example, get_artist_details and browse_artist_* require an artist MBID, but there is no hint that the user must call search_artist first if they only have an artist name. This forces LLMs to discover the pattern through trial-and-error rather than explicit guidance.
Parameters 'inc' and 'release_type', 'release_status' lack enum constraints. The descriptions mention 'e.g., releases, recordings' and 'e.g., album, single, ep', but these are not declared as formal enums in the schema. Free-form string arrays invite hallucinated values. These should be constrained with enum definitions.
lookup_by_mbid has a 'entity_type' parameter that is not constrained. The description lists 'artist, release, recording, release-group, label, work, area, place, event, instrument, series, url', but this is not an enum constraint in the schema. This allows invalid entity types and invites hallucinated values.