Skip to main content
Glama
rianvdm
by rianvdm

🎵 Discogs MCP 서버

버전 라이선스: MIT TypeScript Cloudflare Workers MCP

Cloudflare에 배포

AI 어시스턴트가 개인 Discogs 음악 컬렉션과 상호작용할 수 있게 해주는 강력한 Model Context Protocol (MCP) 서버입니다. 공식 Cloudflare Agents SDK@modelcontextprotocol/sdk를 사용하여 Cloudflare Workers 기반으로 구축되었습니다.

✨ 기능

  • 🔐 안전한 OAuth 인증: Discogs 계정을 안전하게 연결

  • 🧠 지능형 분위기 매핑: 감정을 음악으로 변환 ("차분한", "활기찬", "일요일 저녁 분위기")

  • 🔍 고급 검색 인텔리전스: OR 로직 및 관련성 점수를 사용한 다중 전략 검색

  • 📊 컬렉션 분석: 음악에 대한 종합적인 통계 및 인사이트

  • 🎯 컨텍스트 인식 추천: 분위기, 장르 및 유사성에 기반한 스마트 제안

  • 엣지 컴퓨팅: Cloudflare Workers를 통한 글로벌 저지연 응답

  • 🗂️ 스마트 캐싱: 최적의 성능을 위한 지능형 KV 기반 캐싱

  • 🔄 백그라운드 컬렉션 동기화: 6시간마다 실행되는 작업이 컬렉션 스냅샷을 KV에 저장하여, 검색 시 Discogs를 매번 페이지 단위로 호출하는 대신 스냅샷에서 응답

Related MCP server: navigravity

⚠️ 공유 서비스가 아닙니다

discogs-mcp.com은 관리자의 개인 인스턴스입니다. 단일 Discogs 계정에 고정되어 있으며, 다른 사용자가 접근하면 403 오류를 반환합니다.

이유는 무엇일까요? Discogs API 속도 제한(분당 60회 요청, 소스 IP 기준)은 여러 사용자가 공유하기에는 너무 빡빡합니다. 한 명의 활성 사용자가 컬렉션을 조회하는 것만으로도 제한에 도달할 수 있습니다. 제대로 작동하지 않는 멀티 테넌트 서비스를 운영하는 대신, 각 사용자가 자신의 Discogs API 자격 증명으로 자신의 Worker를 배포합니다.

좋은 소식: 자신만의 복사본을 배포하는 것은 간단하며, Cloudflare Workers 무료 티어에서 실행되며 약 10분이 소요됩니다. 아래 자체 호스팅을 참조하세요.

🚀 자체 호스팅

가장 빠른 방법은 위의 Cloudflare에 배포 버튼을 사용하는 것입니다. 이 버튼은 이 저장소를 GitHub 계정에 복제하고, Cloudflare 계정에 KV 네임스페이스와 Durable Object를 프로비저닝하며, 세 가지 비밀 값을 입력하도록 요청하고, Workers Builds를 설정하여 포크에 대한 향후 푸시가 자동으로 재배포되도록 합니다.

1. Discogs 개발자 앱 등록

discogs.com/settings/developers로 이동 → 애플리케이션 생성. 이름은 아무거나 지정하세요. 콜백 URL은 지금은 임시로 설정해도 됩니다(Worker 배포 후 다시 설정하게 됩니다). Consumer KeyConsumer Secret을 저장하세요 — 다음 단계에서 붙여넣습니다.

2. 버튼 클릭

Cloudflare에 배포

메시지가 표시되면 다음을 붙여넣으세요:

비밀 값

DISCOGS_CONSUMER_KEY

1단계에서 얻은 값

DISCOGS_CONSUMER_SECRET

1단계에서 얻은 값

JWT_SECRET

임의의 문자열 — openssl rand -hex 32 명령어 사용

배포가 완료되면 Cloudflare에서 Worker URL을 표시합니다 — https://discogs-mcp.<your-subdomain>.workers.dev와 같은 형식입니다. MCP 엔드포인트는 /mcp입니다.

3. Discogs 앱 콜백 URL 업데이트

Discogs 앱 설정으로 돌아가서 Callback URL을 다음으로 설정하세요:

https://discogs-mcp.<your-subdomain>.workers.dev/discogs-callback

4. (선택 사항이지만 권장) 인스턴스를 자신의 Discogs 사용자로 제한

기본적으로 Worker URL을 발견한 사람은 누구나 인증하여 Discogs 속도 제한 예산을 소비할 수 있습니다. 이를 제한하려면 포크의 wrangler.toml을 편집하고 [vars] 아래에 ALLOWED_DISCOGS_USER_ID를 설정하세요:

[vars]
# Single user
ALLOWED_DISCOGS_USER_ID = "123456"

# Or a comma-separated list for multiple users
ALLOWED_DISCOGS_USER_ID = "123456,789012,345678"

