Skip to main content
Glama
nepomusic

Discogs MCP Server

by nepomusic

🎵 Discogs MCP Server

Version License: MIT TypeScript Cloudflare Workers MCP

Deploy to Cloudflare

あなたの個人Discogs音楽コレクションをAIアシスタントが操作できるようにする、強力な Model Context Protocol(MCP)サーバーです。Cloudflare Workers上で、公式の Cloudflare Agents SDK@modelcontextprotocol/sdk を使用して構築されています。

✨ 機能

  • 🔐 安全なOAuth認証: Discogsアカウントを安全に接続できます

  • 🧠 インテリジェントな気分マッピング: 感情を音楽に変換します(「まったり」「エネルギッシュ」「日曜の夜の雰囲気」など)

  • 🔍 高度な検索インテリジェンス: ORロジックと関連性スコアリングを用いた複数戦略の検索

  • 📊 コレクション分析: あなたの音楽に関する包括的な統計と洞察を提供します

  • 🎯 文脈に応じたレコメンデーション: 気分、ジャンル、類似性に基づくスマートな提案

  • エッジコンピューティング: Cloudflare Workersによるグローバルな低遅延応答

  • 🗂️ スマートキャッシング: KVベースのインテリジェントなキャッシングで最適なパフォーマンスを実現

  • 🔄 バックグラウンドコレクション同期: 6時間ごとのジョブがコレクションのスナップショットをKVに保持するため、毎回Discogsをページングしなくても、スナップショットから検索に答えられます

Related MCP server: 1001 Albums Generator MCP

⚠️ これは共有サービスではありません

discogs-mcp.com はメンテナーのプライベートインスタンスです。 単一のDiscogsアカウントに限定されており、他のユーザーには403を返します。

なぜでしょうか。Discogs APIのレート制限(1分あたり60リクエスト、送信元IPごとにカウント)は、複数のユーザーで共有するには厳しすぎます。1人のユーザーがコレクションを活発に参照するだけで、この制限を使い切ってしまいます。壊れたマルチテナントサービスを運用する代わりに、各ユーザーが自分のDiscogs API資格情報を使って自分のWorkerをデプロイします

良い知らせとして、自分の環境にコピーをデプロイするのは簡単で、Cloudflare Workersの無料枠で動作し、10分ほどで完了します。下の Self-Hosting を参照してください。

🚀 Self-Hosting

一番手っ取り早いのは、上の Deploy to Cloudflare ボタンです。このボタンはリポジトリをGitHubアカウントにクローンし、CloudflareアカウントにKV名前空間と Durable Object を準備し、3つのシークレットの入力を促し、Workers Builds を設定するので、フォークに今後プッシュすると自動的に再デロイされます。

1. Discogsデベロッパーアプリを登録する

discogs.com/settings/developers にアクセスし、Create an Application を選択します。名前は何でも構いません。Callback URL は今のところプレースホルダーで構いません(後でWorkerをデプロイしてから戻って設定します)。Consumer KeyConsumer Secret を保存してください — 次のステップで入力します。

2. ボタンをクリックする

Deploy to Cloudflare

プロンプトが表示されたら、次を貼り付けます。

Secret

Value

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"

自分の数値IDは、https://api.discogs.com/users/<your-username> にアクセスして id フィールドを確認してください。変更をプッシュすると、Workers Builds が自動的に再デプロイします。

5. MCPクライアントを接続する

下の https://your-worker.workers.dev を自分のURLに置き換えてください。

Claude Desktop — Settings → Integrations → Add Integration → 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 / Generic:

