npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

jsdelivr-mcp

v1.0.1

Published

MCP server for jsDelivr — search npm/GitHub packages, browse files, check CDN usage stats, browser/platform market share, and more.

Readme

jsdelivr-mcp

MCP server for jsDelivr — search npm/GitHub packages, browse files, check CDN usage stats, browser/platform market share, and more.

Features

| Tool | Description | API Endpoint | |------|-------------|-------------| | jsdelivr_npm_package | Get npm package versions and tags | /packages/npm/{package} | | jsdelivr_npm_resolve | Resolve semver range/tag to exact version | /packages/npm/{package}/resolved | | jsdelivr_npm_files | List files in npm package version | /packages/npm/{package}@{version} | | jsdelivr_npm_entrypoints | Get recommended JS/CSS entry points | /packages/npm/{package}@{version}/entrypoints | | jsdelivr_gh_repo | Get GitHub repo versions | /packages/gh/{user}/{repo} | | jsdelivr_gh_resolve | Resolve GitHub repo semver range/tag | /packages/gh/{user}/{repo}/resolved | | jsdelivr_gh_files | List files in GitHub repo version | /packages/gh/{user}/{repo}@{version} | | jsdelivr_top_packages | Most popular packages by hits or bandwidth | /stats/packages | | jsdelivr_npm_stats | npm package daily usage stats | /stats/packages/npm/{package} | | jsdelivr_npm_top_versions | Top versions of an npm package | /stats/packages/npm/{package}/versions | | jsdelivr_npm_version_stats | Stats for specific npm package version | /stats/packages/npm/{package}@{version} | | jsdelivr_npm_version_files_stats | File-level stats for npm package version | /stats/packages/npm/{package}@{version}/files | | jsdelivr_npm_badge | Badge URL for npm package | /stats/packages/npm/{package}/badge | | jsdelivr_gh_stats | GitHub repo daily usage stats | /stats/packages/gh/{user}/{repo} | | jsdelivr_gh_top_versions | Top versions of a GitHub repo | /stats/packages/gh/{user}/{repo}/versions | | jsdelivr_gh_version_stats | Stats for specific GitHub repo version | /stats/packages/gh/{user}/{repo}@{version} | | jsdelivr_gh_version_files_stats | File-level stats for GitHub repo version | /stats/packages/gh/{user}/{repo}@{version}/files | | jsdelivr_gh_badge | Badge URL for a GitHub repo | /stats/packages/gh/{user}/{repo}/badge | | jsdelivr_network_stats | Network-wide hits/bandwidth by CDN provider | /stats/network | | jsdelivr_network_content | Stats by content type (packages/proxies/other) | /stats/network/content | | jsdelivr_network_countries | Stats by country with provider breakdown | /stats/network/countries | | jsdelivr_top_browsers | Browsers by market share (grouped versions) | /stats/browsers | | jsdelivr_browser_versions | Browsers by market share (separate versions) | /stats/browsers/versions | | jsdelivr_browser_countries | Countries by browser market share | /stats/browsers/{name}/countries | | jsdelivr_browser_platforms | Platforms by browser usage share | /stats/browsers/{name}/platforms | | jsdelivr_browser_version_list | Versions of a specific browser by share | /stats/browsers/{name}/versions | | jsdelivr_browser_version_countries | Countries for a specific browser version | /stats/browsers/{name}/versions/{version}/countries | | jsdelivr_top_platforms | Platforms by market share (grouped versions) | /stats/platforms | | jsdelivr_platform_versions | Platforms by market share (separate versions) | /stats/platforms/versions | | jsdelivr_platform_browsers | Browsers by platform usage share | /stats/platforms/{name}/browsers | | jsdelivr_platform_countries | Countries by platform market share | /stats/platforms/{name}/countries | | jsdelivr_platform_version_list | Versions of a specific platform by share | /stats/platforms/{name}/versions | | jsdelivr_platform_version_countries | Countries for a specific platform version | /stats/platforms/{name}/versions/{version}/countries | | jsdelivr_proxy_stats | Proxy endpoint usage stats | /stats/proxies/{name} | | jsdelivr_proxy_files | Top files for a proxy endpoint | /stats/proxies/{name}/files | | jsdelivr_stats_periods | List available time periods for stats data | /stats/periods | | jsdelivr_lookup_hash | Reverse lookup: find package/file by sha256 hash | /lookup/hash/{hash} |

