Discogs MCP Server
🎵 Discogs MCP Server
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: 1001 Albums Generator MCP
⚠️ これは共有サービスではありません
discogs-mcp.comはメンテナーのプライベートインスタンスです。 単一のDiscogsアカウントにロックされており、他のユーザーには403を返します。
なぜか? Discogs APIのレート制限(1分あたり60リクエスト、送信元IPごとにカウント)は、ユーザー間で共有するには厳しすぎます。1人のユーザーからのアクティブなコレクションクエリだけで飽和する可能性があります。壊れたマルチテナントサービスを実行する代わりに、各ユーザーが独自のDiscogs API資格情報を使用して独自のWorkerをデプロイします。
良いニュース: 独自のコピーをデプロイするのは簡単で、Cloudflare Workersの無料枠で動作し、約10分かかります。以下のセルフホスティングを参照してください。
🚀 セルフホスティング
最速の方法は、上記のDeploy to Cloudflareボタンです。このリポジトリをGitHubアカウントにクローンし、CloudflareアカウントにKV名前空間とDurable Objectをプロビジョニングし、3つのシークレットを入力するよう促し、Workers Buildsを設定して、フォークへの将来のプッシュが自動的に再デプロイされるようにします。
1. Discogs開発者アプリを登録する
discogs.com/settings/developersにアクセスし、アプリケーションを作成します。名前は何でも構いません。コールバックURLは今のところプレースホルダーで構いません(Workerのデプロイ後に戻って設定します)。Consumer KeyとConsumer Secretを保存してください。次に貼り付けます。
2. ボタンをクリックする
プロンプトが表示されたら、以下を貼り付けます:
シークレット | 値 |
| ステップ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 — 設定 → 統合 → 統合を追加 → 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 / 汎用:
{
"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の共有egress IPから送信されるため、同じ場所からDiscogsにアクセスする他のWorkerが1分あたり60リクエストの枠を消費します。これは、アイドル状態が数時間続いた後の最初のリクエストで、すでに低いX-Discogs-Ratelimit-Remainingが報告されることで確認できます。問題が発生した場合は、Workerを自分が実行するリレーに向けます: 常時稼働のマシン(自宅のMac、小さなVPSなど)へのCloudflare Tunnelと、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時間です: ツール呼び出しとバックグラウンド同期の両方で、呼び出しあたり10 msです。同期はこれを守るために一度に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日間持続します
🛠️ 利用可能なツール
🔓 公開ツール (認証不要)
ツール | 説明 |
| サーバーの接続をテスト |
| サーバー情報と機能を取得 |
| 認証ステータスを確認し、ログイン手順を取得 |
🔐 認証済みツール (ログインが必要)
検索と発見
ツール | 説明 |
| 明示的なジャンルフィルター、ムード認識ランキング、マスターレベルの重複排除でコレクションを検索 |
| Discogs全体のカタログ(リリース、マスター、アーティスト、レーベル)を検索 — 所有済みの結果をマーク |
| 特定のリリースの詳細情報を取得(トラックリスト、フォーマット、レーベル) |
| ジャンル内訳、年代分析、フォーマット分布、評価を表示 |
| ジャンル、年代、ムード、または類似性に基づくパーソナライズされたレコメンデーションを取得 |
コレクション管理
ツール | 説明 |
| リリースをフォルダーに追加(デフォルトは未分類) |
| 特定のリリースインスタンスをフォルダーから削除 |
| リリースインスタンスをフォルダー間で移動 |
| リリースを0(評価なし)から5つ星まで評価 |
ウィッシュリスト
ツール | 説明 |
| ウィッシュリストのリリースを一覧表示(ページング対応) |
| リリースをウィッシュリストに追加 |
| リリースをウィッシュリストから削除 |
フォルダー
ツール | 説明 |
| すべてのフォルダーとリリース数を一覧表示 |
| 新しいフォルダーを作成 |
| 既存のフォルダー名を変更(システムフォルダーを除く) |
| 空のフォルダーを削除(システムフォルダーを除く) |
カスタムフィールド
ツール | 説明 |
| コレクションに定義されたすべてのカスタムフィールドを一覧表示 |
| 特定のリリースインスタンスにカスタムフィールド値を設定 |
診断
ツール | 説明 |
| キャッシュパフォーマンスを表示(総エントリ数、保留中のリクエスト、内訳) |
| 6時間ごとの同期を待たずに、コレクションスナップショットの完全な更新を今すぐ強制実行 |
📚 MCPリソース
標準化されたMCPリソースURIを介してDiscogsデータにアクセスします:
discogs://collection # Complete collection (JSON)
discogs://release/{id} # Specific release details
discogs://search?q={query} # Search results💬 MCPプロンプト
プロンプト | 説明 | 引数 |
| コレクションを閲覧して探索 | |
| コレクション内の特定の音楽を検索 |
|
| コレクションに関するインサイトと統計を取得 |
🏗️ ローカル開発
# 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 ファイルを参照してください。
🙏 謝辞
音楽データベース API を提供する Discogs
標準規格を提供する 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…
Scrape Discogs music releases, artists, labels, formats and catalogue numbers. Pay per row.
AI assistant integration for Leaf — track books, log reading sessions, and manage your library.
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables interactions with the Discogs API for music catalog operations and search functionality, allowing users to manage their Discogs collections through natural language.5396120MIT
- 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 gradedqualityAmaintenanceEnables finding the best-sounding pressing of an album and mood- and taste-based music recommendations via Discogs.2MIT
- 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/DirtyDimmy/discogs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server