{
  "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リモールと、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はそのリクエストだけ直接呼び出しにフォールバックしてログに記録するため、電源が切れているマシンでも停止ではなく、共有IP時の動作に劣化するだけです。実装と正当性の説明は src/rate-limiter/relay.ts にあります。

コレクションサイズと無料プラン

無料プランで制約になるのはCPU時間です。ツール呼び出しとバックグラウンド同期の両方で、1回につき10ミリ秒までです。同期は1ページずつ保存してこの制限を守っており、構築されるスナップショットには検索に必要なフィールドだけを保持します(リリースあたり約450バイト)。これにより、最大で約2,000リリースのコレクションまで余裕で対応できます。それを超えると、検索のたびにスナップショットを読み込む分、予算に負荷がかかり、4,000以上のコレクションでは search_collectionrefresh_collection がメッセージなしの実行エラーで失敗することがあります。これはランタイムパー呼び出しを終了させたもので、Discogsのエラーではありません。解決策は Workers Paid(月額5ドル)にすることです。実行時間の上限が30秒になります。デプロイ方法に他の変更は不要です。

どのプランでも、get_cache_stats でスナップショットのアイテム数と取得時間、進行中のシンクロのページ数が確認できるため、キャッシュエントリ数から推測せず、バックグラウンド同期の進捗を見られます。

🔐 認証

このサーバーは、DiscogsをIDプロバイダとして使う MCP OAuth 2.1 を利用します。初回接続時:

  1. MCPクライアントが自動的にブラウザのウィンドウを開きます

  2. Discogs側でアプリを認可します

  3. リダイレクトで戻って認証完了です — コピー&ペーストは不要です

  4. セッションは7日間維持されます

🛠️ 利用可能なツール

🔓 パブリックツール(認証不要)

Tool

Description

ping

サーバーの接続テスト

server_info

サーバー情報と機能を取得する

auth_status

認証状態の確認とログイン手順の取得

🔐 認証ツール(ログイン必須)

検索と発見

Tool

Description

search_collection

明示的なジャンルフィルター、気分を考慮したランキング、マスターレベルの重複排除で自分のコレクションを検索

search_discogs

Discogsの全カタログ(releases、masters、artists、labels)を検索 — 既に所有している結果にマークを付ける

get_release

個別のリリース(トラックリスト、フォーマット、レーベル)の詳細情報を取得する

get_collection_stats

ジャンルの内訳、年代分析、フォーマット分布、評価を確認する

get_recommendations

ジャンル、年代、気分、類似度に基づくパーソナライズされたおすすめを取得する

コレクション管理

Tool

Description

add_to_collection

リリースをフォルダーに追加する(デフォルトは未分類)

remove_from_collection

特定のリリースインスタンスをフォルダーから削除する

moveere_release

リリースインスタンスをフォルダー間で移動する

rate_release

リリースを 0(評価なし)〜 5 の星で評価する

ウィッシュリスト

Tool

Description

get_wantlist

ウィッシュリストのリリースを一覧表示(ページ)

add_to_wantlist

リリースをウィッシュリストに追加

remove_from_wantlist

リリースをウィッシュリストの中のリリースを削除

フォルダー

ツール

説明

list_folders

リリース数を表示したフォルダー一覧

create_folder

新しいフォルダーを作成する

edit_folder

既存フォルダー(フォルダーを除く)の名前を変更し、

delete_folder

空のフォルダー(システムフォルダーを除く)を削除する

カスタムフィールド

ツール

説明

list_custom_fields

コレクションに定義されているすべてのカスタムフィ field 一覧表示

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プロンプト

Prompt

Description

Arguments

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 - 詳細は LICENSE ファイルを参照してください。

🙏 謝辞

  • Discogs は音楽データベース API を提供してくれることに感謝

  • Model Context Protocol は標準プロトコルを提供してくれることに感謝

  • Cloudflare Workers はプラットフォームを提供してくれることに感謝

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Connects AI assistants to a self-hosted Your Spotify instance and Spotify's Web API for deep listening analytics and playback control. It enables users to query unlimited listening history, generate custom Wrapped summaries, and manage playlists through natural language.
    18
    Apache 2.0

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/nepomusic/discogs-mcp-nepomusic'

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