Setup

No installation needed — just configure your MCP client:

Add to .vscode/mcp.json:

{
  "servers": {
    "jsdelivr": {
      "command": "npx",
      "args": ["-y", "jsdelivr-mcp"]
    }
  }
}

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "jsdelivr": {
      "command": "npx",
      "args": ["-y", "jsdelivr-mcp"]
    }
  }
}

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "jsdelivr": {
      "command": "npx",
      "args": ["-y", "jsdelivr-mcp"]
    }
  }
}

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "jsdelivr": {
      "command": "npx",
      "args": ["-y", "jsdelivr-mcp"]
    }
  }
}
claude mcp add --transport stdio jsdelivr -- npx -y jsdelivr-mcp

Or add to .mcp.json (shared with team):

{
  "mcpServers": {
    "jsdelivr": {
      "command": "npx",
      "args": ["-y", "jsdelivr-mcp"]
    }
  }
}

Add to settings.json:

{
  "context_servers": {
    "jsdelivr": {
      "command": "npx",
      "args": ["-y", "jsdelivr-mcp"]
    }
  }
}

Open Settings → Tools → AI Assistant → MCP, click +, and paste:

{
  "mcpServers": {
    "jsdelivr": {
      "command": "npx",
      "args": ["-y", "jsdelivr-mcp"]
    }
  }
}
gemini mcp add jsdelivr -- npx -y jsdelivr-mcp

Or add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "jsdelivr": {
      "command": "npx",
      "args": ["-y", "jsdelivr-mcp"]
    }
  }
}

Any MCP client that supports stdio transport can use this server. The command is:

npx -y jsdelivr-mcp

See the full list of MCP clients.

Local development

git clone https://github.com/anvme/jsdelivr-mcp.git
cd jsdelivr-mcp
npm install
node index.js

Tool Reference

jsdelivr_npm_package

Get npm package versions and tags from jsDelivr CDN.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | package | string | yes | npm package name, e.g. jquery or @popperjs/core |

Example: { "package": "jquery" }

jsdelivr_npm_resolve

Resolve an npm semver range or tag to an exact version via jsDelivr.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | package | string | yes | — | npm package name | | specifier | string | no | latest | Semver range or tag, e.g. 2.2, ^3.0.0, latest |

Example: { "package": "jquery", "specifier": "2.2" }

jsdelivr_npm_files

List files in a specific npm package version (max 100MB packages).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | package | string | yes | — | npm package name | | version | string | yes | — | Exact version, e.g. 3.7.1 | | structure | string | no | tree | tree (nested) or flat (list) |

Example: { "package": "jquery", "version": "3.7.1", "structure": "flat" }

jsdelivr_npm_entrypoints

Get recommended JS/CSS entry points for an npm package version.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | package | string | yes | npm package name | | version | string | yes | Exact version, e.g. 3.7.1 |

Example: { "package": "@popperjs/core", "version": "2.11.8" }

jsdelivr_gh_repo

Get GitHub repo versions available on jsDelivr CDN.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | user | string | yes | GitHub username or org, e.g. twbs | | repo | string | yes | GitHub repo name, e.g. bootstrap |

Example: { "user": "twbs", "repo": "bootstrap" }

jsdelivr_gh_resolve

Resolve a GitHub repo semver range or tag to an exact version.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | user | string | yes | — | GitHub username or org | | repo | string | yes | — | GitHub repo name | | specifier | string | no | latest | Semver range or tag to resolve |

Example: { "user": "twbs", "repo": "bootstrap", "specifier": "5.3" }

jsdelivr_gh_files

