@pipeworx/jsdelivr
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/jsdelivr’s. Install: one-click buttons
Connect to just the @pipeworx/jsdelivr pack
https://gateway.pipeworx.io/jsdelivr/mcp — only @pipeworx/jsdelivr’s own tools, nothing else in the catalog.
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 6
JSDelivr Data API MCP — CDN package stats, file listing, version resolution for npm + GitHub. Keyless.
Tools
npm_package_stats(package_name, period?)— request counts + bandwidth for an npm packagegh_repo_stats(owner, repo, period?)— request counts for a GitHub repo via JSDelivrtop_npm_packages(period?, by?, limit?)— leaderboardlist_npm_files(package_name, version?)— files in a published versionresolve_version(package_name, range?)— resolve a semver range to a concrete versionlist_npm_versions(package_name)— all published versions
Data source
https://data.jsdelivr.com/v1/ — keyless, generous rate limits.
Scoped package names (@scope/name) — the encoding gotcha
A scoped name is one path segment to jsDelivr, so the / inside it has to be
escaped along with the @. Measured 2026-09-16 (fleet #2104) against every
endpoint family this pack uses:
| form sent | /packages/npm/<pkg> | <pkg>/resolved | <pkg>@<version> | /stats/packages/npm/<pkg> |
|---|---|---|---|---|
raw @angular/core | 200 | 200 | 200 | 200 |
fully escaped %40angular%2Fcore | 200 | 200 | 200 | 200 |
half escaped %40angular/core | 400 | 400 | 400 | 400 |
The families do not disagree — they all accept raw and all accept fully
escaped. The pack used to split the name on / and encode each half, emitting
the half-escaped form, which is the one shape none of them take. encodePkg now
runs encodeURIComponent over the whole name; that is also the form jsDelivr
puts in the links.self of its own responses, and it leaves unscoped names
(lodash, react) byte-identical.
Separately, the file-tree endpoint wants a concrete version — <pkg>@latest
404s — so list_npm_files resolves latest through /resolved first (#2070).
Tools
- npm_package_stats — Request counts + bandwidth for an npm package served via JSDelivr.
- gh_repo_stats — Return JSDelivr CDN request count and bandwidth for files served from a GitHub owner/repo for the specified period (day/week/month/quarter/year).
- top_npm_packages — JSDelivr leaderboard of top-served npm packages.
- list_npm_files — jsDelivr Data API — the file tree of one published npm package version (latest by default) as jsDelivr indexes it for CDN delivery. Returns the directory structure with each file’s path, byte size, co
- resolve_version — Resolve a semver range or tag to a concrete published version.
- list_npm_versions — All published versions for an npm package.
Tools
gh_repo_stats— Return JSDelivr CDN request count and bandwidth for files served from a GitHub owner/repo for the specified period (day/week/month/quarter/year).list_npm_files— jsDelivr Data API — the file tree of one published npm package version (latest by default) as jsDelivr indexes it for CDN delivery. Returns the directory structure with each file's path, byte size, colist_npm_versions— All published versions for an npm package.npm_package_stats— Request counts + bandwidth for an npm package served via JSDelivr.resolve_version— Resolve a semver range or tag to a concrete published version.top_npm_packages— JSDelivr leaderboard of top-served npm packages.