Credits.fm

Music Credits MCP

Music metadata for AI agents. Connect Claude, Cursor, Windsurf, or any MCP client to look up songwriter credits, recordings, and music identifiers.

17 toolsFreex-api-keyStreamable HTTP

What is MCP?

Model Context Protocol is the open standard for connecting AI assistants to external tools and data sources. When you connect to the Credits.fm MCP server, your AI can natively search music metadata, look up songwriter credits, resolve Spotify URLs, and more — without you having to copy-paste API responses.

Connect in 30 seconds

Get a free key at credits.fm/api, then paste one of the configs below. Always send the raw cfm_ key as x-api-key — never Authorization: Bearer. tools/list can succeed while lookups fail without a key.

Cursor Cloud Agents

Native HTTP only — not mcp-remote. Add to the Cloud Agent MCP / environment config:

Cursor Cloud MCP
{
  "Credits": {
    "url": "https://credits.fm/mcp",
    "headers": {
      "x-api-key": "cfm_YOUR_KEY"
    }
  }
}

Cursor Desktop

Prefer HTTP headers in .cursor/mcp.json:

.cursor/mcp.json
{
  "mcpServers": {
    "credits": {
      "url": "https://credits.fm/mcp",
      "headers": {
        "x-api-key": "cfm_YOUR_KEY"
      }
    }
  }
}

Claude Code

Add to .mcp.json in your project root:

.mcp.json
{
  "mcpServers": {
    "credits": {
      "type": "http",
      "url": "https://credits.fm/mcp",
      "headers": {
        "x-api-key": "cfm_YOUR_KEY"
      }
    }
  }
}

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS). Pass the key via --header:

claude_desktop_config.json
{
  "mcpServers": {
    "credits": {
      "command": "npx",
      "args": ["mcp-remote", "https://credits.fm/mcp", "--header", "x-api-key:cfm_YOUR_KEY"]
    }
  }
}

Windsurf

Add to your Windsurf MCP config:

mcp_config.json
{
  "mcpServers": {
    "credits": {
      "serverUrl": "https://credits.fm/mcp",
      "headers": {
        "x-api-key": "cfm_YOUR_KEY"
      }
    }
  }
}

Contributing

Lookup responses include a structured _contribute data block listing fields the record is missing along with a pre-filled template. When you want to share data you have — from MLC, CISAC, MusicBrainz, Apple Music, your own catalog, or your own knowledge — you can call credits_contribute with that template. Low-risk fields (ISWC, song title, alternative names) auto-accept; medium/high-risk fields stage for human review. Accepted contributions become part of the public CC-BY 4.0 index.

Pass contribute: false on a lookup tool to suppress the _contribute block in the response.

API key

Get a free API key and pass it as x-api-key on every MCP request (see configs above). Required for credits_contribute; strongly recommended for all lookups — guest MCP is rate-limited (~20 tool calls/min) and some environments return Access denied without a key.

.mcp.json (with API key)
{
  "mcpServers": {
    "credits": {
      "type": "http",
      "url": "https://credits.fm/mcp",
      "headers": {
        "x-api-key": "cfm_YOUR_KEY"
      }
    }
  }
}

Available tools

17 tools covering all of Credits.fm's data. Start with credits_search for any query, then drill down with specific lookup tools. credits_contribute is available when a user asks to fill gaps they discover.

credits_graph

Credits Graph — the network around any code — nodes (ISRC/ISWC/IPI/ISNI/UPC + musicians) and connections with source provenance and verification status (verified = 2+ independent sources; verified absence included).

type (required), id (required), depth?, people?

credits_graph_activity

Credits Graph status feed — recent link_found / link_verified / relation_found / no_match_recorded events across the whole index.

limit?, since?

credits_watch

Watch one code progress found → matched → verified. Snapshot of each connection (verified = 2+ sources; matched = single source; found = surfaced, or resolved with no descriptive payload yet; no_match = verified absence) plus recent transitions touching the code. Verification is asynchronous — re-call with since=as_of to watch codes cross into verified over time. Lookup results carry a matching `progression` block.

type (required), id (required), since?

credits_search

Search by song title, artist name, ISRC/ISWC/IPI/ISNI/UPC code, or Spotify/Apple Music URL. The primary entry point.

query (required), type?, limit?

credits_lookup_isrc

Look up a recording by ISRC. Returns songwriter credits, publisher chains, platform links.

isrc (required)

credits_lookup_iswc

Look up a musical work by ISWC. Returns all recordings, songwriters, and CISAC registration status.

iswc (required)

credits_lookup_ipi

