musicbrainz-mcp-server
An MCP server that provides access to open music metadata from MusicBrainz and the Cover Art Archive. It allows agents to search for artists, releases, recordings, works, and labels using Lucene queries or MBIDs. It supports resolving identifiers like ISRC, ISWC, and barcodes, browsing discographies, and fetching cover art images.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://musicbrainz.caseyjhand.com/mcpWhat its tools do
10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for artists or releases by name using Lucene queries
- Retrieve detailed artist profiles including discography and relationships
- Resolve ISRC, ISWC, or barcode identifiers to specific recordings or works
- Fetch cover art images for specific releases or release groups
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- musicbrainz-mcp-server 0.3.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 10 advertised
- Resources
- 1 advertised
- Resource templates
- 2 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"subscribe": true,
"listChanged": true
},
"extensions": {
"io.modelcontextprotocol/skills": {
"directoryRead": true
}
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
10 advertised
musicbrainz_search_entities — musicbrainz-mcp-server: search entities
Full-text search across a MusicBrainz entity type (artist, release-group, release, recording, work, label) using a Lucene query string. Returns ranked matches with MBID, name/title, disambiguation, subtype where applicable, release status, release-group secondary types, recording first-release dates, and a 0–100 relevance score (100 = exact). Release rows use status; other entity subtypes use type. Starting point when resolving a name to an MBID — chain the returned MBID into the matching musicbrainz_get_* tool. Results are in MusicBrainz score-descending order. Supports field-scoped Lucene syntax (e.g. `artist:radiohead AND country:GB`). Only the first 500 matches are accessible; narrow the query or use musicbrainz_browse_entities for complete linked sets.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"entityType",
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Positive integer page size (default 25); values above 100 are clamped to 100 with a notice. With MUSICBRAINZ_CLAMP_OVERSIZED_LIMITS=off, maximum 100 is enforced."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Lucene query string; must contain non-whitespace text. Plain text matches names/titles; field scoping (e.g. `artist:`, `country:`, `tag:`) is supported. Sent to MusicBrainz exactly as given."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Result offset for pagination (0-based, below 500). A page crossing the 500-match ceiling is reduced to the remaining window."
},
"entityType": {
"enum": [
"artist",
"release-group",
"release",
"recording",
"work",
"label"
],
"type": "string",
"description": "Which entity type to search."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"entityType",
"offset",
"results",
"effectiveQuery",
"totalCount"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"search_window_exceeded",
"blank_query"
],
"description": "Machine-readable failure mode. Declared by this tool: `search_window_exceeded`: The offset is at or beyond the 500-match search window. `blank_query`: The query contains only whitespace (it is blank after trimming). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"notice": {
"type": "string",
"description": "Limit clamp and pagination guidance, including zero matches, exhausted pages, and empty-page discrepancies."
},
"offset": {
"type": "number",
"description": "The effective zero-based result offset used for this page."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"mbid",
"name",
"score"
],
"properties": {
"date": {
"type": "string",
"description": "First-release date (release-group) or release date (release). Omitted when absent."
},
"mbid": {
"type": "string",
"description": "MusicBrainz identifier (UUID) — chain into the matching musicbrainz_get_* tool."
},
"name": {
"type": "string",
"description": "Entity name (artist/label) or title (release-group/release/recording/work)."
},
"type": {
"type": "string",
"description": "Entity subtype (artist type, release-group primary type, work type, label type). Omitted when absent."
},
"isrcs": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISRCs on a recording result. Omitted when none."
},
"iswcs": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISWCs on a work result. Omitted when none."
},
"score": {
"type": "number",
"description": "Lucene relevance score, 0–100. 100 = exact match; low scores are weak partial matches."
},
"length": {
"type": "string",
"description": "Recording length as m:ss. Omitted when unknown."
},
"status": {
"type": "string",
"description": "Release status (e.g. Official or Bootleg). Omitted for other entity types or when absent."
},
"country": {
"type": "string",
"description": "Country code, for release/artist/label results. Omitted when absent."
},
"artistCredit": {
"type": "string",
"description": "Credited artist string, for release-group/release/recording results. Omitted for artist/label/work."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier distinguishing same-named entities. Omitted when absent."
},
"secondaryTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Release-group secondary classifications, in upstream order. Omitted when empty; absence does not establish a studio album."
},
"firstReleaseDate": {
"type": "string",
"description": "Recording first-release date, possibly partial. Omitted when absent."
}
},
"description": "A ranked search hit. Type-specific fields appear only for the relevant entity type.",
"additionalProperties": false
},
"description": "Ranked matches, in MusicBrainz score-descending order."
},
"entityType": {
"type": "string",
"description": "The entity type that was searched."
},
"totalCount": {
"type": "number",
"description": "Total matches upstream before the limit/offset window."
},
"effectiveQuery": {
"type": "string",
"description": "The query string as sent to MusicBrainz."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_get_artist — musicbrainz-mcp-server: get artist
Artist profile by MBID: type, country, life span, gender, area with areaId, birth/formation and death/dissolution areas, IPI/ISNI identifiers, aliases, tags/genres, release-groups, band-membership / collaboration relationships, and external links. Chain areaId into musicbrainz_browse_entities link.area. Release-groups embed one upstream page (25); relationships are not capped. For the complete release-group list, call musicbrainz_browse_entities with target_type=release-group and link.artist.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mbid"
],
"properties": {
"mbid": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Artist MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted)."
},
"inc_relationships": {
"type": "boolean",
"default": true,
"description": "Include band-membership / collaboration relationships and external links (url-rels)."
},
"inc_release_groups": {
"type": "boolean",
"default": true,
"description": "Include the discography (release-groups). Capped at one page; use browse for the full set."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"mbid",
"name",
"ipis",
"isnis",
"aliases",
"tags",
"releaseGroups",
"relationships",
"externalLinks"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "number",
"description": "The one-page cap that was applied. Absent when not truncated."
},
"area": {
"type": "string",
"description": "Associated area name. Omitted when unknown."
},
"ipis": {
"type": "array",
"items": {
"type": "string"
},
"description": "IPI identifiers as exact strings in upstream order (may be empty)."
},
"mbid": {
"type": "string",
"description": "Artist MBID."
},
"name": {
"type": "string",
"description": "Artist name."
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"count"
],
"properties": {
"name": {
"type": "string",
"description": "Tag or genre name."
},
"count": {
"type": "number",
"description": "Community vote count for this tag."
}
},
"description": "A folksonomy tag or genre with its vote count.",
"additionalProperties": false
},
"description": "Community tags/genres with vote counts (may be empty)."
},
"type": {
"type": "string",
"description": "Artist type (Person, Group, Orchestra, …). Omitted when unknown."
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_mbid",
"entity_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (rejected before fetch), or MusicBrainz rejects it with HTTP 400. `entity_not_found`: The MBID is well-formed but no artist exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"isnis": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISNI identifiers as exact strings in upstream order (may be empty)."
},
"shown": {
"type": "number",
"description": "Number of release-groups returned. Absent when not truncated."
},
"areaId": {
"type": "string",
"description": "Area MBID for musicbrainz_browse_entities link.area. Omitted when unknown."
},
"gender": {
"type": "string",
"description": "Gender, for person-type artists. Omitted when unknown/inapplicable."
},
"notice": {
"type": "string",
"description": "How to fetch the complete discography when truncated."
},
"aliases": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Alias name."
},
"type": {
"type": "string",
"description": "Alias type (e.g. \"Artist name\", \"Legal name\"). Omitted when absent."
},
"locale": {
"type": "string",
"description": "BCP-47 locale of the alias. Omitted when absent."
},
"primary": {
"type": "boolean",
"description": "Whether this is the primary alias for its locale. Omitted when absent."
},
"sortName": {
"type": "string",
"description": "Sortable form of the alias. Omitted when absent."
}
},
"description": "An alternate name for the entity.",
"additionalProperties": false
},
"description": "Alternate names (may be empty)."
},
"country": {
"type": "string",
"description": "ISO country code. Omitted when unknown."
},
"endArea": {
"type": "object",
"properties": {
"mbid": {
"type": "string",
"description": "Area MBID. Omitted when unknown."
},
"name": {
"type": "string",
"description": "Area name. Omitted when unknown."
}
},
"description": "Death or dissolution area. Omitted when unknown.",
"additionalProperties": false
},
"lifeSpan": {
"type": "object",
"properties": {
"end": {
"type": "string",
"description": "End date. Omitted when unknown."
},
"begin": {
"type": "string",
"description": "Start date (YYYY, YYYY-MM, or YYYY-MM-DD). Omitted when unknown."
},
"ended": {
"type": "boolean",
"description": "Whether the entity has ended. Omitted when the upstream value is unknown/null."
}
},
"description": "Birth/death or formation/dissolution span. Omitted when unknown.",
"additionalProperties": false
},
"sortName": {
"type": "string",
"description": "Sortable name form. Omitted when absent."
},
"beginArea": {
"type": "object",
"properties": {
"mbid": {
"type": "string",
"description": "Area MBID. Omitted when unknown."
},
"name": {
"type": "string",
"description": "Area name. Omitted when unknown."
}
},
"description": "Birth or formation area. Omitted when unknown.",
"additionalProperties": false
},
"truncated": {
"type": "boolean",
"description": "True when the discography hit the one-page cap and more release-groups exist. Absent when the full set fit in one page."
},
"externalLinks": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"resource"
],
"properties": {
"type": {
"type": "string",
"description": "Link type (e.g. \"wikidata\", \"discogs\", \"official homepage\", \"streaming\")."
},
"resource": {
"type": "string",
"description": "The external URL. Wikidata/Discogs IDs live in the URL path — chain to those servers."
}
},
"description": "An external resource link (url-rel). Where cross-service IDs like Wikidata QID are surfaced.",
"additionalProperties": false
},
"description": "External resource links (url-rels) — Wikidata, Discogs, official site (may be empty)."
},
"relationships": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"targetType"
],
"properties": {
"end": {
"type": "string",
"description": "Relationship end date. Omitted when absent."
},
"type": {
"type": "string",
"description": "Relationship role (e.g. \"member of band\", \"producer\", \"writer\", \"performance\")."
},
"begin": {
"type": "string",
"description": "Relationship start date. Omitted when absent."
},
"targetId": {
"type": "string",
"description": "MBID of the related entity — chain to the matching get_* tool. Omitted for url targets."
},
"direction": {
"type": "string",
"description": "Relationship direction (\"forward\" | \"backward\"). Omitted when absent."
},
"attributes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Role modifiers (e.g. \"lead vocals\", \"assistant\", \"co\"). Omitted when none."
},
"targetName": {
"type": "string",
"description": "Name/title of the related entity. Omitted when absent."
},
"targetType": {
"type": "string",
"description": "Type of the related entity (\"artist\" | \"work\" | \"recording\" | \"label\" | \"url\")."
},
"orderingKey": {
"type": "number",
"description": "Upstream relationship sequence key, including zero. Omitted when unknown; array order is preserved."
},
"targetDisambiguation": {
"type": "string",
"description": "Qualifier distinguishing the related entity from namesakes. Omitted when absent."
}
},
"description": "A typed relationship to another entity (band membership, performer, writer, etc.).",
"additionalProperties": false
},
"description": "Band membership and collaboration relationships (may be empty)."
},
"releaseGroups": {
"type": "array",
"items": {
"type": "object",
"required": [
"mbid",
"title"
],
"properties": {
"mbid": {
"type": "string",
"description": "Release-group MBID — chain to musicbrainz_get_release_group."
},
"title": {
"type": "string",
"description": "Release-group title."
},
"primaryType": {
"type": "string",
"description": "Primary type (Album, Single, EP, …). Omitted when absent."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier. Omitted when absent."
},
"secondaryTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Secondary types (Live, Compilation, …). Omitted when none."
},
"firstReleaseDate": {
"type": "string",
"description": "First-release date. Omitted when absent."
}
},
"description": "A release-group in the artist discography (capped to one page — use browse for all).",
"additionalProperties": false
},
"description": "Discography — release-groups (one page; may be empty or capped)."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier distinguishing same-named artists. Omitted when absent."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_get_release_group — musicbrainz-mcp-server: get release group
Release-group ("the album" above specific pressings) by MBID: primary type (Album/Single/EP) and secondary types (Live/Compilation), first-release date, artist credit, the list of releases (editions), tags/genres, external album links, and cover-art availability from the Cover Art Archive (image count and front/back flags for the release-group's representative release — the art musicbrainz_get_cover_art returns; use that tool for the image URLs). The embedded releases list is capped at one page (25); for the complete set of editions, call musicbrainz_browse_entities with target_type=release and link.release-group. For a specific edition's tracklist, take a release MBID from the releases list and call musicbrainz_get_release.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mbid"
],
"properties": {
"mbid": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Release-group MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted)."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"mbid",
"title",
"artistCredit",
"artistCreditString",
"releases",
"tags",
"externalLinks"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "number",
"description": "The one-page cap that was applied. Absent when not truncated."
},
"mbid": {
"type": "string",
"description": "Release-group MBID."
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"count"
],
"properties": {
"name": {
"type": "string",
"description": "Tag or genre name."
},
"count": {
"type": "number",
"description": "Community vote count for this tag."
}
},
"description": "A folksonomy tag or genre with its vote count.",
"additionalProperties": false
},
"description": "Community tags/genres (may be empty)."
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_mbid",
"entity_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (rejected before fetch), or MusicBrainz rejects it with HTTP 400. `entity_not_found`: The MBID is well-formed but no release-group exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"shown": {
"type": "number",
"description": "Number of releases returned. Absent when not truncated."
},
"title": {
"type": "string",
"description": "Release-group title."
},
"notice": {
"type": "string",
"description": "Present when the releases list was capped (how to fetch the complete set of editions) and/or when cover-art availability could not be checked (why coverArt is omitted)."
},
"coverArt": {
"type": "object",
"required": [
"exists"
],
"properties": {
"back": {
"type": "boolean",
"description": "Whether a designated back image exists. Omitted when unknown."
},
"count": {
"type": "number",
"description": "Number of images available. Omitted when unknown."
},
"front": {
"type": "boolean",
"description": "Whether a designated front image exists. Omitted when unknown."
},
"exists": {
"type": "boolean",
"description": "Whether the Cover Art Archive has any artwork for this entity."
}
},
"description": "Cover-art availability from the Cover Art Archive: the images of the release-group's representative release, the same art musicbrainz_get_cover_art returns (exists: false with count 0 when the archive has none). Omitted when the archive lookup could not complete — the notice says so.",
"additionalProperties": false
},
"releases": {
"type": "array",
"items": {
"type": "object",
"required": [
"mbid",
"title"
],
"properties": {
"date": {
"type": "string",
"description": "Release date. Omitted when absent."
},
"mbid": {
"type": "string",
"description": "Release MBID — chain to musicbrainz_get_release for the tracklist."
},
"title": {
"type": "string",
"description": "Release (edition) title."
},
"status": {
"type": "string",
"description": "Release status (Official, Promotion, …). Omitted when absent."
},
"country": {
"type": "string",
"description": "Release country code. Omitted when absent."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier. Omitted when absent."
}
},
"description": "A release (edition) within the release-group.",
"additionalProperties": false
},
"description": "Releases (editions) in this group (one page; may be empty or capped — use browse for all)."
},
"truncated": {
"type": "boolean",
"description": "True when the releases list hit the one-page cap and more editions exist. Absent when the full set fit in one page."
},
"primaryType": {
"type": "string",
"description": "Primary type (Album, Single, EP, Broadcast, Other). Omitted when absent."
},
"artistCredit": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"artistId",
"artistName"
],
"properties": {
"name": {
"type": "string",
"description": "Credited name as it appears on the release (may be an alias)."
},
"artistId": {
"type": "string",
"description": "MBID of the credited artist — chain to musicbrainz_get_artist."
},
"artistName": {
"type": "string",
"description": "Canonical artist name."
},
"joinPhrase": {
"type": "string",
"description": "Text that joins this credit to the next (e.g. \" feat. \", \" & \"). Omitted when empty."
}
},
"description": "One credited artist within an artist credit.",
"additionalProperties": false
},
"description": "Credited artists (may be empty)."
},
"externalLinks": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"resource"
],
"properties": {
"type": {
"type": "string",
"description": "Link type (e.g. \"wikidata\", \"discogs\", \"official homepage\", \"streaming\")."
},
"resource": {
"type": "string",
"description": "The external URL. Wikidata/Discogs IDs live in the URL path — chain to those servers."
}
},
"description": "An external resource link (url-rel). Where cross-service IDs like Wikidata QID are surfaced.",
"additionalProperties": false
},
"description": "External album links, such as Wikidata and Discogs master pages (may be empty)."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier. Omitted when absent."
},
"secondaryTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Secondary types (Live, Compilation, Soundtrack, …). Omitted when none."
},
"firstReleaseDate": {
"type": "string",
"description": "Earliest release date across all editions. Omitted when absent."
},
"artistCreditString": {
"type": "string",
"description": "Display string of the artist credit with join phrases."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_get_release — musicbrainz-mcp-server: get release
One edition by MBID: ordered media with tracks, track-specific artist credits when supplied, lengths and recording MBIDs, label + catalog number, barcode, country, release date, packaging, text representation, external links, and a cover-art availability stub. media_offset (default 0) and media_limit (default 20, no maximum) select whole media after normalization; mediaTotal and trackTotal describe the full release. Follow the notice to retrieve remaining media. The release resource retains the complete raw tracklist. Track lengths are m:ss. For image URLs, call musicbrainz_get_cover_art.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mbid"
],
"properties": {
"mbid": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Release MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted)."
},
"media_limit": {
"type": "integer",
"default": 20,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Maximum whole media returned (default 20; no upper bound)."
},
"media_offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based medium offset in release order (default 0)."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"mbid",
"title",
"artistCredit",
"artistCreditString",
"labelInfo",
"externalLinks",
"mediaOffset",
"mediaTotal",
"trackTotal",
"media",
"coverArt"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "number",
"description": "Requested media limit when more remain."
},
"date": {
"type": "string",
"description": "Release date. Omitted when absent."
},
"mbid": {
"type": "string",
"description": "Release MBID."
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_mbid",
"entity_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (rejected before fetch), or MusicBrainz rejects it with HTTP 400. `entity_not_found`: The MBID is well-formed but no release exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"media": {
"type": "array",
"items": {
"type": "object",
"required": [
"tracks"
],
"properties": {
"title": {
"type": "string",
"description": "Medium title, when the disc is named. Omitted when absent."
},
"format": {
"type": "string",
"description": "Medium format (CD, Vinyl, Digital Media, …). Omitted when unknown."
},
"tracks": {
"type": "array",
"items": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"description": "Track title."
},
"length": {
"type": "string",
"description": "Track length as m:ss. Omitted when unknown."
},
"number": {
"type": "string",
"description": "Printed track number (may differ from position). Omitted when absent."
},
"position": {
"type": "number",
"description": "Track position on the medium. Omitted when absent."
},
"recordingId": {
"type": "string",
"description": "Recording MBID — chain to musicbrainz_get_recording. Omitted when absent."
},
"artistCredit": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"artistId",
"artistName"
],
"properties": {
"name": {
"type": "string",
"description": "Credited name as it appears on the release (may be an alias)."
},
"artistId": {
"type": "string",
"description": "MBID of the credited artist — chain to musicbrainz_get_artist."
},
"artistName": {
"type": "string",
"description": "Canonical artist name."
},
"joinPhrase": {
"type": "string",
"description": "Text that joins this credit to the next (e.g. \" feat. \", \" & \"). Omitted when empty."
}
},
"description": "One credited artist within an artist credit.",
"additionalProperties": false
},
"description": "Track-specific artist credit. Omitted when not supplied; may be empty."
},
"artistCreditString": {
"type": "string",
"description": "Track-specific display credit with verbatim join phrases. Omitted without credited artists."
}
},
"description": "A track on a medium, linked to its underlying recording.",
"additionalProperties": false
},
"description": "Tracks on this medium (may be empty)."
},
"position": {
"type": "number",
"description": "Medium position in the release (disc 1, 2, …). Omitted when absent."
},
"trackCount": {
"type": "number",
"description": "Number of tracks on the medium. Omitted when absent."
}
},
"description": "One physical/digital medium (disc) of the release.",
"additionalProperties": false
},
"description": "Selected media in release order, with complete tracklists for each medium (may be empty)."
},
"shown": {
"type": "number",
"description": "Number of media returned when more remain."
},
"title": {
"type": "string",
"description": "Release title."
},
"notice": {
"type": "string",
"description": "Next media_offset, exhaustion, or no-media guidance."
},
"script": {
"type": "string",
"description": "Text-representation script code. Omitted when absent."
},
"status": {
"type": "string",
"description": "Release status (Official, Promotion, Bootleg, …). Omitted when absent."
},
"barcode": {
"type": "string",
"description": "Barcode (UPC/EAN). Omitted when absent; empty string upstream means \"known to have none\"."
},
"country": {
"type": "string",
"description": "Release country code. Omitted when absent."
},
"coverArt": {
"type": "object",
"required": [
"exists"
],
"properties": {
"back": {
"type": "boolean",
"description": "Whether a designated back image exists. Omitted when unknown."
},
"count": {
"type": "number",
"description": "Number of images available. Omitted when unknown."
},
"front": {
"type": "boolean",
"description": "Whether a designated front image exists. Omitted when unknown."
},
"exists": {
"type": "boolean",
"description": "Whether the Cover Art Archive has any artwork for this entity."
}
},
"description": "Whether cover art exists (availability stub from WS/2).",
"additionalProperties": false
},
"language": {
"type": "string",
"description": "Text-representation language code. Omitted when absent."
},
"labelInfo": {
"type": "array",
"items": {
"type": "object",
"properties": {
"labelId": {
"type": "string",
"description": "Label MBID — chain to musicbrainz_get_label. Omitted when absent."
},
"labelName": {
"type": "string",
"description": "Label name. Omitted when absent."
},
"catalogNumber": {
"type": "string",
"description": "Catalog number on this release. Omitted when absent."
}
},
"description": "Label + catalog-number pairing for the release.",
"additionalProperties": false
},
"description": "Label / catalog-number pairings (may be empty)."
},
"packaging": {
"type": "string",
"description": "Packaging type (Jewel Case, Digipak, …). Omitted when absent."
},
"truncated": {
"type": "boolean",
"description": "True when media remain after this nonempty page."
},
"mediaTotal": {
"type": "number",
"description": "Exact number of media in the whole normalized release."
},
"trackTotal": {
"type": "number",
"description": "Exact number of track occurrences in the whole normalized release, independent of upstream trackCount."
},
"mediaOffset": {
"type": "number",
"description": "Effective zero-based medium offset."
},
"artistCredit": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"artistId",
"artistName"
],
"properties": {
"name": {
"type": "string",
"description": "Credited name as it appears on the release (may be an alias)."
},
"artistId": {
"type": "string",
"description": "MBID of the credited artist — chain to musicbrainz_get_artist."
},
"artistName": {
"type": "string",
"description": "Canonical artist name."
},
"joinPhrase": {
"type": "string",
"description": "Text that joins this credit to the next (e.g. \" feat. \", \" & \"). Omitted when empty."
}
},
"description": "One credited artist within an artist credit.",
"additionalProperties": false
},
"description": "Credited artists (may be empty)."
},
"externalLinks": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"resource"
],
"properties": {
"type": {
"type": "string",
"description": "Link type (e.g. \"wikidata\", \"discogs\", \"official homepage\", \"streaming\")."
},
"resource": {
"type": "string",
"description": "The external URL. Wikidata/Discogs IDs live in the URL path — chain to those servers."
}
},
"description": "An external resource link (url-rel). Where cross-service IDs like Wikidata QID are surfaced.",
"additionalProperties": false
},
"description": "External links for this edition, such as Discogs release pages (may be empty)."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier. Omitted when absent."
},
"releaseGroupId": {
"type": "string",
"description": "Parent release-group MBID — chain to musicbrainz_get_release_group. Omitted when absent."
},
"artistCreditString": {
"type": "string",
"description": "Display string of the artist credit with join phrases."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_get_recording — musicbrainz-mcp-server: get recording
Recording (a specific performance, distinct from the abstract work) by MBID: length, artist credits, ISRCs, one upstream page of release appearances with completeness metadata, work relationships, and performer/production credits with attributes and dates. Relationships are not capped. Enumerate releases with musicbrainz_browse_entities (target_type=release, link.recording, offset=0); embedded and browse order may differ. Browse recording by work enumerates recording entities; this tool supplies their work relationship details.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mbid"
],
"properties": {
"mbid": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Recording MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted)."
},
"inc_relationships": {
"type": "boolean",
"default": true,
"description": "Include performance/production, work and recording relationships (samples, mashups, music videos, DJ mixes), and external links."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"mbid",
"title",
"artistCredit",
"artistCreditString",
"isrcs",
"releases",
"releaseAppearanceSummary",
"relationships",
"externalLinks"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mbid": {
"type": "string",
"description": "Recording MBID."
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_mbid",
"entity_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (rejected before fetch), or MusicBrainz rejects it with HTTP 400. `entity_not_found`: The MBID is well-formed but no recording exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"isrcs": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISRCs assigned to this recording (may be empty)."
},
"title": {
"type": "string",
"description": "Recording title."
},
"length": {
"type": "string",
"description": "Recording length as m:ss. Omitted when unknown."
},
"releases": {
"type": "array",
"items": {
"type": "object",
"required": [
"mbid",
"title"
],
"properties": {
"date": {
"type": "string",
"description": "Release date. Omitted when absent."
},
"mbid": {
"type": "string",
"description": "Release MBID — chain to musicbrainz_get_release."
},
"title": {
"type": "string",
"description": "Release title."
},
"country": {
"type": "string",
"description": "Release country code. Omitted when absent."
}
},
"description": "A release this recording appears on.",
"additionalProperties": false
},
"description": "One upstream page of release appearances (up to 25; may be empty). See releaseAppearanceSummary for completeness."
},
"artistCredit": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"artistId",
"artistName"
],
"properties": {
"name": {
"type": "string",
"description": "Credited name as it appears on the release (may be an alias)."
},
"artistId": {
"type": "string",
"description": "MBID of the credited artist — chain to musicbrainz_get_artist."
},
"artistName": {
"type": "string",
"description": "Canonical artist name."
},
"joinPhrase": {
"type": "string",
"description": "Text that joins this credit to the next (e.g. \" feat. \", \" & \"). Omitted when empty."
}
},
"description": "One credited artist within an artist credit.",
"additionalProperties": false
},
"description": "Credited artists (may be empty)."
},
"externalLinks": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"resource"
],
"properties": {
"type": {
"type": "string",
"description": "Link type (e.g. \"wikidata\", \"discogs\", \"official homepage\", \"streaming\")."
},
"resource": {
"type": "string",
"description": "The external URL. Wikidata/Discogs IDs live in the URL path — chain to those servers."
}
},
"description": "An external resource link (url-rel). Where cross-service IDs like Wikidata QID are surfaced.",
"additionalProperties": false
},
"description": "External resource links (url-rels) (may be empty)."
},
"relationships": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"targetType"
],
"properties": {
"end": {
"type": "string",
"description": "Relationship end date. Omitted when absent."
},
"type": {
"type": "string",
"description": "Relationship role (e.g. \"member of band\", \"producer\", \"writer\", \"performance\")."
},
"begin": {
"type": "string",
"description": "Relationship start date. Omitted when absent."
},
"targetId": {
"type": "string",
"description": "MBID of the related entity — chain to the matching get_* tool. Omitted for url targets."
},
"direction": {
"type": "string",
"description": "Relationship direction (\"forward\" | \"backward\"). Omitted when absent."
},
"attributes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Role modifiers (e.g. \"lead vocals\", \"assistant\", \"co\"). Omitted when none."
},
"targetName": {
"type": "string",
"description": "Name/title of the related entity. Omitted when absent."
},
"targetType": {
"type": "string",
"description": "Type of the related entity (\"artist\" | \"work\" | \"recording\" | \"label\" | \"url\")."
},
"orderingKey": {
"type": "number",
"description": "Upstream relationship sequence key, including zero. Omitted when unknown; array order is preserved."
},
"targetDisambiguation": {
"type": "string",
"description": "Qualifier distinguishing the related entity from namesakes. Omitted when absent."
}
},
"description": "A typed relationship to another entity (band membership, performer, writer, etc.).",
"additionalProperties": false
},
"description": "Performance/production, work and recording relationships in upstream order, uncapped (may be empty)."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier. Omitted when absent."
},
"firstReleaseDate": {
"type": "string",
"description": "Earliest release date for this recording. Omitted when absent."
},
"artistCreditString": {
"type": "string",
"description": "Display string of the artist credit with join phrases."
},
"releaseAppearanceSummary": {
"type": "object",
"required": [
"shown",
"cap",
"completeness",
"notice"
],
"properties": {
"cap": {
"type": "number",
"description": "Upstream embedded page size (25)."
},
"shown": {
"type": "number",
"description": "Release appearances returned in the embedded page."
},
"notice": {
"type": "string",
"description": "Browse guidance starting at offset 0, independent of embedded order."
},
"totalCount": {
"type": "number",
"description": "Exact release total from upstream or a short present page. Omitted when unknown."
},
"completeness": {
"enum": [
"complete",
"unknown",
"truncated"
],
"type": "string",
"description": "Complete for a short present page or exact total; unknown without proof; truncated only when the exact total exceeds shown."
}
},
"description": "Completeness evidence derived only from this recording lookup.",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_get_work — musicbrainz-mcp-server: get work
Work (a composition, distinct from a recording) by MBID: type, languages, ISWCs, ordered work attributes (rights-society registrations, musical key and other metadata), writers/composers/lyricists, movements, arrangements, aliases, tags, and external links. Attributes remain available when relationships are disabled. Follow work target MBIDs with this tool; direction, orderingKey, and targetDisambiguation distinguish parts and arrangements without reordering relationships. This server returns the first 25 recording relationships with their exact total and actual truncation disclosure, preserving all other relationships. Browse recording entities with musicbrainz_browse_entities (target_type=recording, link.work), then use musicbrainz_get_recording for work relationship attributes and dates; browse alone does not return those details.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mbid"
],
"properties": {
"mbid": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Work MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted)."
},
"inc_relationships": {
"type": "boolean",
"default": true,
"description": "Include writer/composer, movement/arrangement and recording relationships, and external links."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"mbid",
"title",
"languages",
"iswcs",
"attributes",
"aliases",
"tags",
"relationships",
"externalLinks"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "number",
"description": "Server-side recording relationship cap, when truncated."
},
"mbid": {
"type": "string",
"description": "Work MBID."
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"count"
],
"properties": {
"name": {
"type": "string",
"description": "Tag or genre name."
},
"count": {
"type": "number",
"description": "Community vote count for this tag."
}
},
"description": "A folksonomy tag or genre with its vote count.",
"additionalProperties": false
},
"description": "Community tags/genres (may be empty)."
},
"type": {
"type": "string",
"description": "Work type (Song, Symphony, …). Omitted when unknown."
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_mbid",
"entity_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (rejected before fetch), or MusicBrainz rejects it with HTTP 400. `entity_not_found`: The MBID is well-formed but no work exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"iswcs": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISWCs assigned to this work (may be empty)."
},
"shown": {
"type": "number",
"description": "Number of recording relationships returned when truncated."
},
"title": {
"type": "string",
"description": "Work title."
},
"notice": {
"type": "string",
"description": "Recording enumeration and relationship-detail retrieval guidance when truncated."
},
"aliases": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Alias name."
},
"type": {
"type": "string",
"description": "Alias type (e.g. \"Artist name\", \"Legal name\"). Omitted when absent."
},
"locale": {
"type": "string",
"description": "BCP-47 locale of the alias. Omitted when absent."
},
"primary": {
"type": "boolean",
"description": "Whether this is the primary alias for its locale. Omitted when absent."
},
"sortName": {
"type": "string",
"description": "Sortable form of the alias. Omitted when absent."
}
},
"description": "An alternate name for the entity.",
"additionalProperties": false
},
"description": "Alternate titles (may be empty)."
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"description": "Lyrics languages (ISO codes; may be empty)."
},
"truncated": {
"type": "boolean",
"description": "True only when recording relationships were omitted beyond 25."
},
"attributes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Attribute type, such as a rights society or musical key. Omitted when unknown."
},
"value": {
"type": "string",
"description": "Exact attribute value, preserving spaces and leading zeros. Omitted when unknown."
}
},
"description": "One work attribute; known members of sparse rows are preserved.",
"additionalProperties": false
},
"description": "Work attributes in upstream order, including repeated types (may be empty)."
},
"totalCount": {
"type": "number",
"description": "Exact number of recording relationships before the server-side slice. Absent when relationships are disabled."
},
"externalLinks": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"resource"
],
"properties": {
"type": {
"type": "string",
"description": "Link type (e.g. \"wikidata\", \"discogs\", \"official homepage\", \"streaming\")."
},
"resource": {
"type": "string",
"description": "The external URL. Wikidata/Discogs IDs live in the URL path — chain to those servers."
}
},
"description": "An external resource link (url-rel). Where cross-service IDs like Wikidata QID are surfaced.",
"additionalProperties": false
},
"description": "External resource links (url-rels) (may be empty)."
},
"relationships": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"targetType"
],
"properties": {
"end": {
"type": "string",
"description": "Relationship end date. Omitted when absent."
},
"type": {
"type": "string",
"description": "Relationship role (e.g. \"member of band\", \"producer\", \"writer\", \"performance\")."
},
"begin": {
"type": "string",
"description": "Relationship start date. Omitted when absent."
},
"targetId": {
"type": "string",
"description": "MBID of the related entity — chain to the matching get_* tool. Omitted for url targets."
},
"direction": {
"type": "string",
"description": "Relationship direction (\"forward\" | \"backward\"). Omitted when absent."
},
"attributes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Role modifiers (e.g. \"lead vocals\", \"assistant\", \"co\"). Omitted when none."
},
"targetName": {
"type": "string",
"description": "Name/title of the related entity. Omitted when absent."
},
"targetType": {
"type": "string",
"description": "Type of the related entity (\"artist\" | \"work\" | \"recording\" | \"label\" | \"url\")."
},
"orderingKey": {
"type": "number",
"description": "Upstream relationship sequence key, including zero. Omitted when unknown; array order is preserved."
},
"targetDisambiguation": {
"type": "string",
"description": "Qualifier distinguishing the related entity from namesakes. Omitted when absent."
}
},
"description": "A typed relationship to another entity (band membership, performer, writer, etc.).",
"additionalProperties": false
},
"description": "All non-recording relationships and the first 25 recording relationships in upstream order (may be empty)."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier. Omitted when absent."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_get_label — musicbrainz-mcp-server: get label
Label by MBID: type (Original Production, Reissue, Imprint, …), country, life span, label code (the LC number), area and areaId, IPI/ISNI identifiers, aliases, tags, ownership/imprint/distribution relationships, and external links (url-rels — Wikidata, Discogs, official site). Chain areaId into musicbrainz_browse_entities link.area. A label's releases are a potentially huge linked set (a major label can have tens of thousands), so they are NOT embedded here — enumerate them with musicbrainz_browse_entities (target_type=release, link.label).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mbid"
],
"properties": {
"mbid": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Label MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted)."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"mbid",
"name",
"ipis",
"isnis",
"aliases",
"tags",
"externalLinks",
"relationships"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"area": {
"type": "string",
"description": "Associated area name. Omitted when unknown."
},
"ipis": {
"type": "array",
"items": {
"type": "string"
},
"description": "IPI identifiers as exact strings in upstream order (may be empty)."
},
"mbid": {
"type": "string",
"description": "Label MBID."
},
"name": {
"type": "string",
"description": "Label name."
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"count"
],
"properties": {
"name": {
"type": "string",
"description": "Tag or genre name."
},
"count": {
"type": "number",
"description": "Community vote count for this tag."
}
},
"description": "A folksonomy tag or genre with its vote count.",
"additionalProperties": false
},
"description": "Community tags/genres (may be empty)."
},
"type": {
"type": "string",
"description": "Label type. Omitted when unknown."
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_mbid",
"entity_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (rejected before fetch), or MusicBrainz rejects it with HTTP 400. `entity_not_found`: The MBID is well-formed but no label exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"isnis": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISNI identifiers as exact strings in upstream order (may be empty)."
},
"areaId": {
"type": "string",
"description": "Area MBID for musicbrainz_browse_entities link.area. Omitted when unknown."
},
"aliases": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Alias name."
},
"type": {
"type": "string",
"description": "Alias type (e.g. \"Artist name\", \"Legal name\"). Omitted when absent."
},
"locale": {
"type": "string",
"description": "BCP-47 locale of the alias. Omitted when absent."
},
"primary": {
"type": "boolean",
"description": "Whether this is the primary alias for its locale. Omitted when absent."
},
"sortName": {
"type": "string",
"description": "Sortable form of the alias. Omitted when absent."
}
},
"description": "An alternate name for the entity.",
"additionalProperties": false
},
"description": "Alternate names (may be empty)."
},
"country": {
"type": "string",
"description": "ISO country code. Omitted when unknown."
},
"lifeSpan": {
"type": "object",
"properties": {
"end": {
"type": "string",
"description": "End date. Omitted when unknown."
},
"begin": {
"type": "string",
"description": "Start date (YYYY, YYYY-MM, or YYYY-MM-DD). Omitted when unknown."
},
"ended": {
"type": "boolean",
"description": "Whether the entity has ended. Omitted when the upstream value is unknown/null."
}
},
"description": "Founding/dissolution span. Omitted when unknown.",
"additionalProperties": false
},
"sortName": {
"type": "string",
"description": "Sortable name form. Omitted when absent."
},
"labelCode": {
"type": "number",
"description": "Label code (LC number), without the \"LC\" prefix. Omitted when absent."
},
"externalLinks": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"resource"
],
"properties": {
"type": {
"type": "string",
"description": "Link type (e.g. \"wikidata\", \"discogs\", \"official homepage\", \"streaming\")."
},
"resource": {
"type": "string",
"description": "The external URL. Wikidata/Discogs IDs live in the URL path — chain to those servers."
}
},
"description": "An external resource link (url-rel). Where cross-service IDs like Wikidata QID are surfaced.",
"additionalProperties": false
},
"description": "External resource links (url-rels) (may be empty)."
},
"relationships": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"targetType"
],
"properties": {
"end": {
"type": "string",
"description": "Relationship end date. Omitted when absent."
},
"type": {
"type": "string",
"description": "Relationship role (e.g. \"member of band\", \"producer\", \"writer\", \"performance\")."
},
"begin": {
"type": "string",
"description": "Relationship start date. Omitted when absent."
},
"targetId": {
"type": "string",
"description": "MBID of the related entity — chain to the matching get_* tool. Omitted for url targets."
},
"direction": {
"type": "string",
"description": "Relationship direction (\"forward\" | \"backward\"). Omitted when absent."
},
"attributes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Role modifiers (e.g. \"lead vocals\", \"assistant\", \"co\"). Omitted when none."
},
"targetName": {
"type": "string",
"description": "Name/title of the related entity. Omitted when absent."
},
"targetType": {
"type": "string",
"description": "Type of the related entity (\"artist\" | \"work\" | \"recording\" | \"label\" | \"url\")."
},
"orderingKey": {
"type": "number",
"description": "Upstream relationship sequence key, including zero. Omitted when unknown; array order is preserved."
},
"targetDisambiguation": {
"type": "string",
"description": "Qualifier distinguishing the related entity from namesakes. Omitted when absent."
}
},
"description": "A typed relationship to another entity (band membership, performer, writer, etc.).",
"additionalProperties": false
},
"description": "Label ownership, imprint and distribution relationships in upstream order, uncapped (may be empty)."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier. Omitted when absent."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_lookup_identifier — musicbrainz-mcp-server: lookup identifier
Resolve a standard identifier to MusicBrainz entities without a name search — the deterministic path when you already hold an ID. id_type=isrc → recordings (a recording-level code, often shared by several recordings); id_type=iswc → works (a composition-level code); id_type=barcode → releases (UPC/EAN digits; spaces and hyphens are ignored). ISRC and ISWC hit dedicated exact endpoints; barcode is a Lucene search filter so results are ranked (exact match scores 100). The output kind field tells you which entity type came back.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id_type",
"value"
],
"properties": {
"value": {
"type": "string",
"examples": [
"GBAYE9701274",
"GB-AYE-97-01274",
"T-010.140.236-1",
"T0101402361",
"075678164125"
],
"minLength": 1,
"description": "ISRC: compact CCXXXYYNNNNN or grouped CC-XXX-YY-NNNNN (e.g. GBAYE9701274 or GB-AYE-97-01274), case-insensitive with surrounding whitespace. ISWC: T plus ten digits, optional hyphen after T, optional dots between three-digit groups, optional hyphen/dot before the check digit (e.g. T-010.140.236-1 or T0101402361); whitespace and case are ignored. Echoes canonical uppercase ISRC or T-DDD.DDD.DDD-C ISWC. Barcode: UPC/EAN digits, e.g. 075678164125; spaces and hyphens are ignored, other characters rejected."
},
"id_type": {
"enum": [
"isrc",
"iswc",
"barcode"
],
"type": "string",
"description": "Which standard identifier: isrc (recording), iswc (work), or barcode (release)."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"result"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"identifier_not_found",
"invalid_identifier"
],
"description": "Machine-readable failure mode. Declared by this tool: `identifier_not_found`: The identifier is well-formed but resolves to zero entities. `invalid_identifier`: The ISRC/ISWC fails its accepted grammar locally or the dedicated endpoint rejects it with HTTP 400, or the barcode contains anything other than digits once spaces and hyphens are removed. Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"result": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"identifier",
"recordings"
],
"properties": {
"kind": {
"type": "string",
"const": "recordings",
"description": "ISRC resolved to recordings."
},
"identifier": {
"type": "string",
"description": "The looked-up identifier value."
},
"recordings": {
"type": "array",
"items": {
"type": "object",
"required": [
"mbid",
"title",
"artistCredit"
],
"properties": {
"mbid": {
"type": "string",
"description": "Recording MBID — chain to musicbrainz_get_recording."
},
"title": {
"type": "string",
"description": "Recording title."
},
"length": {
"type": "string",
"description": "Recording length as m:ss. Omitted when unknown."
},
"artistCredit": {
"type": "string",
"description": "Credited artist string; falls back to \"Unknown artist\" when none is recorded."
}
},
"description": "A recording carrying the looked-up ISRC.",
"additionalProperties": false
},
"description": "Recordings carrying this ISRC."
}
},
"description": "ISRC result arm: recordings carrying the ISRC.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"identifier",
"works"
],
"properties": {
"kind": {
"type": "string",
"const": "works",
"description": "ISWC resolved to works."
},
"works": {
"type": "array",
"items": {
"type": "object",
"required": [
"mbid",
"title"
],
"properties": {
"mbid": {
"type": "string",
"description": "Work MBID — chain to musicbrainz_get_work."
},
"type": {
"type": "string",
"description": "Work type. Omitted when absent."
},
"title": {
"type": "string",
"description": "Work title."
}
},
"description": "A work carrying the looked-up ISWC.",
"additionalProperties": false
},
"description": "Works carrying this ISWC."
},
"identifier": {
"type": "string",
"description": "The looked-up identifier value."
}
},
"description": "ISWC result arm: works carrying the ISWC.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"kind",
"identifier",
"releases"
],
"properties": {
"kind": {
"type": "string",
"const": "releases",
"description": "Barcode resolved to releases."
},
"releases": {
"type": "array",
"items": {
"type": "object",
"required": [
"mbid",
"title",
"artistCredit",
"score"
],
"properties": {
"date": {
"type": "string",
"description": "Release date. Omitted when absent."
},
"mbid": {
"type": "string",
"description": "Release MBID — chain to musicbrainz_get_release."
},
"score": {
"type": "number",
"description": "Lucene relevance score, 0–100 (barcode is a search filter; exact = 100)."
},
"title": {
"type": "string",
"description": "Release title."
},
"country": {
"type": "string",
"description": "Release country code. Omitted when absent."
},
"artistCredit": {
"type": "string",
"description": "Credited artist string."
}
},
"description": "A release carrying the looked-up barcode.",
"additionalProperties": false
},
"description": "Releases carrying this barcode (ranked)."
},
"identifier": {
"type": "string",
"description": "The barcode digits that were searched (spaces and hyphens removed)."
}
},
"description": "Barcode result arm: releases carrying the barcode.",
"additionalProperties": false
}
],
"description": "The resolved entities, discriminated by `kind` (recordings | works | releases)."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_browse_entities — musicbrainz-mcp-server: browse entities
Paginate entities linked to one parent MBID. Accepted parents by target: artist → area, recording, release, release-group, work; label → area, release; release-group → artist, release; release → area, artist, label, recording, release-group, track_artist; recording → artist, release, work; work → artist. track_artist enumerates releases crediting an artist on tracks but not at release level. Artist release-groups and release-group editions embed one upstream page in get_* lookups; use this tool for the complete entity set. Recording browse returns identities, not performance attributes/dates or ordered release tracks: use musicbrainz_get_recording for work relationships and musicbrainz_get_release for tracks. Provide exactly one valid parent link. offset pages to any depth; totalCount is the exact filtered upstream entity total. Optional type/status filters apply only on supported parent pairs; preserve applied filters on continuation. Release rows carry status, other entity subtypes use type; release-groups include secondaryTypes and recordings include firstReleaseDate when available.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"target_type",
"link"
],
"properties": {
"link": {
"type": "object",
"properties": {
"area": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Parent area MBID (artists, labels, or releases in this area)."
},
"work": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Parent work MBID (artists or recordings linked to this work)."
},
"label": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Parent label MBID (releases on this label)."
},
"artist": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Parent artist MBID (e.g. release-groups/recordings/releases by this artist)."
},
"release": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Parent release MBID (artists, labels, release-groups, or recording entities in this edition; recordings are not ordered tracks)."
},
"recording": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Parent recording MBID (artists or releases linked to this recording)."
},
"releaseGroup": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Alias for release-group; use only one spelling."
},
"track_artist": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Artist MBID for release-only browse: releases crediting the artist on tracks but not at release level."
},
"release-group": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Parent release-group MBID (releases in this group)."
},
"release_group": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Alias for release-group; use only one spelling."
}
},
"description": "Exactly one parent MBID. The valid key depends on target_type (see the description).",
"additionalProperties": {}
},
"type": {
"type": "string",
"description": "Pipe-separated release types: album, single, ep, broadcast, other, audio drama, audiobook, compilation, demo, dj-mix, field recording, interview, live, mixtape/street, remix, soundtrack, spokenword. Supported for release-group by artist and release by artist/label/recording/track_artist. Primary types union; primary and secondary categories intersect; release-group by artist requires all secondary types. Tokens are trimmed/lowercased; blank means absent."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Positive integer page size (default 25); values above 100 are clamped to 100 with a notice. With MUSICBRAINZ_CLAMP_OVERSIZED_LIMITS=off, maximum 100 is enforced."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Result offset for deep pagination (0-based)."
},
"status": {
"type": "string",
"description": "Pipe-separated statuses for release by artist/label/recording/release-group/track_artist: official, promotion, bootleg, pseudo-release, withdrawn, cancelled. Tokens are trimmed/lowercased and unioned; blank means absent."
},
"target_type": {
"enum": [
"artist",
"release-group",
"release",
"recording",
"work",
"label"
],
"type": "string",
"description": "The entity type to enumerate (the children)."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"targetType",
"linkType",
"linkMbid",
"entities",
"offset",
"totalCount"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "number",
"description": "The page size that was applied. Absent when not truncated."
},
"type": {
"type": "string",
"description": "Canonical applied pipe-separated type filter; preserve on continuation."
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_filter",
"invalid_link",
"entity_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_filter`: A nonempty type/status filter has an unknown token, an empty pipe-list member, or is unsupported for the target and parent. `invalid_link`: A parent key is unknown, aliases collide, not exactly one nonempty parent is supplied, or the MBID/parent combination is invalid. `entity_not_found`: The link MBID is well-formed but no such parent entity exists (HTTP 404). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"shown": {
"type": "number",
"description": "Number of entities returned in this page. Absent when not truncated."
},
"notice": {
"type": "string",
"description": "How to page further when results remain, or guidance when empty."
},
"offset": {
"type": "number",
"description": "The offset used for this page."
},
"status": {
"type": "string",
"description": "Canonical applied pipe-separated status filter; preserve on continuation."
},
"entities": {
"type": "array",
"items": {
"type": "object",
"required": [
"mbid",
"name"
],
"properties": {
"date": {
"type": "string",
"description": "First-release/release date, where applicable. Omitted when absent."
},
"mbid": {
"type": "string",
"description": "Entity MBID — chain to the matching musicbrainz_get_* tool."
},
"name": {
"type": "string",
"description": "Entity name (artist/label) or title (release-group/release/recording/work)."
},
"type": {
"type": "string",
"description": "Entity subtype, where applicable. Omitted when absent."
},
"length": {
"type": "string",
"description": "Recording length as m:ss. Omitted when not a recording / unknown."
},
"status": {
"type": "string",
"description": "Release status (e.g. Official or Bootleg). Omitted for other entity types or when absent."
},
"country": {
"type": "string",
"description": "Country code, where applicable. Omitted when absent."
},
"artistCredit": {
"type": "string",
"description": "Credited artist string, for release-group/release/recording. Omitted otherwise."
},
"disambiguation": {
"type": "string",
"description": "Short qualifier. Omitted when absent."
},
"secondaryTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Release-group secondary classifications in upstream order. Omitted when empty; absence does not establish a studio album."
},
"firstReleaseDate": {
"type": "string",
"description": "Recording first-release date, possibly partial. Omitted when absent."
}
},
"description": "A lightweight reference to a linked entity.",
"additionalProperties": false
},
"description": "This page of linked entities, in upstream order."
},
"linkMbid": {
"type": "string",
"description": "The parent MBID that was browsed."
},
"linkType": {
"type": "string",
"description": "The parent link type used (artist, track_artist, label, release-group, release, recording, work, or area)."
},
"truncated": {
"type": "boolean",
"description": "True when more entities remain beyond this page (offset + shown < totalCount). Absent when the page is complete."
},
"targetType": {
"type": "string",
"description": "The entity type that was enumerated."
},
"totalCount": {
"type": "number",
"description": "True total number of linked entities upstream (the {type}-count field)."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}musicbrainz_get_cover_art — musicbrainz-mcp-server: get cover art
Cover Art Archive images for a release or release-group MBID: front/back flags, image types, full-resolution URLs, and 250/500/1200px thumbnail URLs. limit defaults to 25 and clamps above 100; offset defaults to 0. Pages retain archive order, totalCount counts all images, and hasArt describes the full archive even on an empty page. Follow the notice for the next offset. No art is a successful empty result; an unknown MBID fails with entity_not_found after a bounded MusicBrainz check. A release-group resolves to a representative release's art. URLs are linked, never rehosted; image copyright stays with rights holders.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mbid"
],
"properties": {
"mbid": {
"type": "string",
"pattern": "^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$",
"description": "Release or release-group MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted)."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Maximum images returned (default 25; values above 100 clamp to 100 with a notice)."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based image offset in archive order (default 0)."
},
"entity_type": {
"enum": [
"release",
"release-group"
],
"type": "string",
"default": "release",
"description": "Whether the MBID is a release (default) or a release-group."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"mbid",
"entityType",
"offset",
"images",
"hasArt",
"totalCount"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cap": {
"type": "number",
"description": "Applied image limit when more remain."
},
"mbid": {
"type": "string",
"description": "The MBID that was queried."
},
"error": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"examples": [
"invalid_mbid",
"entity_not_found"
],
"description": "Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (rejected before fetch), or an upstream rejects it with HTTP 400. `entity_not_found`: The MBID is well-formed but no entity of the given entity_type exists with it (the archive returns 404 and the MusicBrainz check of the MBID returns 404). Other values are possible when a failure originates below the handler."
},
"recovery": {
"type": "object",
"required": [
"hint"
],
"properties": {
"hint": {
"type": "string"
}
},
"description": "Actionable next step for the caller.",
"additionalProperties": {}
},
"retryable": {
"type": "boolean",
"description": "Whether retrying may succeed."
}
},
"additionalProperties": {}
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
}
},
"description": "Present when the call failed. Absent on success.",
"additionalProperties": {}
},
"shown": {
"type": "number",
"description": "Images returned when more remain."
},
"hasArt": {
"type": "boolean",
"description": "Whether any cover art exists for this entity."
},
"images": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"front",
"back",
"types",
"imageUrl"
],
"properties": {
"id": {
"type": "string",
"description": "Cover Art Archive image ID."
},
"back": {
"type": "boolean",
"description": "Whether this is a designated back image."
},
"front": {
"type": "boolean",
"description": "Whether this is a designated front image."
},
"types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Image types (Front, Back, Booklet, Medium, …; may be empty)."
},
"comment": {
"type": "string",
"description": "Editor comment on the image. Omitted when absent."
},
"approved": {
"type": "boolean",
"description": "Whether the image is community-approved. Omitted when unknown."
},
"imageUrl": {
"type": "string",
"description": "Full-resolution image URL (linked, not rehosted — copyright stays with the rights holder)."
},
"thumbnail250": {
"type": "string",
"description": "250px thumbnail URL. Omitted when unavailable."
},
"thumbnail500": {
"type": "string",
"description": "500px thumbnail URL. Omitted when unavailable."
},
"thumbnail1200": {
"type": "string",
"description": "1200px thumbnail URL. Omitted when unavailable."
}
},
"description": "One cover-art image with its full URL and thumbnails.",
"additionalProperties": false
},
"description": "Selected cover-art images in archive order (empty for no art or an exhausted page)."
},
"notice": {
"type": "string",
"description": "Combined limit clamp, continuation, exhausted page, or no-art/existence-unconfirmed guidance."
},
"offset": {
"type": "number",
"description": "Effective zero-based image offset in archive order."
},
"truncated": {
"type": "boolean",
"description": "True when images remain after this nonempty page."
},
"entityType": {
"type": "string",
"description": "Whether the MBID was treated as a release or release-group."
},
"totalCount": {
"type": "number",
"description": "Exact image total before the limit and offset window."
},
"representativeRelease": {
"type": "string",
"description": "For a release-group query, the release MBID whose art was returned. Omitted for direct release queries."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}Prompts
0 advertised
Resources
1 advertised
musicbrainz-guide
Resolve music identities and follow musicbrainz_* tools across discographies, editions, tracklists, recordings, compositions, credits, and artwork. Use for multi-step music metadata research, ISRC/ISWC/barcode resolution, or MusicBrainz Lucene queries.
skill://musicbrainz-guide/SKILL.mdmusicbrainz-entity — musicbrainz-mcp-server: entity
A MusicBrainz entity by type and MBID with default linked data, including release/release-group URL links, recording-to-recording and label relationships. entity_type: artist, release-group, release, recording, work, label. Artist release-groups, release-group editions and recording release appearances embed one upstream page; labels embed no releases. Recording JSON includes releaseAppearanceSummary (shown, cap, completeness, optional exact totalCount and browse guidance from offset 0). Work JSON includes raw movement/arrangement relationships with direction, ordering-key and target disambiguation when supplied. Work recording relationships are sliced to 25 with recordingRelationshipSummary (exact relationship total and actual truncation). All other relationships and complete release tracklists are preserved; release-tool media windows do not apply here. Browse recording by work enumerates identities; musicbrainz_get_recording supplies work relationship attributes and dates.
musicbrainz://{entity_type}/{mbid}io.modelcontextprotocol/skills
skill://{+path}90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 621 ms
- 95th percentile latency
- 621 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 621 ms · metadata changed · 10 tool(s), 1 resource(s), 2 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http musicbrainz-mcp-server-caseyjhand https://musicbrainz.caseyjhand.com/mcpCodex
codex mcp add musicbrainz-mcp-server-caseyjhand --url https://musicbrainz.caseyjhand.com/mcpCursor
{
"mcpServers": {
"musicbrainz-mcp-server-caseyjhand": {
"url": "https://musicbrainz.caseyjhand.com/mcp"
}
}
}Cline
{
"mcpServers": {
"musicbrainz-mcp-server-caseyjhand": {
"type": "streamableHttp",
"url": "https://musicbrainz.caseyjhand.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"musicbrainz-mcp-server-caseyjhand": {
"type": "http",
"url": "https://musicbrainz.caseyjhand.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http musicbrainz-mcp-server-caseyjhand https://musicbrainz.caseyjhand.com/mcpClaude Desktop
https://musicbrainz.caseyjhand.com/mcpWindsurf
{
"mcpServers": {
"musicbrainz-mcp-server-caseyjhand": {
"serverUrl": "https://musicbrainz.caseyjhand.com/mcp"
}
}
}Let your agent find its tools
Find servers like musicbrainz-mcp-server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.