Skip to main content
Glama

discogs-mcp

CI npm

A Model Context Protocol server for Discogs. Search the catalog, manage your collection and wantlist, and work the marketplace — straight from Claude or any other MCP client. No hosting required: it runs locally via npx and talks to Discogs' own API directly.

Features

Area

Tools

Identity

discogs_whoami

Catalog

discogs_search, discogs_get_release, discogs_get_master, discogs_get_master_versions, discogs_get_artist, discogs_get_artist_releases, discogs_get_label, discogs_get_label_releases

Collection

discogs_list_collection_folders, discogs_get_collection_items, discogs_add_to_collection, discogs_remove_from_collection, discogs_update_collection_item, discogs_get_collection_value

Wantlist

discogs_get_wantlist, discogs_add_to_wantlist, discogs_remove_from_wantlist

Marketplace

discogs_get_marketplace_stats, discogs_get_price_suggestions, discogs_get_listing, discogs_get_seller_inventory, discogs_create_listing, discogs_update_listing, discogs_delete_listing

Orders

discogs_list_orders, discogs_get_order, discogs_update_order, discogs_list_order_messages, discogs_add_order_message

Related MCP server: MusicBrainz MCP Server

The simplest setup: no app registration, no OAuth flow, just one token.

  1. Go to discogs.com/settings/developers and click Generate new token under Personal access tokens.

  2. Add discogs-mcp to your MCP client with that token.

Claude Code

claude mcp add discogs -e DISCOGS_PERSONAL_TOKEN=your_token -- npx -y discogs-mcp

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "discogs": {
      "command": "npx",
      "args": ["-y", "discogs-mcp"],
      "env": {
        "DISCOGS_PERSONAL_TOKEN": "your_token"
      }
    }
  }
}

Restart your client and the discogs_* tools will appear.

Alternative — OAuth app (for multi-user or CI setups)

If you need to authenticate as a different Discogs user than the token owner, or want to use OAuth 1.0a app credentials instead:

  1. Register a free application at discogs.com/settings/developers — any name works; grab the Consumer Key and Consumer Secret.

  2. Run the login flow to authorize and save an access token:

export DISCOGS_CONSUMER_KEY=your_consumer_key
export DISCOGS_CONSUMER_SECRET=your_consumer_secret

npx discogs-mcp login

This opens your browser to Discogs' authorization page and saves the access token to ~/.config/discogs-mcp/credentials.json (mode 0600). You only need to do this once.

Then add to your MCP client with the consumer credentials so the server can sign requests:

# Claude Code
claude mcp add discogs -e DISCOGS_CONSUMER_KEY=your_key -e DISCOGS_CONSUMER_SECRET=your_secret -- npx -y discogs-mcp

Remote server (Cloudflare Worker)

Want to add Discogs as a custom connector in Claude instead of running it locally? The worker/ directory is a read-only remote MCP server (Streamable HTTP) you can deploy to Cloudflare Workers in a few clicks — no npx process on your machine. See worker/README.md for the one-time setup.

Environment variables

Variable

Required

Purpose

DISCOGS_PERSONAL_TOKEN

One of these two auth methods

Personal access token from discogs.com/settings/developers. Simplest option — no app or login step needed.

DISCOGS_CONSUMER_KEY / DISCOGS_CONSUMER_SECRET

One of these two auth methods

OAuth app credentials. Required when using the login flow or injecting OAuth access tokens via env vars.

DISCOGS_ACCESS_TOKEN / DISCOGS_ACCESS_TOKEN_SECRET

No

Inject an OAuth access token directly (skips the on-disk credential file — useful for CI). Both must be set together, alongside the consumer key/secret.

DISCOGS_USERNAME

No

Skip the automatic username lookup on startup. Optional speed-up when the username is already known.

DISCOGS_USER_AGENT

No

Overrides the User-Agent header. Defaults to discogs-mcp/<version> +<repo url>.

DISCOGS_MCP_CREDENTIALS_PATH

No

