Search MusicBrainz artists, releases, works, labels; resolve ISRC/ISWC/barcode; fetch cover art.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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; recording → artist, release, work; work → artist. 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 upstream entity total. Release rows carry status, other entity subtypes use type.
Exactly one parent MBID. The valid key depends on target_type (see the description).
The entity type to enumerate (the children).
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.
Result offset for deep pagination (0-based).
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; recording → artist, release, work; work → artist. 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 upstream entity total. Release rows carry status, other entity subtypes use type.
| Argument | Type | Description |
|---|---|---|
| link* | object | Exactly one parent MBID. The valid key depends on target_type (see the description). |
| limit | integer | 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 | integer | Result offset for deep pagination (0-based). |
| target_type* | string | The entity type to enumerate (the children). |
{
"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."
},
"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": {}
},
"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)."
},
"target_type": {
"enum": [
"artist",
"release-group",
"release",
"recording",
"work",
"label"
],
"type": "string",
"description": "The entity type to enumerate (the children)."
}
},
"additionalProperties": false
}Artist profile by MBID: type, country, life span, gender, area, aliases, tags/genres, release-groups, band-membership / collaboration relationships, and external links. 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.
| Argument | Type | Description |
|---|---|---|
| mbid* | string | Artist MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted). |
| inc_relationships | boolean | Include band-membership / collaboration relationships and external links (url-rels). |
| inc_release_groups | boolean | Include the discography (release-groups). Capped at one page; use browse for the full set. |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| mbid* | string | Release or release-group MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted). |
| limit | integer | Maximum images returned (default 25; values above 100 clamp to 100 with a notice). |
| offset | integer | Zero-based image offset in archive order (default 0). |
| entity_type | string | Whether the MBID is a release (default) or a release-group. |
{
"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
}Label by MBID: type (Original Production, Reissue, Imprint, …), country, life span, label code (the LC number), area, aliases, tags, and external links (url-rels — Wikidata, Discogs, official site). 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).
| Argument | Type | Description |
|---|---|---|
| mbid* | string | Label MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted). |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| mbid* | string | Recording MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted). |
| inc_relationships | boolean | Include performance/production relationships (performers, producers, engineers) and work-rels. |
{
"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 relationships (performers, producers, engineers) and work-rels."
}
},
"additionalProperties": false
}One edition by MBID: ordered media with tracks, lengths and recording MBIDs, label + catalog number, barcode, country, release date, packaging, text representation, 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.
| Argument | Type | Description |
|---|---|---|
| mbid* | string | Release MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted). |
| media_limit | integer | Maximum whole media returned (default 20; no upper bound). |
| media_offset | integer | Zero-based medium offset in release order (default 0). |
{
"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
}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, 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.
| Argument | Type | Description |
|---|---|---|
| mbid* | string | Release-group MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted). |
{
"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
}Work (a composition, distinct from a recording) by MBID: type, languages, ISWCs, writers/composers/lyricists, movements, arrangements, aliases, tags, and external links. 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.
| Argument | Type | Description |
|---|---|---|
| mbid* | string | Work MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted). |
| inc_relationships | boolean | Include writer/composer, movement/arrangement and recording relationships, and external links. |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| value* | string | 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* | string | Which standard identifier: isrc (recording), iswc (work), or barcode (release). |
{
"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
}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, 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`).
| Argument | Type | Description |
|---|---|---|
| limit | integer | 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* | string | 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 | integer | Result offset for pagination (0-based). |
| entityType* | string | Which entity type to search. |
{
"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)."
},
"entityType": {
"enum": [
"artist",
"release-group",
"release",
"recording",
"work",
"label"
],
"type": "string",
"description": "Which entity type to search."
}
},
"additionalProperties": false
}