Look up a songwriter or publisher by IPI number. Returns works, recordings, co-writers, and publisher relationships.

ipi (required)

credits_lookup_isni

Look up a creative contributor by ISNI. Returns name variants, roles, linked IPIs, and associated works.

isni (required)

credits_lookup_musician

Look up a musician (the real person) by MusicBrainz MBID. Returns songwriter + performer credits, group memberships, IPI/ISNI identifiers. Includes a `progression` inventory + a credits_watch pointer for the person graph.

mbid (required)

credits_lookup_artist

Look up an artist (release entity on DSPs) by platform ID. Returns full discography with albums, tracks, ISRCs, and streaming links. Includes a `progression` inventory of the discography codes to watch.

id (required)

credits_resolve_url

Resolve a Spotify or Apple Music URL to identifiers. Supports tracks, albums, playlists, and artists. Includes a `progression` inventory of the resolved codes to watch.

url (required)

credits_resolve_track

Resolve a track to its ISRC and full credits by name + artist, Spotify URL, or Apple Music URL.

name?, artist?, spotify_url?, apple_music_url?

credits_lookup_upc

Look up releases by UPC barcode. Returns album metadata and a full track list with ISRCs plus per-ISRC enrichment.

upcs (required, 1-100)

credits_batch_lookup

Batch lookup up to 100 ISRCs, ISWCs, IPIs, ISNIs, or UPCs in a single request.

isrcs?, iswcs?, ipis?, isnis?, upcs?

credits_publishers_for_songwriter

Find every publisher tied to a songwriter, by IPI (preferred) or by name + ISRCs/ISWCs for disambiguation.

ipi? | (name + isrcs?/iswcs?)

credits_contribute

Submit data to the public Credits.fm index. Accepts an array of contributions targeting an identifier, a field, and a value. Requires an API key.

contributions (required) — array of {target, id, field, value, type?, citation?}

credits_coverage

Get index coverage metrics — row counts and data completeness for all tables. See where gaps exist.

none

Example

Once connected, just ask naturally. Your AI will call the right tools automatically.

Conversation

You:

Who wrote Bohemian Rhapsody?

credits_search({query: "bohemian rhapsody queen"})

credits_lookup_isrc({isrc: "GBCEE9800022"})

Claude:

“Bohemian Rhapsody” was written by Freddie Mercury (IPI: 00077406269), credited as the sole songwriter. The composition is registered as ISWC T-010154505-4 (Queen / GBCEE9800022).

Protocol details

Endpointhttps://credits.fm/mcp
TransportStreamable HTTP (JSON-RPC over POST)
Protocol version2025-03-26
AuthRecommended for all tools. Pass raw cfm_ key as x-api-key (not Bearer). Required for credits_contribute. Guest: ~20 MCP calls/min.
CORSEnabled (Access-Control-Allow-Origin: *)

Test it

Verify the server is running with a simple curl:

Terminal
# List available tools
curl -X POST https://credits.fm/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

# Search for a song (include x-api-key)
curl -X POST https://credits.fm/mcp \
  -H "Content-Type: application/json" \
  -H "x-api-key: cfm_YOUR_KEY" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"credits_lookup_isrc","arguments":{"isrc":"GBCEE9800022","contribute":false}},"id":2}'

Data coverage

30M+

ISRC recordings

95M+

ISWC works

100K+

IPI profiles

100K+

ISNI identities

3M+

UPC releases

2.6M+

Musician profiles

Also available

Data handling

Per request we log: client IP, the identifier looked up, the tool name, a hashed API-key id when present, the rate-limit tier, response latency, and HTTP status. We do not store conversation content, request/response bodies, or any user PII beyond the IP. Logs are retained for abuse-prevention and aggregate analytics; they are not sold or shared.

The index itself is licensed CC-BY 4.0 and aggregates from open sources (MLC, CISAC, MusicBrainz, and ISNI.org). Apple Music and Spotify provide navigation links plus supplementary factual metadata (recording/album titles, artist names) used to fill records the open sources don’t cover — attributed to the platform and not claimed under our CC-BY license; their cover art is governed by their own developer terms and is not redistributed (the API returns only open-licensed MusicBrainz Cover Art Archive artwork). Accepted contributions submitted via credits_contribute become part of the public index. See the Notes.fm privacy policy for the full data-handling statement covering Credits.fm.

Security & support

Report security vulnerabilities to security@credits.fm. We aim to acknowledge reports within 5 business days. General questions and support: hello@credits.fm or file an issue at github.com/Notes-fm/credits/issues.

Powered by Notes.fm