Overrides where login reads/writes credentials. Defaults to ~/.config/discogs-mcp/credentials.json.

Security notes

  • The access token/secret saved by login are only as sensitive as your Discogs account — they grant the same access you approved (collection, wantlist, marketplace, orders). The file is written with 0600 permissions.

  • You can revoke access at any time from your Discogs account under Settings → Developers, then delete ~/.config/discogs-mcp/credentials.json locally.

  • Tools that create, modify, or delete marketplace listings/orders are real, live actions — most MCP clients ask for confirmation before running a tool call, but treat those tools as if they were.

  • See SECURITY.md for how to report a vulnerability.

Development

git clone https://github.com/Spiegelberg/discogs-mcp.git
cd discogs-mcp
npm install

npm run dev        # run the server against source with tsx
npm run lint
npm run typecheck
npm test
npm run build       # bundle to dist/

See CONTRIBUTING.md for more.

Publishing / distribution checklist

Automated by this repo:

  • npm run build produces a working dist/index.js bin.

  • CI (.github/workflows/ci.yml) lints, typechecks, tests, and builds on every push/PR.

  • Pushing a vX.Y.Z tag runs .github/workflows/publish.yml, which publishes to npm with provenance.

  • server.json is ready to submit to the open MCP Registry via the mcp-publisher CLI, and package.json's mcpName field matches it.

Still manual, and outside what code in this repo can do:

  • Create/own the discogs-mcp npm package and add an NPM_TOKEN repo secret so the publish workflow can run.

  • Run mcp-publisher (or open a PR against the MCP Registry) to list it there.

  • If you want it in Anthropic's curated in-product connector directory, that's a separate outreach/review process with Anthropic — not something a GitHub Action can trigger.

License

MIT

Available Tools

30 tools
discogs_add_order_messageDiscogs: add order messageA

Post a message to a marketplace order's message thread, optionally also changing its status.

Inputs: order_id (required), status, message.

discogs_add_to_collectionDiscogs: add release to collectionB

Add a release to a collection folder.

Inputs: release_id (required), folder_id.

discogs_add_to_wantlistDiscogs: add release to wantlistB

Add a release to the authenticated user's wantlist, optionally with notes and a rating.

Inputs: release_id (required), notes, rating.

discogs_create_listingDiscogs: create marketplace listingA

List a release for sale on the Discogs marketplace. This creates a real, publicly visible listing — confirm details with the user before calling.

Inputs: price (required), condition (required), release_id (required), status, +5 more.

discogs_delete_listingDiscogs: delete marketplace listingA

Remove a marketplace listing. This is irreversible — confirm with the user before calling.

Inputs: listing_id (required).

discogs_get_artistDiscogs: get artistA
Read-only

Fetch profile details for an artist by Discogs artist ID.

Inputs: artist_id (required).

discogs_get_artist_releasesDiscogs: list artist releasesB
Read-only

List releases and masters credited to an artist.

Inputs: artist_id (required), page, sort, per_page, +1 more.

discogs_get_collection_itemsDiscogs: list collection itemsA
Read-only

List the releases in a collection folder, with sort and pagination options.

Inputs: page, sort, per_page, folder_id, +1 more.

discogs_get_collection_valueDiscogs: get collection valueA
Read-only

Get the estimated minimum, median, and maximum marketplace value of the user's whole collection.

Inputs: no named parameters.

discogs_get_labelDiscogs: get labelB
Read-only

Fetch profile details for a record label by Discogs label ID.

Inputs: label_id (required).

discogs_get_label_releasesDiscogs: list label releasesA
Read-only

List releases put out on a record label.

Inputs: label_id (required), page, per_page.

discogs_get_listingDiscogs: get marketplace listingA
Read-only

Fetch a single marketplace listing by its listing ID.

Inputs: listing_id (required), currency.

discogs_get_marketplace_statsDiscogs: get marketplace stats for a releaseB
Read-only

Get the number of copies for sale and the lowest current price for a release.