https://api.discogs.com/users/<your-username>을 방문하여 id 필드를 확인하면 숫자 ID를 찾을 수 있습니다. 변경 사항을 푸시하면 Workers Builds가 자동으로 재배포합니다.

5. MCP 클라이언트 연결

아래의 https://your-worker.workers.dev를 자신의 URL로 바꾸세요.

Claude Desktop — 설정 → 통합 → 통합 추가 → https://your-worker.workers.dev/mcp

Claude Code:

claude mcp add --transport http discogs https://your-worker.workers.dev/mcp

Windsurf (~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "discogs": {
      "serverUrl": "https://your-worker.workers.dev/mcp"
    }
  }
}

Continue.dev / Zed / 일반:

{
  "mcpServers": {
    "discogs": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://your-worker.workers.dev/mcp"]
    }
  }
}

MCP Inspector (테스트):

npx @modelcontextprotocol/inspector https://your-worker.workers.dev/mcp

수동 배포 (대안)

버튼을 사용하지 않으려는 경우 — 예를 들어 완전히 로컬 클론을 원하거나 버튼이 작동하지 않는 Cloudflare 계정인 경우:

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

# Create the two KV namespaces and copy the returned IDs into wrangler.toml
# (replace the empty `id = ""` values under the top-level [[kv_namespaces]] blocks)
wrangler kv namespace create MCP_SESSIONS
wrangler kv namespace create OAUTH_KV

# Set the three secrets
wrangler secret put DISCOGS_CONSUMER_KEY
wrangler secret put DISCOGS_CONSUMER_SECRET
wrangler secret put JWT_SECRET

# Deploy
npm run deploy

그런 다음 위의 3~5단계(콜백 URL, 선택적 허용 목록, MCP 클라이언트 연결)를 따르세요.

선택 사항: Discogs 호출을 자체 IP를 통해 라우팅

Discogs는 소스 IP별로 제한하며, Worker의 아웃바운드 요청은 Cloudflare의 공유 송신 IP에서 나가므로 동일한 위치에서 Discogs와 통신하는 다른 Worker가 분당 60회 요청을 소비하게 됩니다. 이는 몇 시간 동안 유휴 상태였던 후 첫 번째 요청에서 이미 낮은 X-Discogs-Ratelimit-Remaining 값을 보고할 때 확인할 수 있습니다. 이 문제가 발생하면 Worker를 사용자가 실행하는 릴레이로 지정하세요: 항상 켜져 있는 모든 머신(집에 있는 Mac, 소형 VPS)에 Cloudflare Tunnel을 연결하고, https://api.discogs.com으로 전달하면서 HostX-Forwarded-Host를 모두 api.discogs.com으로 설정하는 로컬 리버스 프록시를 실행하세요(cloudflared만으로는 X-Forwarded-Host를 덮어쓰므로 불가능합니다). 터널 호스트 이름 앞에 서비스 토큰 정책이 있는 Cloudflare Access 애플리케이션을 배치한 후:

# wrangler.toml: DISCOGS_RELAY_ORIGIN = "https://relay.example.com"
wrangler secret put RELAY_ACCESS_CLIENT_ID
wrangler secret put RELAY_ACCESS_CLIENT_SECRET

DISCOGS_RELAY_ORIGIN을 비워두면 Discogs를 직접 호출합니다(기본값). 릴레이에 연결할 수 없는 경우 Worker는 해당 요청에 대해 직접 호출로 대체(fallback)하고 이를 기록하므로, 꺼진 머신은 중단 대신 공유 IP 동작으로 저하됩니다. 구현 및 근거: src/rate-limiter/relay.ts.

🔐 인증

이 서버는 Discogs를 ID 제공자로 사용하는 MCP OAuth 2.1을 사용합니다. 처음 연결할 때:

  1. MCP 클라이언트가 자동으로 브라우저 창을 엽니다

  2. Discogs에서 애플리케이션을 승인합니다

  3. 다시 리디렉션되어 인증됩니다 — 복사하여 붙여넣을 필요 없음

  4. 세션은 7일 동안 지속됩니다

🛠️ 사용 가능한 도구

🔓 공개 도구 (인증 불필요)

도구

설명

ping

서버 연결 테스트

server_info

서버 정보 및 기능 확인

auth_status

인증 상태 확인 및 로그인 지침 제공

🔐 인증된 도구 (로그인 필요)

검색 및 발견

도구

설명

search_collection

명시적 장르 필터, 분위기 인식 순위, 마스터 수준 중복 제거로 컬렉션 검색

search_discogs

Discogs 전체 카탈로그 검색 (릴리스, 마스터, 아티스트, 레이블) — 이미 소유한 결과 표시

get_release

특정 릴리스에 대한 상세 정보 확인 (트랙리스트, 포맷, 레이블)

get_collection_stats

