discogs-mcp
Provides tools for interacting with the Discogs API, including catalog search and retrieval for releases, masters, artists, and labels; managing user profiles, collections, folders, wantlists, and lists; and opt-in marketplace and inventory operations such as listings, orders, messages, fees, and CSV uploads/exports.
Click on "Deploy 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., "@discogs-mcpfind original 1979 UK pressings of Unknown Pleasures on Discogs"
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.
discogs-mcp (Discogs MCP connector)
Local MCP connector for the Discogs API. One user, bring-your-own personal access token, stdio by default. HTTP mode binds to 127.0.0.1 and is not a hosted service.
This application uses Discogs' API but is not affiliated with, sponsored or endorsed by Discogs. "Discogs" is a trademark of Zink Media, LLC.
The registry covers 60 of the 62 operations in discogs.openapi.json. Two OAuth 1.0a endpoints are excluded because this connector uses personal access tokens only. scripts/gen-operations.mjs holds that allow-list, and test/operations.test.ts repeats it. Image URLs are not an endpoint. Parsers drop image fields and never fetch them.
Setup
npm install
npm run ci
npm start
npm run start:httpnpm start speaks stdio. npm run start:http serves Streamable HTTP at http://127.0.0.1:3000/mcp and GET /health. HTTP mode has no authentication. Keep it on localhost.
Create a Discogs personal access token in the Discogs developer settings. Put it in DISCOGS_TOKEN. The connector sends Authorization: Discogs token=<token> and never puts the token in the query string.
{
"mcpServers": {
"discogs": {
"command": "node",
"args": ["/workspace/connectors/discogs/dist/index.js"],
"env": {
"DISCOGS_TOKEN": "...",
"DISCOGS_CONTACT": "you@example.com",
"DISCOGS_ALLOW_WRITES": "false",
"DISCOGS_TOOLSETS": "database,user,collection,wantlist,lists"
}
}
}
}Docker (HTTP, no authentication, localhost only):
docker build -t discogs .
docker run -p 127.0.0.1:3000:3000 \
-e DISCOGS_TOKEN=... \
-e DISCOGS_CONTACT=you@example.com \
discogsDo not put tokens in the image.
Regenerate the operations registry after a spec change:
npm run gen:operationsRelated MCP server: mcp-discogs
Config
Variable | Meaning |
| Personal access token. Required unless |
| Required. Email or http(s) URL. Used in the User-Agent |
| Set to |
| Must be the literal |
| Default |
| Comma list of toolsets, or |
| In-memory TTL for public database GETs. Default 300. Hard cap 21600 (6 hours). Larger values are rejected. |
| Inventory CSV size cap. Default 1000000. |
| Override for tests. Default |
| Upstream timeout. Default 20000. |
|
|
| HTTP port. Default 3000. Bound to 127.0.0.1. |
Invalid values are reported by field name and issue code. The rejected value is not included. The token is redacted in logs, errors, tool results, thrown messages, and URLs.
Without DISCOGS_TOKEN and without DISCOGS_ANONYMOUS=true the server refuses to start.
Toolsets and tools
Eight tools. discogs_info is always on. Each other tool takes an action enum.
Tool | Default | Actions |
| always | Connector version, toolsets, writes, rate-limit state, cache TTL, attribution, terms note. |
| yes | search, get_release, get_release_rating, get_release_stats, get_user_release_rating, get_master, get_master_versions, get_artist, get_artist_releases, get_label, get_label_releases |
| yes | get_identity, get_profile, edit_profile, list_submissions, list_contributions |
| yes | list_folders, create_folder, get_folder, update_folder, delete_folder, list_folder_releases, find_release, add_release, update_instance, delete_instance, list_fields, update_field, get_value, set_release_rating, delete_release_rating |
| yes | list, add, update, delete |
| yes | list, get |
| opt-in | list_inventory, get_listing, create_listing, update_listing, delete_listing, list_orders, get_order, update_order, list_messages, create_message, get_fee, get_fee_for_currency, get_price_suggestions, get_stats |
| opt-in | request_export, list_exports, get_export, download_export, list_uploads, get_upload, upload_add, upload_change, upload_delete |
Marketplace and inventory carry buyer addresses and seller data (Restricted Data). Enable them with DISCOGS_TOOLSETS.
Anonymous mode publishes discogs_info, discogs_database, and discogs_marketplace. Search and every user or write action is refused.
Folder 0 is All. Folder 1 is Uncategorized. Folder 0 and folder 1 cannot be edited or deleted. Add a release to folder 1, not folder 0.
include_image_urls is an optional boolean on every tool. Default drops images, thumb, cover_image, and avatar_url. When true, those fields become URL strings. The connector never fetches images.
Inventory upload actions take body.csv as a string. Headers are lowercased. Required columns: add needs release_id,price,media_condition; change needs release_id plus at least one other field; delete needs listing_id. The dry-run preview shows the row count and the first 5 rows. Export download returns CSV text capped at 200 data rows plus total_rows and truncated.
Write safety
Writes need confirm set to the boolean true and DISCOGS_ALLOW_WRITES=true. Omit confirm for a dry-run preview (method, path, redacted body, summary, what_would_change). The preview does not send a request. confirm: true with writes disabled returns a blocked preview.
Destructive operations are flagged: delete folder, delete collection instance, delete wantlist item, delete listing, delete rating, inventory delete CSV, and order status changes to Cancelled* or Refund Sent. Shipping and status cannot be set in the same order edit.
Rate limits
Authenticated traffic is capped at 60 requests per minute. Anonymous traffic is capped at 25. A local sliding window runs in addition to Discogs headers X-Discogs-Ratelimit, X-Discogs-Ratelimit-Used, and X-Discogs-Ratelimit-Remaining. When remaining is 2 or less the client waits for the window. On HTTP 429 it honors Retry-After if present, otherwise it waits for the next window, retries at most once, then returns a typed rate-limit error.
Requests send Accept: application/vnd.discogs.v2.plaintext+json.
Terms and data use
Every successful tool result includes attribution ("Data provided by Discogs. https://www.discogs.com") and fetched_at (ISO-8601). The full non-affiliation notice lives in the server instructions and in this README. It is not repeated as a long block on every result.
API data is cached in memory only. The connector never writes Discogs payloads to disk. Only public database GETs are cached. Collection, wantlist, marketplace, lists, and profile responses are not cached. The TTL cannot exceed 6 hours. Treat cached public data as no fresher than that cap.
Restricted Data (collections, wantlists, marketplace, images, user data) is for personal use by the token holder. No commercial use, no transfer to third parties, no sublicensing. This connector must remain free. Do not use it to charge for Discogs data. Do not bulk-copy Discogs data.
Comparison with cswkim/discogs-mcp-server
cswkim/discogs-mcp-server publishes many flat tools. This connector publishes eight tools with action enums, confirm-gated writes with dry-run previews, inventory CSV add/change/delete with validation, order tracking, price suggestions/fee/stats, per-user release ratings, attribution and Restricted-Data handling, Discogs rate-limit headers, typed parsers, and spec-coverage tests. Those differences are from reading that project's public description and from this repo's tests. This README does not claim a live run of the other server.
Live check
See LIVE-CHECK.md. Run node scripts/live-check.mjs --mock against the built stdio server. --live-public is a small anonymous check the operator runs. --live-token runs only when DISCOGS_TOKEN is set and prints no secrets.
License
MIT, see LICENSE. This is an independent, unofficial connector and is not endorsed by the Discogs project or its owners.
This server cannot be deployed
Maintenance
Related MCP Connectors
Full Spotify Web API coverage - albums, artists, playlists, player controls, and more.
Search MusicBrainz artists, releases, works, labels; resolve ISRC/ISWC/barcode; fetch cover art.
Scrape Discogs music releases, artists, labels, formats and catalogue numbers. Pay per row.
Notes, kanban tasks, and a capture inbox: read and create Flow data with a personal token.
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables interactions with the Discogs API for music catalog operations and search functionality, allowing users to manage their Discogs collections through natural language.53181 npm132MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying music discography data from Discogs, including master releases, artist profiles, and label information.277 npm1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, manage, and analyze personal Discogs music collections with features like mood-based recommendations, advanced search, and collection analytics.15 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with your personal Discogs music collection, including search, mood-aware recommendations, collection analytics, and more.15 npmMIT