The first search of the day is now instant. discogs-mcp pre-fetches your collection in the background every hour and keeps it in a snapshot, so search_collection doesn’t have to paginate the Discogs API from cold any more.
The server also tells your LLM client how to navigate it — every tool response ends with a “Next steps” block listing the most likely follow-up calls and the exact arguments to use, so chained queries like “find me a mellow jazz album, then expand the top hit” don’t make the model guess.
And if you’ve been putting off deploying your own copy, there’s now a Deploy to Cloudflare button in the README — one click, three secrets, done.
What’s new
- Hourly background sync keeps your collection snapshot fresh. Add or remove a record on Discogs and it’s visible to search within an hour, automatically.
- New
refresh_collectiontool forces an immediate snapshot refresh — useful when you’ve just bought an album and want it visible to search right now. - Server-level
instructionsand per-tool “Next steps” breadcrumbs make the server self-navigating for any LLM client. The instructions name a recommended path (search_collection→get_release→ mutations); each tool response ends with the most likely follow-up calls, with real values templated in (get_release(release_id=28861354), notrelease_id=<ID>). Inspired by Rui Carmo’s MCP server post. - One-click self-hosting via the Deploy to Cloudflare button in the README. Cloudflare provisions the KV namespaces, Durable Object, cron, and prompts for the secrets — no
wrangler kv namespace createneeded, and pushes to your fork redeploy automatically via Workers Builds.
Fixes
- First
search_collectioncall after a cold cache no longer times out. Previously this could take 30 seconds to two minutes on a 1,500-item collection, often longer than the MCP request timeout. It’s now sub-second. - Mood queries (“mellow Sunday morning”, “road trip music”) respond just as fast as keyword queries — they used to pay the same pagination cost as everything else.
Under the hood
- New
syncCollectionmodule with per-page retry, resumable progress, and atomic snapshot swap so readers never see partial state. - Cron runs hourly with a probe path: one API call to compare count + page-1 instance IDs against the snapshot. Full repaginate only when something changed. Steady-state cron tick now costs 1 Discogs request instead of 16.
- Self-healing across MCP request timeouts: if a sync stalls partway through, the next call resumes from where it left off rather than restarting.
- Dropped the
MCP_LOGSKV binding. Sync outcomes now structured-log to the Workers runtime so Cloudflare Observability ingests them — one fewer namespace for self-hosters to create.