musicbrainz-mcp
Allows interaction with the MusicBrainz open music encyclopedia, providing tools for searching, looking up, and browsing artists, releases, recordings, labels, works, and more, including Cover Art Archive images and optional submission of user tags, ratings, and collection edits.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@musicbrainz-mcpsearch for artist "Radiohead""
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
musicbrainz-mcp
An MCP server for MusicBrainz, the open music encyclopedia. It gives Claude live access to MusicBrainz metadata — artists, releases, recordings, labels, works, and more — plus Cover Art Archive images, and (optionally) lets you submit your own tags, ratings, and collection edits.
Developed and maintained by AI (Claude Code). Use at your own discretion.
Tools
Read (no credentials required):
Tool | What it does |
| Search any entity type with a Lucene query; returns ranked matches + MBIDs |
| Look up an entity by MBID, with |
| List all entities linked to another (e.g. every release by an artist) |
| Cover Art Archive image URLs for a release / release-group |
| Turn a pasted musicbrainz.org URL into its entity |
| Verify connectivity and whether OAuth writes are configured |
Write (OAuth, confirm-gated):
Tool | What it does |
| Apply user tags to an entity on your account |
| Set your 0–100 rating for an entity |
| Add/remove entities in one of your collections |
Each write makes no network call without confirm: true; it returns a dry-run preview first.
Related MCP server: musicbrainz-mcp-server
Install
This is a Node MCP server (stdio). Point your MCP host at it:
{
"mcpServers": {
"musicbrainz": {
"command": "npx",
"args": ["-y", "musicbrainz-mcp"]
}
}
}Reads work immediately. MusicBrainz asks clients to make at most one request per second — the server throttles itself to stay within that limit, so large browses are paced automatically.
Enabling the write tools (optional)
Register an application at musicbrainz.org/account/applications (redirect URI
urn:ietf:wg:oauth:2.0:oob).Complete the OAuth flow with the
tag,rating, andcollectionscopes to obtain a refresh token.Provide these via your MCP host's env (or a local
.env):
MUSICBRAINZ_OAUTH_CLIENT_ID=...
MUSICBRAINZ_OAUTH_CLIENT_SECRET=...
MUSICBRAINZ_OAUTH_REFRESH_TOKEN=...Development
npm install
npm run build
npm testSee CLAUDE.md for architecture and docs/MUSICBRAINZ-API.md for the pinned API shapes.
License
MIT. Data from MusicBrainz, licensed under CC0 / CC BY-NC-SA.
Available Tools
9 toolsmusicbrainz_browseBrowse MusicBrainz entities linked to anotherARead-onlyIdempotent
List all entities of one type directly linked to a given entity — e.g. every release by an artist (entity: "release", linkedBy: "artist", mbid: ), recordings on a release, releases in a collection, or events at a place. This is the complete, paged set for a relationship (unlike search, which ranks fuzzy matches). Use inc for extra detail and limit/offset to page (max 100/page). Read-only. Data from MusicBrainz (https://musicbrainz.org), the open music encyclopedia.
| Name | Required | Description | Default |
|---|---|---|---|
| inc | No | Subqueries to include, e.g. ["labels","recordings"] | |
| mbid | Yes | MBID of the linking entity | |
| limit | No | Max results (1–100, default 25) | |
| entity | Yes | Result entity type to list | |
| offset | No | Result offset for paging (default 0) | |
| linkedBy | Yes | The relationship to browse by (the linking entity type) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint. The description adds value by explaining it returns a complete paged set (not fuzzy), and mentions the data source (MusicBrainz) and pagination constraints. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences: one long sentence with purpose and examples, then two short sentences contrasting with search and providing pagination guidance. Every sentence is necessary and well-placed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description covers purpose, parameter usage, pagination, and read-only nature. It does not describe the return format (e.g., list of entities with IDs/names), which is a minor gap given the tool's simplicity and high schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%. The description adds meaning beyond the schema by providing usage examples linking entity and linkedBy parameters (artist→release, release→recording, etc.) and explaining 'inc' for extra detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('List all entities of one type directly linked to a given entity') with concrete examples (e.g., 'every release by an artist'). It clearly distinguishes from the sibling tool 'musicbrainz_search' by contrasting fuzzy matching vs. complete paged sets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (to get the complete paged set of linked entities) and when to use an alternative ('unlike search, which ranks fuzzy matches'). Provides pagination details ('limit/offset to page, max 100/page') and hints about 'inc' for extra detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
musicbrainz_cover_artGet Cover Art Archive images for a releaseARead-onlyIdempotent
Fetch Cover Art Archive image metadata for a release or release-group MBID — front/back cover URLs, thumbnails, and image types. Returns the image URLs (you can open or download them); it does not embed the bytes. Errors clearly when no art exists for the MBID. Read-only. Data from MusicBrainz (https://musicbrainz.org), the open music encyclopedia.
| Name | Required | Description | Default |
|---|---|---|---|
| mbid | Yes | Release or release-group MBID | |
| entity | Yes | Which MBID type the cover art is keyed on |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), description adds that it returns URLs not bytes, and provides error behavior for missing art. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences with key info front-loaded. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, description fully covers purpose, return format, error handling, and read-only nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not add significant parameter detail beyond the schema, but confirms entity enum and mbid format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Fetch' and specific resource 'Cover Art Archive image metadata for a release or release-group MBID'. Distinguishes from sibling tools like musicbrainz_search or musicbrainz_lookup, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States that it returns URLs not bytes, and errors when no art exists. Sibling tools are distinct, so usage context is clear, though no explicit 'when not to use' is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
musicbrainz_healthcheckVerify MusicBrainz connectivityARead-onlyIdempotent
Confirm the MusicBrainz API is reachable (and our User-Agent accepted) by looking up a stable entity, and report whether the OAuth write path is configured. Reports {ok, reachable, oauth_configured} with a plain-English hint. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, and idempotent hints. The description adds value by detailing the output structure (three fields with plain-English hint) and the method (looking up a stable entity), which confirms idempotent behavior. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two sentences that are front-loaded and contain no filler. Every sentence serves a purpose: first states the core action, second describes the output format and confirms read-only nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and comprehensive annotations, the description is nearly complete. It explains the tool's purpose, output, and safety. It could mention that it is appropriate as a first call to verify connectivity, but this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is trivially 100%. The description does not need to add parameter details. According to guidelines, zero parameters yields a baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to confirm MusicBrainz API reachability and OAuth configuration. It uses a specific verb ('Confirm') and resource ('MusicBrainz API connectivity'), and distinguishes itself from sibling data operations like browsing, searching, or modifying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking connectivity and OAuth config, but does not explicitly state when to use this tool versus alternatives or when not to use it. There is no guidance on prerequisites or ordering relative to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
musicbrainz_lookupLook up a MusicBrainz entity by MBIDARead-onlyIdempotent
Fetch a single MusicBrainz entity (artist, release, recording, release-group, label, work, area, place, event, instrument, series, genre, url) by its MBID. Use inc to pull linked sub-entities and relationships, e.g. inc: ["releases","release-groups"] on an artist, or ["recordings","labels"] on a release, or ["artist-credits","url-rels"] on most entities. Read-only. Data from MusicBrainz (https://musicbrainz.org), the open music encyclopedia.
| Name | Required | Description | Default |
|---|---|---|---|
| inc | No | Subqueries/relationships to include, e.g. ["releases","url-rels","tags"] | |
| mbid | Yes | The entity MBID (UUID) | |
| entity | Yes | Entity type to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, and idempotentHint. The description adds context about the data source and read-only nature, and does not contradict annotations. It lacks detail on rate limits or response structure, but is sufficient given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, no redundant information. Every sentence adds value, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with full schema coverage and no output schema, the description covers entity types, MBID format, inc usage, and data source. It is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. The description adds value by providing example `inc` values per entity type and explaining the purpose of the parameter, going beyond the schema's basic type/pattern descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a single MusicBrainz entity by MBID, lists all entity types, and distinguishes from siblings like search and browse by specifying 'single entity lookup'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on using `inc` for sub-entities with examples, and declares read-only status. However, it does not explicitly exclude use cases or mention alternatives, but the sibling context and description imply appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
musicbrainz_modify_collectionAdd or remove entities in a MusicBrainz collectionAIdempotent
Add or remove entities (releases, artists, recordings, release-groups, works, labels, places, areas, events) in one of YOUR MusicBrainz collections (needs OAuth: MUSICBRAINZ_OAUTH_* with the collection scope). Get the collection MBID from its URL (musicbrainz.org/collection/). Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it applies the change. Data from MusicBrainz (https://musicbrainz.org), the open music encyclopedia.
| Name | Required | Description | Default |
|---|---|---|---|
| mbids | Yes | MBIDs of the entities to add/remove | |
| action | Yes | Whether to add to or remove from the collection | |
| confirm | No | Must be true to proceed. Without this, the tool returns a preview. | |
| collection | Yes | MBID of the target collection | |
| entityType | Yes | Plural entity type the collection holds (e.g. "releases") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses authentication needs (OAuth with collection scope), dry-run behavior without confirm, and that no network call is made until confirmed. Aligns with annotations (readOnlyHint=false, idempotentHint=true). Does not mention rate limits or error responses, but overall adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured: front-loaded with purpose, followed by prerequisites and key behavior details. Every sentence is informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the dry-run preview and the need for confirm, but does not specify what the output looks like after mutation (e.g., success confirmation). Still sufficiently complete for a straightforward mutation tool with annotations providing idempotency and non-read-only hints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds value by explaining how to obtain the collection MBID and the function of confirm. The entity type and action enums are clear from the schema, but the description provides practical usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'Add or remove' and explicitly states it modifies MusicBrainz collections. It lists all entity types and is clearly distinct from sibling tools like search, lookup, or browse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the prerequisite OAuth scope, how to get the collection MBID, and the dry-run mechanism with confirm. It implicitly distinguishes from siblings by its unique mutative purpose, but could explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
musicbrainz_resolveResolve a MusicBrainz URL to its entityARead-onlyIdempotent
Turn a musicbrainz.org URL (e.g. https://musicbrainz.org/artist/ or /release-group/) into the underlying entity by extracting its type + MBID and looking it up. Handy when a user pastes a MusicBrainz link. Pass inc to include linked sub-entities. Read-only. Data from MusicBrainz (https://musicbrainz.org), the open music encyclopedia.
| Name | Required | Description | Default |
|---|---|---|---|
| inc | No | Subqueries to include on the resolved entity | |
| url | Yes | A musicbrainz.org entity URL or an "entity/mbid" path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds 'Read-only' and credits MusicBrainz data source, reinforcing the annotations but not adding new behavioral details like rate limits or auth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the main purpose and adding usage tip with attribution. Every sentence earns its place, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with good annotations, the description covers URL format, `inc` parameter, and example. No output schema exists, but 'entity' implies a full object. Minor gap: no explicit mention of return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. The description adds context: `url` can be a full URL or 'entity/mbid' path, and `inc` includes linked sub-entities. This goes beyond the schema's brief descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it resolves a MusicBrainz URL to its entity by extracting type and MBID. It distinguishes from siblings like musicbrainz_lookup or musicbrainz_search by explicitly focusing on URL input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Handy when a user pastes a MusicBrainz link,' providing clear context. It also mentions using `inc` for sub-entities. However, it does not explicitly contrast with alternative tools like musicbrainz_lookup for direct MBIDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
musicbrainz_searchSearch MusicBrainzARead-onlyIdempotent
Search a MusicBrainz entity type with a Lucene query and get back ranked matches with their MBIDs. Plain text matches the entity name; fielded Lucene also works, e.g. artist:"Miles Davis" AND country:US, release:"Kind of Blue" AND format:Vinyl, or recording:"So What" AND dur:[540000 TO 560000]. Feed a returned MBID into musicbrainz_lookup for full detail. Read-only. Data from MusicBrainz (https://musicbrainz.org), the open music encyclopedia.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (1–100, default 25) | |
| query | Yes | Lucene query string (plain text or fielded) | |
| entity | Yes | Entity type to search | |
| offset | No | Result offset for paging (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint. The description adds that the tool is 'Read-only' and that data comes from MusicBrainz. It also explains the query format and matching behavior, going beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, front-loaded with the core purpose, followed by examples and next-step guidance. Every sentence is informative and concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description hints at the output: 'ranked matches with their MBIDs.' All 4 parameters are well-documented. The tool is straightforward (search), so the description is mostly complete. Minor omission: no mention of pagination behavior beyond the offset/limit parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The description adds value by showing example queries and explaining that plain text matches the entity name. This enriches the parameter semantics beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search a MusicBrainz entity type with a Lucene query and get back ranked matches with their MBIDs.' It specifies the verb (search), resource (MusicBrainz entity types), and what is returned (ranked matches with MBIDs). This distinguishes it from siblings like musicbrainz_browse and musicbrainz_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: for searching with Lucene queries. It provides examples of plain text and fielded queries. It also tells the next step: 'Feed a returned MBID into musicbrainz_lookup for full detail.' However, it does not explicitly state when not to use or compare to alternatives like musicbrainz_browse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
musicbrainz_submit_ratingSubmit a user rating to MusicBrainzAIdempotent
Set YOUR rating for a MusicBrainz entity (needs OAuth: MUSICBRAINZ_OAUTH_* with the rating scope). Rating is 0–100 (MusicBrainz shows it as 1–5 stars in steps of 20; 0 removes your rating). Without confirm: true it returns a dry-run preview and makes NO network call; with confirm: true it submits. Data from MusicBrainz (https://musicbrainz.org), the open music encyclopedia.
| Name | Required | Description | Default |
|---|---|---|---|
| mbid | Yes | MBID of the entity to rate | |
| entity | Yes | Entity type to rate | |
| rating | Yes | Rating 0–100 (0 removes; 20/40/60/80/100 = 1–5 stars) | |
| confirm | No | Must be true to proceed. Without this, the tool returns a preview. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits beyond annotations: OAuth requirement, idempotent nature (setting same rating again is safe), and the dry-run preview feature. No contradiction with annotations (readOnlyHint=false, idempotentHint=true).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured. First sentence states purpose and OAuth requirement, second explains rating scale, third explains confirm behavior, last sentence attributes data source. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, write operation), the description covers prerequisites, parameter semantics, and submission flow. Could mention return format or error handling, but the dry-run preview addresses safety concerns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful context: rating scale mapping (0–100 to 1–5 stars) and explains that 0 removes the rating. This goes beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set YOUR rating for a MusicBrainz entity'. It specifies the verb, resource, and user scope, distinguishing it from sibling tools like 'musicbrainz_submit_tags' which handle tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisites (OAuth with 'rating' scope) and explains the dry-run behavior: without confirm:true, it returns a preview with no network call; with confirm:true, it submits. This tells the agent when and how to use the tool safely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
musicbrainz_submit_tagsSubmit user tags to MusicBrainzAIdempotent
Apply user tags to a MusicBrainz entity on YOUR account (needs OAuth: MUSICBRAINZ_OAUTH_* with the tag scope). Default vote: upvote adds the tags; downvote opposes them; withdraw removes your vote. Without confirm: true it returns a dry-run preview (the exact XML) and makes NO network call; with confirm: true it submits. Data from MusicBrainz (https://musicbrainz.org), the open music encyclopedia.
| Name | Required | Description | Default |
|---|---|---|---|
| mbid | Yes | MBID of the entity to tag | |
| tags | Yes | Tag names to apply | |
| vote | No | Vote direction (default upvote) | |
| entity | Yes | Entity type to tag | |
| confirm | No | Must be true to proceed. Without this, the tool returns a preview. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: OAuth scope, vote semantics, and the dry-run preview mechanism. Annotations indicate idempotent and non-read-only, which the description supports with the dry-run behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured paragraph of 4 sentences. It front-loads the core action and then explains vote and confirm in order. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should cover return values. It explains the dry-run preview (XML) but does not describe what confirm: true returns. Otherwise, it covers authentication, parameters, and safety preview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have schema descriptions (100% coverage). The description adds value by clarifying the default vote, the effect of confirm, and the dry-run return. It does not repeat schema details but enriches them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Apply user tags to a MusicBrainz entity on YOUR account' with specific verb and resource. It distinguishes itself from the sibling tool musicbrainz_submit_rating by explicitly mentioning tags and vote direction. The title and name reinforce the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage, including OAuth requirement and dry-run vs confirm behavior. However, it does not explicitly compare to siblings like musicbrainz_submit_rating, though the sibling names are listed in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: browse lists linked entities, lookup fetches by MBID, search performs queries, cover art retrieves images, healthcheck checks connectivity, resolve converts URLs, and three write tools handle collections, ratings, and tags. No overlap in functionality.
All tools consistently use the 'musicbrainz_' prefix followed by a snake_case verb_noun pattern (e.g., musicbrainz_lookup, musicbrainz_submit_tags), making the naming predictable and easy to parse.
Nine tools cover the essential operations for interacting with the MusicBrainz API without being excessive. Each tool serves a specific purpose, and the count is well-scoped for the domain.
The tool set covers both read operations (lookup, search, browse, cover art, resolve, healthcheck) and write operations (modify collection, submit rating, submit tags), providing a complete surface for querying and managing personal MusicBrainz data.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MusicBrainz MCP — wraps MusicBrainz Web Service v2 (free, no auth)
Search MusicBrainz artists, releases, works, labels; resolve ISRC/ISWC/barcode; fetch cover art.
TheAudioDB MCP — community music metadata database.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA comprehensive MCP server for querying the MusicBrainz database, providing tools to search for artists, releases, recordings, and browse music metadata.4MIT
- AlicenseNot gradedqualityAmaintenanceSearch artists, releases, recordings, works, and labels; traverse relationships; resolve ISRC/ISWC/barcode; fetch cover art via MCP. STDIO or Streamable HTTP.2711Apache 2.0
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables searching books and authors, fetching editions, browsing subjects, and resolving cover images from Open Library.2943Apache 2.0
- AlicenseNot gradedqualityCmaintenanceAn MCP server for the Last.fm API, exposing artist, album, track, chart, and user data as read-only tools. Supports optional writes, auth, and experimental methods over stdio or HTTP.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrischall/musicbrainz-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server