Discogs MCP Server
🎵 Discogs MCP Server
あなたの個人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 Key と Consumer Secret を保存してください — 次のステップで入力します。
2. ボタンをクリックする
プロンプトが表示されたら、次を貼り付けます。
Secret | Value |
| ステップ1の値 |
| ステップ1の値 |
| 任意のランダムな文字列 — |
デプロイが完了すると、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-callback4. (オプションだが推奨)インスタンスを自分の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/mcpWindsurf (~/.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 に転送して Host と X-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_SECRETDISCOGS_RELAY_ORIGIN を空のままにすると、Discogsに直接呼び出します(デフォルト)。リレーに到達できない場合は、Workerはそのリクエストだけ直接呼び出しにフォールバックしてログに記録するため、電源が切れているマシンでも停止ではなく、共有IP時の動作に劣化するだけです。実装と正当性の説明は src/rate-limiter/relay.ts にあります。
コレクションサイズと無料プラン
無料プランで制約になるのはCPU時間です。ツール呼び出しとバックグラウンド同期の両方で、1回につき10ミリ秒までです。同期は1ページずつ保存してこの制限を守っており、構築されるスナップショットには検索に必要なフィールドだけを保持します(リリースあたり約450バイト)。これにより、最大で約2,000リリースのコレクションまで余裕で対応できます。それを超えると、検索のたびにスナップショットを読み込む分、予算に負荷がかかり、4,000以上のコレクションでは search_collection や refresh_collection がメッセージなしの実行エラーで失敗することがあります。これはランタイムパー呼び出しを終了させたもので、Discogsのエラーではありません。解決策は Workers Paid(月額5ドル)にすることです。実行時間の上限が30秒になります。デプロイ方法に他の変更は不要です。
どのプランでも、get_cache_stats でスナップショットのアイテム数と取得時間、進行中のシンクロのページ数が確認できるため、キャッシュエントリ数から推測せず、バックグラウンド同期の進捗を見られます。
🔐 認証
このサーバーは、DiscogsをIDプロバイダとして使う MCP OAuth 2.1 を利用します。初回接続時:
MCPクライアントが自動的にブラウザのウィンドウを開きます
Discogs側でアプリを認可します
リダイレクトで戻って認証完了です — コピー&ペーストは不要です
セッションは7日間維持されます
🛠️ 利用可能なツール
🔓 パブリックツール(認証不要)
Tool | Description |
| サーバーの接続テスト |
| サーバー情報と機能を取得する |
| 認証状態の確認とログイン手順の取得 |
🔐 認証ツール(ログイン必須)
検索と発見
Tool | Description |
| 明示的なジャンルフィルター、気分を考慮したランキング、マスターレベルの重複排除で自分のコレクションを検索 |
| Discogsの全カタログ(releases、masters、artists、labels)を検索 — 既に所有している結果にマークを付ける |
| 個別のリリース(トラックリスト、フォーマット、レーベル)の詳細情報を取得する |
| ジャンルの内訳、年代分析、フォーマット分布、評価を確認する |
| ジャンル、年代、気分、類似度に基づくパーソナライズされたおすすめを取得する |
コレクション管理
Tool | Description |
| リリースをフォルダーに追加する(デフォルトは未分類) |
| 特定のリリースインスタンスをフォルダーから削除する |
| リリースインスタンスをフォルダー間で移動する |
| リリースを 0(評価なし)〜 5 の星で評価する |
ウィッシュリスト
Tool | Description |
| ウィッシュリストのリリースを一覧表示(ページ) |
| リリースをウィッシュリストに追加 |
| リリースをウィッシュリストの中のリリースを削除 |
フォルダー
ツール | 説明 |
| リリース数を表示したフォルダー一覧 |
| 新しいフォルダーを作成する |
| 既存フォルダー(フォルダーを除く)の名前を変更し、 |
| 空のフォルダー(システムフォルダーを除く)を削除する |
カスタムフィールド
ツール | 説明 |
| コレクションに定義されているすべてのカスタムフィ field 一覧表示 |
| 特定のリリースインスタンスのカスタムフィールド値を設定する |
診断
ツール | 説明 |
| キャッシュのパフォーマンスを確認する(総エントリ数、保留中のリクエスト、内訳) |
| 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 |
| コレクションをブラウズして探究する | |
| コレクションの中から特定の音楽を探す |
|
| コレクションに関する洞察と統計を取得する |
🏗️ ローカル開発
# 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/mcpwrangler.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診断
ping と server_info は、Discogs トラフィックがどのように送信されているか(直接、または上記のリレーを経由)と、リレーが直接呼び出しにフォールバックしたかどうかを報告します。レートリミッターのライブ状態(残り予算、キューの深さ、サーキットブレーカーの状態、リレーのフォールバック)を確認するには、DEBUG_TOKEN シークレットを設定し、GET /debug/budget?token=<DEBUG_TOKEN> を呼び出します。シークレットがない場合、エンドポイントは 404 を返します。
🤝 コントリビューション
リポジトリをフォークする
機能ブランチを作成する (
git checkout -b feature/amazing-feature)変更をコミットする (
git commit -m 'Add amazing feature')ブランチにプッシュする (
git push origin feature/amazing-feature)プルリクエストを開く
📄 ライセンス
MIT License - 詳細は LICENSE ファイルを参照してください。
🙏 謝辞
Discogs は音楽データベース API を提供してくれることに感謝
Model Context Protocol は標準プロトコルを提供してくれることに感謝
Cloudflare Workers はプラットフォームを提供してくれることに感謝
This server cannot be installed
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
The media memory layer for AI agents and their humans. Your AI client gets 29 tools to search your collection, add items, update ratings, preview music, and find patterns across everything you've read, watched, and listened to.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
A personal RAG database you build from chat, so AI creates work that sounds like you.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseAqualityDmaintenanceConnects 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.18Apache 2.0
- AlicenseNot gradedqualityDmaintenanceConnects the 1001 Albums Generator dataset to AI assistants, enabling natural language exploration of your listening journey, taste analysis, and group comparisons.ISC
- AlicenseNot gradedqualityAmaintenanceA powerful Model Context Protocol (MCP) server that enables AI assistants to interact with your personal Discogs music collection.1516MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, manage, and analyze personal Discogs music collections with features like mood-based recommendations, advanced search, and collection analytics.15MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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