suuppon/discogs-mcp-server
If you are the rightful owner of discogs-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
Discogs MCP Server is a Model Context Protocol server that interfaces with the Discogs API using the disconnect library, enabling LLM-based clients to query Discogs data through standardized MCP tool interfaces.
Discogs MCP Server
A Model Context Protocol (MCP) server exposing Discogs API tools using disconnect, written in JavaScript.
This allows LLM-based clients (e.g. ChatGPT, Claude, VS Code MCP Inspector) to query Discogs data directly through standardized MCP tool interfaces.
✨ Features
- 🔍 Search artists, releases, labels, and masters (
discogs.search) - 🎶 Fetch metadata for releases, masters, and artists (
discogs.getRelease,discogs.getMaster,discogs.getArtist) - 👤 Authenticated identity lookup (
discogs.getIdentity) - 💿 Collection tools: list user’s collection folders and releases (
discogs.collection.listReleases) - 🧾 Wantlist management: add/remove releases from authenticated user’s wantlist (
discogs.wantlist.add,discogs.wantlist.remove) - 🚦 Rate-limiting via Bottleneck to stay under Discogs API limits (≈60 req/min authenticated)
- ⚙️ Configurable transport: works over HTTP (default) or stdio for local MCP embedding
📦 Installation
# 1. Clone or create a new folder
mkdir discogs-mcp-server && cd discogs-mcp-server
# 2. Initialize project
npm init -y && npm pkg set type=module
# 3. Install dependencies
npm install @modelcontextprotocol/sdk disconnect express zod bottleneck dotenv
# 4. Add files
# - server.mjs (main script)
# - .env (from example below)
⚙️ Configuration
Create a .env file:
USER_AGENT=DiscogsMCP/0.1 (+https://example.com)
DISCOGS_USER_TOKEN=your_discogs_personal_access_token
PORT=3323
TRANSPORT=http # or stdio
🔐 Note: Discogs requires a valid
User-Agentstring on every request.
If you prefer OAuth credentials:
DISCOGS_CONSUMER_KEY=your_key
DISCOGS_CONSUMER_SECRET=your_secret
🚀 Running the Server
Option 1 — HTTP Transport (default)
npm run dev
# or
node --env-file=.env server.mjs
Server will start on:
http://localhost:3323/mcp
Option 2 — STDIO Transport (for local MCP embedding)
TRANSPORT=stdio node server.mjs
🧠 Connecting to Clients
| Client | How to Connect |
|---|---|
| Claude / MCP Inspector | npx @modelcontextprotocol/inspector → Add URL http://localhost:3323/mcp |
| VS Code (Copilot MCP) | Add new MCP server → HTTP URL: http://localhost:3323/mcp |
| ChatGPT (MCP Client) | Add locally via manifest.yaml if supported |
🧰 Available Tools
discogs.search
Search across artists, releases, labels, and masters.
{
"q": "Miles Davis Kind of Blue",
"type": "release",
"page": 1,
"per_page": 10
}
discogs.getRelease
Fetch release details by ID.
{ "id": 3829 }
discogs.getArtist
Fetch artist info by ID.
{ "id": 1358 }
discogs.collection.listReleases
List user’s collection folder contents.
{ "username": "your_username", "folder_id": 0, "page": 1, "per_page": 25 }
discogs.wantlist.add / discogs.wantlist.remove
Add or remove releases from authenticated user’s wantlist.
{ "release_id": 249504 }
🧩 Architecture
graph TD
A[LLM MCP Client] -->|JSON-RPC| B[Discogs MCP Server]
B -->|disconnect lib| C[Discogs API]
C -->|returns JSON| B
B --> A
🧱 Rate Limiting
Discogs imposes limits:
- Authenticated: ~60 requests/min
- Unauthenticated: ~25 requests/min
The server throttles requests via Bottleneck to stay safely under those thresholds.
🧑💻 Example Prompts
Once connected to an MCP client:
- “Search for all releases matching Miles Davis Kind of Blue.”
- “Get release info for ID 3829.”
- “Show my Discogs user identity.”
- “List my collection folder 0 with 50 items per page.”
- “Add release 249504 to my wantlist.”
🧩 Extending
You can easily add new Discogs tools by extending the MCP server:
server.registerTool('discogs.getLabel', { ... }, async ({ id }) => db.getLabel(id));
Other useful additions:
- Market listings (
marketplaceAPI) - Inventory management
- Label releases
- User collection folder CRUD
🪪 License
MIT © 2025
Author: Kim Junseop
Based on: bartve/disconnect
Integration: Model Context Protocol (MCP) SDK