장르 분석, 시대 분석, 포맷 분포, 평점 확인

get_recommendations

장르, 시대, 분위기 또는 유사성에 따른 개인화된 추천 받기

컬렉션 관리

도구

설명

add_to_collection

폴더에 릴리스 추가 (기본값: 미분류)

remove_from_collection

폴더에서 특정 릴리스 인스턴스 제거

move_release

폴더 간 릴리스 인스턴스 이동

rate_release

릴리스 평점 매기기 (0점(평점 없음) ~ 5점)

위시리스트

도구

설명

get_wantlist

위시리스트의 릴리스 목록 확인 (페이지네이션)

add_to_wantlist

위시리스트에 릴리스 추가

remove_from_wantlist

위시리스트에서 릴리스 제거

폴더

도구

설명

list_folders

릴리스 개수와 함께 모든 폴더 목록 확인

create_folder

새 폴더 생성

edit_folder

기존 폴더 이름 변경 (시스템 폴더 제외)

delete_folder

빈 폴더 삭제 (시스템 폴더 제외)

사용자 정의 필드

도구

설명

list_custom_fields

컬렉션에 정의된 모든 사용자 정의 필드 목록 확인

edit_custom_field

특정 릴리스 인스턴스에 사용자 정의 필드 값 설정

진단

도구

설명

get_cache_stats

캐시 성능 확인 (총 항목 수, 보류 중인 요청, 세부 분석)

refresh_collection

6시간 간격 동기화를 기다리지 않고 지금 컬렉션 스냅샷 전체 새로고침 강제 실행

📚 MCP 리소스

표준화된 MCP 리소스 URI를 통해 Discogs 데이터에 접근:

discogs://collection             # Complete collection (JSON)
discogs://release/{id}           # Specific release details
discogs://search?q={query}       # Search results

💬 MCP 프롬프트

프롬프트

설명

인수

browse_collection

컬렉션 탐색 및 둘러보기

find_music

컬렉션에서 특정 음악 찾기

query

collection_insights

컬렉션에 대한 인사이트 및 통계 확인

🏗️ 로컬 개발

# Dev secrets live in .dev.vars (gitignored); the same Discogs app is fine for dev
cp .dev.vars.example .dev.vars   # then fill in DISCOGS_CONSUMER_KEY, DISCOGS_CONSUMER_SECRET, JWT_SECRET

# Run the Worker locally
npm run dev

# Test with MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:8787/mcp

wrangler.toml의 기본 [vars] 블록은 ALLOWED_DISCOGS_USER_ID를 비워두므로 로컬 개발은 모든 Discogs 계정에 대해 열려 있습니다 — 테스트에 편리합니다.

🧪 테스트

npm test              # vitest in watch mode (runs in workerd via @cloudflare/vitest-pool-workers)
npx vitest run        # one pass, then exit
npm run lint          # ESLint; CI runs lint, test, and a dry-run build

진단

pingserver_info는 Discogs 트래픽이 어떻게 나가는지(직접, 또는 위에서 설명한 릴레이를 통해)와 릴레이가 직접 호출로 대체되었는지 여부를 보고합니다. 속도 제한기의 실시간 상태(남은 예산, 대기열 깊이, 차단기 상태, 릴레이 대체)를 보려면 DEBUG_TOKEN 비밀 값을 설정하고 GET /debug/budget?token=<DEBUG_TOKEN>을 호출하세요. 비밀 값이 없으면 엔드포인트는 404를 반환합니다.

🤝 기여

  1. 저장소를 포크하세요

  2. 기능 브랜치를 만드세요 (git checkout -b feature/amazing-feature)

  3. 변경 사항을 커밋하세요 (git commit -m 'Add amazing feature')

  4. 브랜치에 푸시하세요 (git push origin feature/amazing-feature)

  5. 풀 리퀘스트를 열어주세요

📄 라이선스

MIT 라이선스 - 자세한 내용은 LICENSE 파일을 참조하세요.

🙏 감사의 말

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
<1hResponse time
2wRelease cycle
16Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    B
    maintenance
    A Model Context Protocol (MCP) server for Last.fm. Gives AI assistants access to your listening history, music discovery, and detailed track/artist/album information.
    43
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An intelligent MCP server that enables AI agents to act as sophisticated music curators for self-hosted Navidrome libraries, focusing on quality, discovery, and non-destructive management.
    15
    1
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    A Model Context Protocol server that gives AI assistants access to your self-hosted Audiobookshelf library, enabling queries about current listening, searching, and browsing.
    1
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    MCP server that enables AI assistants to interact with a personal Discogs music collection, supporting search, collection management, wantlist, folders, custom fields, and recommendations via Cloudflare Workers.
    MIT

View all related MCP servers

Related MCP Connectors

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • MCP server for Producer/Riffusion AI music generation

  • MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rianvdm/discogs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server