Bandcamp crate digging
io.github.Venut-Technologies由 GitHub 账号 Venut-Technologies 发布v0.1.2更新于 Oct 24, 2026
Dig Bandcamp from any AI assistant: search artists, albums, labels and tracks, browse genre tags.
概览
本地 MCP 服务器,让助手搜索 Bandcamp 并读取公开的艺人、厂牌、专辑和曲目页面,包括曲目列表与价格。
- 可以做什么
- 搜索 Bandcamp 上的艺人、专辑、曲目和厂牌,可按类型筛选
- 读取专辑页面:标题、艺人、发行日期、厂牌、标签、简介、数字价格,以及含各曲目艺人的完整曲目列表
- 读取艺人或厂牌页面:名称、所在地、简介和作品目录(最多 100 张发行)
- 读取曲目页面:标题、艺人、时长、标签、简介及其所属专辑
- 按流派标签浏览发行,可按热门或最新排序,并用游标翻页
- 适用场景
- 适合让助手在 Bandcamp 公开目录中“淘碟”:梳理某厂牌旗下艺人、查看某标签下的新发行、获取专辑曲目列表与价格,或确认合辑中每首曲目的作者。
- 运行要求
- 通过 npx(包名 bandcamp-mcp)或全局 npm 安装以 stdio 在本地运行,需要 Node.js 20 或更高版本。无需账号、API 密钥或配置。需要能访问 bandcamp.com 和 npm 仓库;在 Windows 上,图形界面客户端可能需要用 cmd /c 包裹 npx 命令。
安装
在 SourceWeft 中
- 打开 控制台中的 Bandcamp crate digging,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
bandcamp-mcp
[npm] [CI] [Bandcamp smoke test] [License: MIT]
Dig through Bandcamp by talking to Claude: chase a label's roster, see what is
new under a tag, pull up an album's tracklist and price, and find who actually
made track 7 on that compilation. bandcamp-mcp is a local
MCP server — the way an AI assistant reaches
tools on your machine — so any MCP client can use it: Claude Desktop, Claude
Code, Cursor, VS Code. No account, no API key, nothing to configure.
Status: experimental. Pre-1.0 and actively developed: a minor version may change behaviour or break compatibility, a patch never does. Only the latest release is supported.
Not affiliated with, endorsed by, or sponsored by Bandcamp.
What you can ask
- "What's in the Sacred Bones catalogue, and who is each release by?"
- "Find the album Cathedral by John Carpenter and read me the tracklist with track lengths."
- "Show me ten new releases under the tag
drum-bass, then open each one and tell me its label and release date." - "Is that compilation various-artists? Tell me who made each track."
- "How much is this album, and is it name-your-price?"
- "Find that Bandcamp link a friend sent me and tell me what else the artist has released."
Answers come from Bandcamp's own public pages, fetched live — one request per tool call the assistant makes. The server reads; it never buys, downloads or touches an account, and it has no field in which a stream or download link could reach you.
Install
npx is the whole install: your MCP client starts the server on demand and
picks up fixes the next time it launches.
Claude Code:
Claude Desktop (Settings → Developer → Edit Config), or any MCP client that starts a stdio server from a command:
Cursor: install in Cursor,
or add the same JSON block to ~/.cursor/mcp.json.
VS Code (Copilot agent mode): install in VS Code,
or run code --add-mcp '{"name":"bandcamp","command":"npx","args":["-y","bandcamp-mcp"]}'.
Claude Code plugin: this repository is also a plugin
(.claude-plugin/plugin.json), so /plugin can install it once it is listed.
Requirements, and what is actually tested
Node.js 20 or newer (22 LTS recommended); Node 18 is end-of-life and a dependency of the MCP SDK requires 20. Every push runs the test suite on Node 20, 22 and 24, then packs the package, installs it into an empty project and starts it through an MCP handshake on Linux, macOS and Windows, on each of those Node versions. Nothing else is claimed: other platforms may well work, but no one has measured them.
Bandcamp itself has no versioned API. What the server reads is whatever bandcamp.com serves today, which is why a smoke test runs against the live site daily (badge above) and why a tool can start failing without warning — see How this works.
To pin a version, use bandcamp-mcp@<version> (e.g. npx -y [email protected]).
An unpinned npx -y bandcamp-mcp picks up fixes the next time your client
starts it; a pinned or globally installed copy does not (see
Known limitations).
Windows
GUI MCP clients on Windows often can't start npx directly, because it is
a .cmd script. Wrap it in cmd /c:
With Claude Code:
CI checks this command: on windows-latest, the package job installs the
packed package into a project and runs cmd /c npx -y bandcamp-mcp there
through an MCP handshake (initialize, then tools/list). There, npx finds the
installed copy instead of downloading it, so the check covers how the
server starts on Windows, not the download.
Troubleshooting: "server disconnected" / spawn npx ENOENT
GUI-launched MCP clients often start servers with a minimal PATH that
leaves out nvm/volta shims, even when npx -y bandcamp-mcp works in your
terminal. Install the package globally and point the client at absolute
paths instead:
On Windows, every backslash in the JSON paths must be doubled, e.g.
C:\\Users\\you\\AppData\\Roaming\\npm\\node_modules\\bandcamp-mcp\\dist\\index.js.
A global install doesn't update itself: run
npm install -g bandcamp-mcp@latest to pick up a fix.
If your network blocks the npm registry
npx looks the package up on registry.npmjs.org whenever your client
starts the server. If the registry is blocked, or only sometimes reachable,
run npm install -g bandcamp-mcp once while you have access and use the
absolute-path config above, which starts without the registry.
How this works, and why it can break
Bandcamp has no public catalog API, so every tool call makes live requests to the same endpoints Bandcamp's own website uses:
bandcamp_search: the JSON endpoint behind Bandcamp's search box (/api/bcsearch_public_api/1/autocomplete_elastic);bandcamp_browse_tag: the JSON endpoint behind bandcamp.com/discover (/api/discover/1/discover_web);bandcamp_get_albumandbandcamp_get_track: the public release or track page, read mostly from its schema.org JSON-LD block, with tags from the page markup;bandcamp_get_artist: the artist's or label's/musicpage, read from its markup.
None of these is a published, versioned API. Bandcamp can change them at any time and without notice, and a tool then stops working until this project ships a fix. When that happens the tool says so ("Bandcamp's response format looks like it changed", or that it got a bot check instead of data) and links to the issues page. A daily smoke test (badge above) runs every tool's client code against live Bandcamp pages and reports failures to a tracking issue. The endpoint notes are in docs/bandcamp-endpoints.md.
- Metadata only. Releases are identified by slug, and the result
schemas (
src/client/types.ts) have no field for stream, download or purchase links, so the signed audio links in Bandcamp's pages can't pass through. (Free-text fields are the artists' own words, and may mention links.) - No caching or republishing. Every tool call is fetched live. Nothing is stored; results go to your MCP client and nowhere else.
- No telemetry. Neither this package nor Venut Technologies collects
anything; what the server reads, sends and stores is listed in
PRIVACY.md.
But every tool call is a request from your machine straight to Bandcamp,
which sees your IP address, what you asked for and when. The requests also
say where they come from, with the User-Agent
Mozilla/5.0 (compatible; bandcamp-mcp/<version>; +https://github.com/Venut-Technologies/bandcamp-mcp), so they don't look like a browser visit. - Gentle by design. At most 3 requests in flight, at least 150 ms
apart, a 7-second timeout, and one retry for a timeout, a transport-level
failure (a reset or closed socket, a DNS or TLS error), 5xx or 429
(honoring a
Retry-Afterof up to 5 s). Onlybandcamp.comand*.bandcamp.comhosts are ever fetched: redirects are followed by hand (at most 3) and each target is checked against that list.
Bandcamp's robots.txt closes /api/ to crawlers, which covers the search
endpoint, and explicitly allows the browse one. This server is not a crawler:
it fetches one page per tool call you make, follows no links and stores
nothing. That reading, the argument against it, and the commitment to change
or drop a tool if Bandcamp objects are all recorded in
CONTRIBUTING.md.
The repository (not the npm package) contains pages and API responses captured from Bandcamp as test fixtures, with the signed stream and download URLs redacted, the identities and free text replaced by invented ones, and each page cut down to the markup the parsers read.
Found a bug, or have an abuse concern? Please open an issue: https://github.com/Venut-Technologies/bandcamp-mcp/issues
Security problems go privately to [email protected] instead; see SECURITY.md.
Tools
Every slug is a Bandcamp identifier copied from an earlier result
(<subdomain>/album/<item>, <subdomain>/track/<item>, or a bare subdomain
for an artist or label), never a display name. The tools take no URLs: a
Bandcamp URL https://<subdomain>.bandcamp.com/album/<item> becomes the
slug <subdomain>/album/<item>, and the tool descriptions tell the model
so. A result whose slug is null can't be looked up (see custom domains
below).
Known limitations
- Single-maintainer, best-effort project, with no SLA. The daily smoke test is monitoring, not a support guarantee.
- Prompt injection. Names, titles, bios, descriptions and tags are written by Bandcamp users, and anyone can publish on Bandcamp. This server decodes entities, strips markup and control and invisible characters, and caps their length, and every tool description tells the model to treat them as data, never as instructions. That reduces the risk of a crafted bio steering your assistant; it does not eliminate it.
- Pinned and global installs don't self-heal. When Bandcamp changes
something and a fix ships, only unpinned
npxsetups get it automatically. A copy pinned to@x.y.zor installed withnpm install -gkeeps failing, and the error can't tell you a fix exists. If a tool reports that Bandcamp's format changed, check the issues and CHANGELOG, then update. - Custom domains. The server only fetches
bandcamp.comand*.bandcamp.comhosts, as protection against being steered to other servers (SSRF). A release, artist or label that Bandcamp lists under its own domain (e.g.ilistentojohn.com, seen in a search for "carpenter") comes back withslug: nulland can't be looked up from that result, and an artist whose subdomain redirects to its own domain is reported as not found, with that reason. - No tags for artists and labels. Their pages don't carry any, so
bandcamp_get_artistreturns none;bandcamp_get_albumhas a release's tags. - An album's
labelcan name the hosting account. When the page states no record label, the field falls back to the Bandcamp account that published the release. That is right for a label's own page, and the server suppresses it when the account is one of the credited artists — but on a self-published release with a multi-artist credit whose account name shares nothing with it (a band, a game studio, a collective), the account is reported as the label. - Long catalogs are cut at 100 releases in
bandcamp_get_artist. - Cancelling doesn't stop the request. A tool call your client cancels still finishes its Bandcamp request in the background (bounded by the timeout); v1 doesn't pass cancellation through.
- No "recommended" sort. Bandcamp personalizes that only for logged-in
fan accounts, and this project is intentionally credential-free, so
bandcamp_browse_tagofferstopandnew. - Out of scope: logging in, your collection or wishlist, purchases, sales data, and remote (HTTP/SSE) transport. The server runs locally over stdio only.
Principles
What this server guarantees and what it refuses to do — anonymous and read-only, slugs instead of URLs, no field that could carry a stream or download link, an honest error when Bandcamp changes — is written down, with the code and tests that enforce each one, in PRINCIPLES.md.
Contributing
See CONTRIBUTING.md.
License
MIT; see LICENSE.
来源:README.md,提交 63a1118
工具
0版本历史
1- v0.1.2最新Sep 25, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分