discogs-mcp-server

suuppon/discogs-mcp-server

3.2

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.

Tools
6
Resources
0
Prompts
0

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-Agent string 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

ClientHow to Connect
Claude / MCP Inspectornpx @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 (marketplace API)
  • Inventory management
  • Label releases
  • User collection folder CRUD

🪪 License

MIT © 2025


Author: Kim Junseop
Based on: bartve/disconnect
Integration: Model Context Protocol (MCP) SDK