List files in a specific GitHub repo version (max 50MB repos).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | user | string | yes | — | GitHub username or org | | repo | string | yes | — | GitHub repo name | | version | string | yes | — | Exact version, e.g. 5.3.3 | | structure | string | no | tree | tree or flat |

Example: { "user": "twbs", "repo": "bootstrap", "version": "5.3.3" }

jsdelivr_top_packages

List the most popular packages on jsDelivr by hits or bandwidth.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | by | string | no | hits | Sort by hits or bandwidth | | type | string | no | — | Filter by gh or npm | | period | string | no | month | Time period (see below) | | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number (1–100) |

Example: { "by": "bandwidth", "type": "npm", "limit": 10 }

jsdelivr_npm_stats

Get daily usage stats (hits + bandwidth) for an npm package.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | package | string | yes | — | npm package name | | period | string | no | month | Time period |

Example: { "package": "react", "period": "week" }

jsdelivr_npm_top_versions

List most popular versions of an npm package.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | package | string | yes | — | npm package name | | by | string | no | hits | Sort by hits or bandwidth | | period | string | no | month | Time period | | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number |

Example: { "package": "react", "by": "hits", "limit": 5 }

jsdelivr_npm_version_stats

Stats for a specific npm package version.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | package | string | yes | — | npm package name | | version | string | yes | — | Exact version | | period | string | no | month | Time period |

Example: { "package": "react", "version": "18.2.0" }

jsdelivr_npm_version_files_stats

File-level stats for an npm package version.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | package | string | yes | — | npm package name | | version | string | yes | — | Exact version | | by | string | no | hits | Sort by hits or bandwidth | | period | string | no | month | Time period | | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number |

Example: { "package": "jquery", "version": "3.7.1", "by": "hits", "limit": 10 }

jsdelivr_npm_badge

Get badge URL for an npm package.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | package | string | yes | — | npm package name | | type | string | no | hits | Badge type: hits, rank, or type-rank | | period | string | no | month | Time period | | style | string | no | — | Badge style: square or rounded |

Example: { "package": "react", "type": "hits", "style": "rounded" }

jsdelivr_gh_stats

GitHub repo daily usage stats (hits + bandwidth).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | user | string | yes | — | GitHub username or org | | repo | string | yes | — | GitHub repo name | | period | string | no | month | Time period |

Example: { "user": "twbs", "repo": "bootstrap", "period": "week" }

jsdelivr_gh_top_versions

Most popular versions of a GitHub repo.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | user | string | yes | — | GitHub username or org | | repo | string | yes | — | GitHub repo name | | by | string | no | hits | Sort by hits or bandwidth | | period | string | no | month | Time period | | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number |

Example: { "user": "twbs", "repo": "bootstrap", "by": "hits", "limit": 5 }

jsdelivr_gh_version_stats

Stats for a specific GitHub repo version.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | user | string | yes | — | GitHub username or org | | repo | string | yes | — | GitHub repo name | | version | string | yes | — | Exact version | | period | string | no | month | Time period |

Example: { "user": "twbs", "repo": "bootstrap", "version": "5.3.3" }

jsdelivr_gh_version_files_stats

File-level stats for a GitHub repo version.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | user | string | yes | — | GitHub username or org | | repo | string | yes | — | GitHub repo name | | version | string | yes | — | Exact version | | by | string | no | hits | Sort by hits or bandwidth | | period | string | no | month | Time period | | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number |

Example: { "user": "twbs", "repo": "bootstrap", "version": "5.3.3", "limit": 10 }

jsdelivr_gh_badge

Get badge URL for a GitHub repo.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | user | string | yes | — | GitHub username or org | | repo | string | yes | — | GitHub repo name | | type | string | no | hits | Badge type: hits, rank, or type-rank | | period | string | no | month | Time period | | style | string | no | — | Badge style: square or rounded |

Example: { "user": "twbs", "repo": "bootstrap", "type": "hits" }

jsdelivr_network_stats