Inputs: release_id (required), currency.

discogs_get_masterDiscogs: get master releaseA
Read-only

Fetch details for a master release (the abstract release grouping all its pressings/versions).

Inputs: master_id (required).

discogs_get_master_versionsDiscogs: list master versionsA
Read-only

List all known pressings/versions of a master release.

Inputs: master_id (required), page, per_page.

discogs_get_orderDiscogs: get marketplace orderB
Read-only

Fetch details for a single marketplace order.

Inputs: order_id (required).

discogs_get_price_suggestionsDiscogs: get price suggestions for a releaseA
Read-only

Get Discogs' suggested price per condition grade for a release, based on recent marketplace sales. Requires the authenticated user to have marketplace seller settings configured.

Inputs: release_id (required).

discogs_get_releaseDiscogs: get releaseA
Read-only

Fetch full details for a single release by its Discogs release ID.

Inputs: release_id (required), currency.

discogs_get_seller_inventoryDiscogs: get seller inventoryB
Read-only

List the marketplace listings for a given Discogs username (defaults to the authenticated user).

Inputs: page, sort, status, per_page, +2 more.

discogs_get_wantlistDiscogs: get wantlistA
Read-only

List releases on the authenticated user's wantlist.

Inputs: page, per_page.

discogs_list_collection_foldersDiscogs: list collection foldersA
Read-only

List the authenticated user's collection folders (e.g. "All", "Uncategorized", custom folders).

Inputs: no named parameters.

discogs_list_order_messagesDiscogs: list order messagesA
Read-only

List the message/status-change history for a marketplace order.

Inputs: order_id (required).

discogs_list_ordersDiscogs: list marketplace ordersA
Read-only

List the authenticated user's marketplace orders (as a seller), with optional status filter.

Inputs: page, sort, status, per_page, +1 more.

discogs_remove_from_collectionDiscogs: remove release from collectionA

Remove a specific instance of a release from a collection folder. Requires the instance_id returned by discogs_get_collection_items for that copy (a release can appear multiple times in a folder).

Inputs: folder_id (required), release_id (required), instance_id (required).

discogs_remove_from_wantlistDiscogs: remove release from wantlistB

Remove a release from the authenticated user's wantlist.

Inputs: release_id (required).

discogs_update_collection_itemDiscogs: update collection itemB

Update the personal rating and/or notes fields on a specific collection item instance.

Inputs: folder_id (required), release_id (required), instance_id (required), notes, +1 more.

discogs_update_listingDiscogs: update marketplace listingA

Update an existing marketplace listing (price, condition, comments, status, etc).

Inputs: listing_id (required), release_id (required), price, status, +5 more.

discogs_update_orderDiscogs: update marketplace orderA

Update a marketplace order's status, shipping price, or additional instructions. Changing status notifies the buyer — confirm with the user before calling.

Inputs: order_id (required), status, shipping, additional_instructions.

discogs_whoamiDiscogs: who am IA

Return the Discogs identity (username, id, resource_url) of the currently authenticated user.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 30 tools

    Disambiguation4/5

    Each tool targets a distinct resource/action, and descriptions clearly clarify differences (e.g., release vs master, collection vs wantlist). The only mild overlap is between update_order and add_order_message, both of which can change order status, but their primary purposes differ.

    Naming Consistency4/5

    Most tools follow a verb_noun pattern (get_release, create_listing, add_to_collection), but discogs_whoami and get_seller_inventory deviate slightly from the dominant verb_noun consistency.

    Tool Count3/5

    With 30 tools, the set is on the heavy side, but each tool covers a distinct part of the Discogs API (database, collection, wantlist, marketplace, orders). While above the typical well-scoped range, the count is justified by the API's breadth, though it remains high.

    Completeness4/5

    The tool surface covers the main CRUD operations for collection, wantlist, listings, and orders, plus robust search and lookup. Missing operations like moving a collection item between folders or updating a wantlist item can be worked around (remove/add), so no critical dead ends.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers