MCP 服务器

musicbrainz-mcp-server

io.github.cyanheads/musicbrainz-mcp-server
媒体与内容 搜索与研究 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Searches and retrieves MusicBrainz metadata for artists, recordings, works, releases, labels, identifiers, and associated cover art.

musicbrainz_browse_entities
musicbrainz-mcp-server: browse entities
Paginate the COMPLETE set of entities linked to a parent MBID — every release-group by an artist, every release on a label, every recording of a work, every release in a release-group. This is the only complete-enumeration path: the get_* tools embed at most one page (25) of any linked list, so use this tool whenever a linked set may exceed a page (a prolific artist, a major label with thousands of releases, a heavily-covered work). Provide exactly ONE link MBID matching a valid parent→child relationship for the target_type. Pages arbitrarily deep via offset; totalCount is the true upstream total.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['target_type', 'link'], 'properties': {'link': {'type': 'object', 'properties': {'area': {'type': 'string', 'description': 'Parent area MBID (artists/labels in this area).'}, 'work': {'type': 'string', 'description': 'Parent work MBID (recordings of this work).'}, 'label': {'type': 'string', 'description': 'Parent label MBID (releases on this label).'}, 'artist': {'type': 'string', 'description': 'Parent artist MBID (e.g. release-groups/recordings/releases by this artist).'}, 'recording': {'type': 'string', 'description': 'Parent recording MBID (releases containing this recording).'}, 'release-group': {'type': 'string', 'description': 'Parent release-group MBID (releases in this group).'}}, 'description': 'Exactly one parent MBID. The valid key depends on target_type (see the description).'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Page size (1â\x80\x93100).'}, '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}
输出模式
{'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.'}, '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_link', 'entity_not_found'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_link`: No link MBID was provided, more than one was provided, or the link MBID is malformed (HTTP 400). `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.'}, '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 â\x80\x94 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.'}, '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.'}}, '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, label, release-group, 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}
musicbrainz_get_artist
musicbrainz-mcp-server: get artist
Artist profile by MBID: type (person/group/…), country, life span, gender, area, aliases, tags/genres, plus the discography (release-groups) and band-membership / collaboration relationships and external links (Wikidata QID, Discogs, official site — surfaced as url-rels chainable to those servers). The 80% artist-detail call. Discography and relationships are capped at one page (25); for a prolific artist's complete release-group list, call musicbrainz_browse_entities with target_type=release-group and the artist link.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mbid'], 'properties': {'mbid': {'type': 'string', 'description': 'Artist MBID (36-character UUID).'}, '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', '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.'}, '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, â\x80¦). 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 (MusicBrainz returns 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': {}}, 'shown': {'type': 'number', 'description': 'Number of release-groups returned. Absent when not truncated.'}, '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.'}, '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.'}, '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 â\x80\x94 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) â\x80\x94 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 â\x80\x94 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").'}}, '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 â\x80\x94 chain to musicbrainz_get_release_group.'}, 'title': {'type': 'string', 'description': 'Release-group title.'}, 'primaryType': {'type': 'string', 'description': 'Primary type (Album, Single, EP, â\x80¦). Omitted when absent.'}, 'disambiguation': {'type': 'string', 'description': 'Short qualifier. Omitted when absent.'}, 'secondaryTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Secondary types (Live, Compilation, â\x80¦). 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 â\x80\x94 use browse for all).', 'additionalProperties': False}, 'description': 'Discography â\x80\x94 release-groups (one page; may be empty or capped).'}, 'disambiguation': {'type': 'string', 'description': 'Short qualifier distinguishing same-named artists. Omitted when absent.'}}, 'additionalProperties': False}
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. Returns an empty image set (NOT an error) when the entity has no art — absence of art is information. An MBID that matches no release or release-group of the given entity_type fails with entity_not_found instead of an empty set. Art is served at the release level; a release-group MBID resolves to a representative release's art automatically. URLs are linked, never rehosted — image copyright stays with the rights holders (only MusicBrainz core metadata is CC0).
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mbid'], 'properties': {'mbid': {'type': 'string', 'description': 'Release or release-group MBID (36-character UUID).'}, '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', 'images', 'hasArt']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'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 â\x80\x94 a value MusicBrainz rejects outright (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': {}}, '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, â\x80¦; 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 â\x80\x94 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': 'Cover-art images (empty when the entity has no art).'}, 'notice': {'type': 'string', 'description': 'Present when the entity has no art: states that no images exist, or â\x80\x94 when the MBID could not be checked against MusicBrainz â\x80\x94 that its existence is unconfirmed.'}, 'entityType': {'type': 'string', 'description': 'Whether the MBID was treated as a release or release-group.'}, 'representativeRelease': {'type': 'string', 'description': 'For a release-group query, the release MBID whose art was returned. Omitted for direct release queries.'}}, 'additionalProperties': False}
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, 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).
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mbid'], 'properties': {'mbid': {'type': 'string', 'description': 'Label MBID (36-character UUID).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mbid', 'name', 'aliases', 'tags', 'externalLinks']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'area': {'type': 'string', 'description': 'Associated area name. Omitted when unknown.'}, '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 (MusicBrainz returns 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': {}}, '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 â\x80\x94 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).'}, 'disambiguation': {'type': 'string', 'description': 'Short qualifier. Omitted when absent.'}}, 'additionalProperties': False}
musicbrainz_get_recording
musicbrainz-mcp-server: get recording
Recording (a specific performance/track, distinct from the abstract work) by MBID: length, artist credits, ISRCs, the releases it appears on, the work(s) it performs (work-rels — chain to musicbrainz_get_work), and performance/production relationships (who played, produced, engineered, conducted — each with the role and the credited artist MBID). Relationships are capped at one page; for a heavily-covered recording call musicbrainz_browse_entities with target_type=recording and link.work.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mbid'], 'properties': {'mbid': {'type': 'string', 'description': 'Recording MBID (36-character UUID).'}, 'inc_relationships': {'type': 'boolean', 'default': True, 'description': 'Include performance/production relationships (performers, producers, engineers) and work-rels.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mbid', 'title', 'artistCredit', 'artistCreditString', 'isrcs', 'releases', '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 (MusicBrainz returns 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 â\x80\x94 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': 'Releases this recording appears on (may be empty).'}, '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 â\x80\x94 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 â\x80\x94 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 â\x80\x94 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").'}}, 'description': 'A typed relationship to another entity (band membership, performer, writer, etc.).', 'additionalProperties': False}, 'description': 'Performance/production relationships and work-rels (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.'}}, 'additionalProperties': False}
musicbrainz_get_release
musicbrainz-mcp-server: get release
One edition's full detail by MBID: the tracklist (media → tracks → recordings with lengths and recording MBIDs), label + catalog number, barcode, country, release date, format, packaging, text representation (language/script), and a cover-art availability stub. Track lengths are rendered m:ss (stored as milliseconds upstream). For the actual cover image URLs, call musicbrainz_get_cover_art with this release MBID.
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mbid'], 'properties': {'mbid': {'type': 'string', 'description': 'Release MBID (36-character UUID).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mbid', 'title', 'artistCredit', 'artistCreditString', 'labelInfo', 'media', 'coverArt']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'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 (MusicBrainz returns 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, â\x80¦). 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 â\x80\x94 chain to musicbrainz_get_recording. Omitted when absent.'}}, '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, â\x80¦). 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': 'Media (discs) with their tracklists (may be empty).'}, 'title': {'type': 'string', 'description': 'Release title.'}, 'script': {'type': 'string', 'description': 'Text-representation script code. Omitted when absent.'}, 'status': {'type': 'string', 'description': 'Release status (Official, Promotion, Bootleg, â\x80¦). 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 â\x80\x94 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, â\x80¦). 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 â\x80\x94 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).'}, 'disambiguation': {'type': 'string', 'description': 'Short qualifier. Omitted when absent.'}, 'releaseGroupId': {'type': 'string', 'description': 'Parent release-group MBID â\x80\x94 chain to musicbrainz_get_release_group. Omitted when absent.'}, 'artistCreditString': {'type': 'string', 'description': 'Display string of the artist credit with join phrases.'}}, 'additionalProperties': False}
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, 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', 'description': 'Release-group MBID (36-character UUID).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mbid', 'title', 'artistCredit', 'artistCreditString', 'releases', 'tags']}, {'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 (MusicBrainz returns 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 â\x80\x94 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 â\x80\x94 chain to musicbrainz_get_release for the tracklist.'}, 'title': {'type': 'string', 'description': 'Release (edition) title.'}, 'status': {'type': 'string', 'description': 'Release status (Official, Promotion, â\x80¦). 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 â\x80\x94 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 â\x80\x94 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).'}, 'disambiguation': {'type': 'string', 'description': 'Short qualifier. Omitted when absent.'}, 'secondaryTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Secondary types (Live, Compilation, Soundtrack, â\x80¦). 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}
musicbrainz_get_work
musicbrainz-mcp-server: get work
Work (a composition — the song as written, distinct from any specific recording) by MBID: type, language(s), ISWCs (the work-level standard identifier), writer/composer/lyricist relationships (with the credited artist MBID), aliases, tags, and the recordings that perform it. The recording relationships are returned in full (the work lookup does not page them).
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mbid'], 'properties': {'mbid': {'type': 'string', 'description': 'Work MBID (36-character UUID).'}, 'inc_relationships': {'type': 'boolean', 'default': True, 'description': 'Include writer/composer relationships, recording relationships, and external links.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['mbid', 'title', 'languages', 'iswcs', 'aliases', 'tags', 'relationships', 'externalLinks']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'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, â\x80¦). 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 (MusicBrainz returns 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).'}, 'title': {'type': 'string', 'description': 'Work title.'}, '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).'}, '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 â\x80\x94 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 â\x80\x94 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").'}}, 'description': 'A typed relationship to another entity (band membership, performer, writer, etc.).', 'additionalProperties': False}, 'description': 'Writer/composer/lyricist relationships and recording-rels â\x80\x94 the complete set (may be empty).'}, 'disambiguation': {'type': 'string', 'description': 'Short qualifier. Omitted when absent.'}}, 'additionalProperties': False}
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', 'minLength': 1, 'description': 'The identifier value. ISRC e.g. "USRC17607839"; ISWC e.g. "T-010.140.236-1"; barcode = the UPC/EAN digits, e.g. "075678164125" (spaces and hyphens are ignored; any other character, including a wildcard, is 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 is malformed (the dedicated endpoint returns 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 â\x80\x94 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 â\x80\x94 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 â\x80\x94 chain to musicbrainz_get_release.'}, 'score': {'type': 'number', 'description': 'Lucene relevance score, 0â\x80\x93100 (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}
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, type, and a 0–100 relevance score (100 = exact). 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`).
只读 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['entityType', 'query'], 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum results to return (1â\x80\x93100).'}, '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}
输出模式
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['entityType', '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': ['blank_query'], 'description': 'Machine-readable failure mode. Declared by this tool: `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': 'Guidance when zero results matched â\x80\x94 how to broaden or correct the query.'}, '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) â\x80\x94 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â\x80\x93100. 100 = exact match; low scores are weak partial matches.'}, 'length': {'type': 'string', 'description': 'Recording length as m:ss. Omitted when unknown.'}, '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.'}}, '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}
已更改
musicbrainz_get_cover_art
2026年9月23日 02:42
已更改
musicbrainz_lookup_identifier
2026年9月23日 02:42
已更改
musicbrainz_get_release_group
2026年9月23日 02:42
已更改
musicbrainz_search_entities
2026年9月23日 02:42
已添加
musicbrainz_get_cover_art
2026年9月17日 12:41
已添加
musicbrainz_browse_entities
2026年9月17日 12:41
已添加
musicbrainz_lookup_identifier
2026年9月17日 12:41
已添加
musicbrainz_get_label
2026年9月17日 12:41
已添加
musicbrainz_get_work
2026年9月17日 12:41
已添加
musicbrainz_get_recording
2026年9月17日 12:41
已添加
musicbrainz_get_release
2026年9月17日 12:41
已添加
musicbrainz_get_release_group
2026年9月17日 12:41
已添加
musicbrainz_get_artist
2026年9月17日 12:41
已添加
musicbrainz_search_entities
2026年9月17日 12:41