Network-wide hits/bandwidth by CDN provider (Bunny, Cloudflare, Fastly, Gcore, StackPath, Quantil).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | continent | string | no | — | Continent filter (ISO code): AF, AN, AS, EU, NA, OC, SA | | country | string | no | — | ISO 3166-1 alpha-2 country code, e.g. US, DE | | period | string | no | month | Time period |

Example: { "continent": "EU", "period": "week" }

jsdelivr_network_content

Network-wide stats by content type (packages/proxies/other).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | period | string | no | month | Time period |

Example: { "period": "quarter" }

jsdelivr_network_countries

Network-wide stats by country with provider breakdown.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | period | string | no | month | Time period |

Example: { "period": "month" }

jsdelivr_top_browsers

Browsers by market share (grouped versions).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | continent | string | no | — | Continent filter (ISO code) | | country | string | no | — | Country code (ISO 3166-1 alpha-2) | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number |

Example: { "country": "US", "limit": 10 }

jsdelivr_browser_versions

Browsers by market share (separate version entries).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number |

Example: { "limit": 20 }

jsdelivr_browser_countries

Countries by browser market share.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Browser name, e.g. Chrome | | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "name": "Chrome" }

jsdelivr_browser_platforms

Platforms by browser usage share.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Browser name | | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "name": "Firefox" }

jsdelivr_browser_version_list

Versions of a specific browser by share.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Browser name | | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "name": "Safari", "limit": 10 }

jsdelivr_browser_version_countries

Countries for a specific browser version.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Browser name | | version | string | yes | — | Browser version | | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "name": "Chrome", "version": "120" }

jsdelivr_top_platforms

Platforms by market share (grouped versions).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "country": "DE", "limit": 10 }

jsdelivr_platform_versions

Platforms by market share (separate version entries).

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "limit": 20 }

jsdelivr_platform_browsers

Browsers by platform usage share.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Platform name, e.g. Windows | | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "name": "Windows" }

jsdelivr_platform_countries

Countries by platform market share.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Platform name | | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "name": "macOS" }

jsdelivr_platform_version_list

Versions of a specific platform by share.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Platform name | | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "name": "Android", "limit": 10 }

jsdelivr_platform_version_countries

Countries for a specific platform version.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Platform name | | version | string | yes | — | Platform version | | continent | string | no | — | Continent filter | | country | string | no | — | Country code | | period | string | no | s-month | Static period only | | limit | number | no | 100 | Max results | | page | number | no | 1 | Page number |

Example: { "name": "Windows", "version": "10" }

jsdelivr_proxy_stats

Proxy endpoint usage stats.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Proxy name, e.g. cocoa | | period | string | no | month | Time period |

Example: { "name": "cocoa" }

jsdelivr_proxy_files

Top files for a proxy endpoint.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | name | string | yes | — | Proxy name | | by | string | no | hits | Sort by hits or bandwidth | | period | string | no | month | Time period | | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number |

Example: { "name": "cocoa", "by": "hits", "limit": 10 }

jsdelivr_stats_periods

List available time periods for stats data.

| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | limit | number | no | 100 | Max results (1–100) | | page | number | no | 1 | Page number |

Example: { "limit": 10 }

jsdelivr_lookup_hash

Reverse lookup: find a package/file by its sha256 hash.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | hash | string | yes | Hex-encoded sha256 hash of the file |

Example: { "hash": "87083882cc6015984eb0411a99d3981817f5dc5c90ba24f0940420c5548d82de" }

Time periods

Many stats tools accept a period parameter. Available formats:

| Format | Examples | Description | |--------|----------|-------------| | Floating | day, week, month, quarter, year | Rolling window | | Static | s-month, s-quarter, s-year | Calendar-aligned | | Date | 2024-01, 2024-Q1, 2024 | Specific month/quarter/year |

Note: Browser and platform stats only support static periods and date formats.

API Reference

This server implements 100% of the jsDelivr Data API v1 — all 37 unique endpoints are covered. The full OpenAPI spec is available at data.jsdelivr.com/v1/spec.yaml.

Prerequisites

  • Node.js >= 18

License

MIT