UNPKG

io.github.unpkgPublished by GitHub account unpkgv1.0.0Updated Nov 7, 2026

Live npm and UNPKG data for AI agents: resolution, audits, import maps, malware/CVE checks.

Overview

AI-generated overview

Remote MCP server giving assistants live npm and UNPKG data to resolve package versions, build and verify file URLs, audit dependencies, and check packages…

What you can do
  • Resolve packages and inspect files: resolve versions from tags or ranges, search npm with browser-readiness notes, list real files in a version, build canonical file URLs, and verify URLs resolve.
  • Audit and convert projects: classify a package.json dependency map, generate import maps from bare specifiers, and validate existing import maps for resolution, file existence and version consistency.
  • Estimate migration impact: give a bandwidth-offload range, and a dollar range when a rate per GB is supplied.
  • Check package safety: malware verdicts and CVEs for named package versions, plus audit enrichment; Shield login adds account, domain, watchlist and pin/block simulation tools.
When to use it
Use it when moving a site's front-end dependencies to direct UNPKG file lookups, or when an assistant needs accurate npm versions, real file paths and browser entry points instead of recalled ones. Also useful for vetting exact package versions for malware or CVEs before loading them.
Requirements
A remote endpoint at mcp.unpkg.com; no package install, API key or header is declared. General tools and anonymous package-safety checks need no account. Shield account tools require an approved Shield account and OAuth sign-in from the MCP client.
Before you install
Shield tools need an OAuth login and expose organization data such as verified domains, watchlist and pin policies. Audit and import-map tools read project dependency and HTML data you pass in, which is sent to the remote service. Migration estimates are ranges with assumptions, not guarantees, and the server advises against converting packages a bundler or framework already manages.

Installation

In SourceWeft

  1. Open UNPKG in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.unpkg%2Funpkg-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "unpkg": {
      "type": "http",
      "url": "https://mcp.unpkg.com/mcp"
    }
  }
}

README

unpkg-mcp

[UNPKG MCP connector – tool definition quality and endpoint health on Glama]

A remote MCP server for UNPKG. It gives AI agents live npm and UNPKG data for direct UNPKG file lookups: https://unpkg.com/<package>@<version>/<file>.

Agents often recall npm details incorrectly — versions that don't exist, file paths that were never published, Node entry points offered as browser modules. This server resolves versions, lists real package files, audits projects for UNPKG conversion, validates import maps, and checks packages for malware and CVEs, all from live data.

Deployed at https://mcp.unpkg.com (landing page at /, MCP endpoint at /mcp).

Tools

ToolPurpose
resolve_packageResolve an exact version, tag, or range to a real version and its browser entry points
search_packagesSearch npm, with results annotated for browser readiness
list_filesList the real files in a package version, via the ?meta API
build_file_urlBuild a canonical file URL with a version policy (preserve, exact, patch, or range)
audit_dependenciesClassify a package.json dependency map (convert_now / convert_carefully / keep_bundled / needs_review / not_found), with suggested URLs, an import map, and framework detection; packages already loading from UNPKG are reported separately from conversion candidates
verify_urlCheck that a UNPKG URL resolves
generate_importmapGenerate an import map from bare specifiers
check_importmapValidate an import map as a whole: resolution, file existence, version consistency, and framework-managed packages
estimate_migration_impactEstimate bandwidth offload for a migration as a range with stated assumptions
shield_check_packagesMalware verdicts and CVEs for exact package versions. Anonymous (25 per call; Shield login raises the limit to 200)
shield_whoami(Shield login) Account, organization, and entitlements for the connected user
shield_domain_packages(Shield login) Packages observed on your verified domains, optionally annotated with malware verdicts and CVEs ranked by traffic
shield_simulate_request(Shield login) Preview Shield's pin/block decision for a package version
shield_watchlist_status(Shield login) Your monitored packages, blocklist, and pin policies

Package safety checks

Every package the server resolves can also be checked against Shield's security data, in two ways:

  • Named packages. shield_check_packages takes exact package@version pairs and returns, for each one, a malware verdict with its review state (confirmed or provisional), the CVEs that affect that version, and the first patched version to upgrade to. Verdicts and CVE matches are computed for the exact version asked about — a clean result never comes from checking a different version.
  • Inside audits. audit_dependencies attaches the same verdict and CVE data to every version it resolves, so a flagged package is visible in the audit result next to its conversion recommendation.

No account is needed for either: named-package checks are anonymous (25 per call), and audit enrichment works the same signed out. A provisional verdict is reported as provisional; it is not presented as confirmed malicious.

With a Shield login, the checks extend to your own estate: shield_domain_packages (with threats enabled) returns the packages observed on your verified domains annotated with verdicts and CVEs, ranked by each domain's traffic, so the packages that matter most surface first.

Example prompts:

  • "Is [email protected] safe to load? Check it for malware and CVEs, and tell me what to upgrade to."
  • "Check the packages in this audit for known compromises or CVEs before we convert anything."
  • (Shield login) "Which packages on my domains have CVEs or malware verdicts, worst first?"

Shield login

The general tools are anonymous. With a Shield account approved from the beta waitlist, your MCP client can also sign in via OAuth and the shield_* account tools unlock, scoped to your own organization.

Package-safety checks are not login-gated: shield_check_packages works anonymously for packages you name, and audit_dependencies includes verdicts and CVEs either way. Signing in adds your own domains, watchlist, and edge simulation.

Prompts, resources, and skill

  • Prompts: audit_project_for_unpkg, convert_this_page, find_browser_package.
  • Resources: the conversion playbook and version-specifier policy (unpkg://guidance/…), also served at GET /playbook.md.
  • Skill: skill/unpkg/SKILL.md provides the same guidance to agents without MCP.

Connect a client

Clients connect by URL. Per-client configuration is in examples/clients.md and in the picker on the landing page at https://mcp.unpkg.com/.

Claude Code:

sh
claude mcp add --transport http unpkg https://mcp.unpkg.com/mcp

For agents without MCP, copy skill/unpkg/ into the client's skills directory. At the project level, you can also paste examples/AGENTS.snippet.md into your project's AGENTS.md.

Try it out

With an agent connected, some useful prompts:

  • "Resolve react@^18 with the UNPKG MCP — what's the resolved version and browser entry point? Now try a version of react that doesn't exist."
  • "List the files in [email protected]/dist, build a patch-policy URL for the module file, and verify it resolves."
  • "Audit this project for UNPKG conversion."
  • "Check this import map with the UNPKG MCP: …" (paste a map)
  • "Is [email protected] safe to load? Check it for malware and CVEs, and tell me what to upgrade to."
  • "Based on the audit, estimate the migration impact for a site with 1M page views a month at $0.09/GB."

The server reports what it can verify and declines what it can't: import maps are validated as a system, audits keep framework-managed packages bundled, and estimates come back as ranges with assumptions rather than a single figure.

MCP Registry

server.json in this repo is the listing manifest for the official MCP Registry, under the namespace io.github.unpkg/unpkg-mcp.

Publishing (maintainers): install the mcp-publisher CLI from the MCP Registry project, then from this repo:

sh
mcp-publisher login githubmcp-publisher publish

Note: the organization namespace requires an owner-level GitHub credential — the interactive device flow only grants your personal namespace. Use a classic PAT with read:org scope (see the MCP Registry authentication docs), and revoke it afterwards.

Releasing

The server is a remote endpoint, so most channels update themselves: connected clients see new tools as soon as the Worker deploys, Glama re-crawls this repo and the endpoint, skills.sh serves the skill from GitHub, and directory listings (awesome lists, mcp.so) are static entries that only change if the URL or description changes.

For a version release:

  1. Bump the version everywhere it appears, keeping all of them equal: package.json, src/version.ts, server.json, plugin/.claude-plugin/plugin.json, plugin/plugin.json, plugin/.codex-plugin/plugin.json, and the plugin entry in .claude-plugin/marketplace.json. (Tests fail if any of these drift.)
  2. Deploy the Worker (wrangler deploy).
  3. Tag the release on GitHub (vX.Y.Z with release notes).
  4. Republish the registry manifest: mcp-publisher publish. Downstream directories (PulseMCP, Smithery, and others) ingest from the official MCP Registry, so this is the step that updates them.
  5. If the plugin changed, publish the new plugin version in the Claude developer portal; marketplace users get it via claude plugin marketplace update.

Claude plugin

This repo is also a Claude Code plugin (and its own plugin marketplace). The plugin lives in plugin/ and bundles the MCP server above with the unpkg skill, so one install gives Claude Code both:

sh
claude plugin marketplace add unpkg/unpkg-mcpclaude plugin install unpkg@unpkg

Connecting the plugin is the same anonymous-by-default server at https://mcp.unpkg.com/mcp; Shield tools still sign in only when used.

Run it locally

sh
pnpm installpnpm dev          # HTTP Worker on http://localhost:8787

For local client setup, use the same configurations as above with http://localhost:8787/mcp in place of the production URL.

Develop

sh
pnpm test         # unit, golden-project, and MCP protocol testspnpm typecheck    # tsc --noEmitpnpm build        # wrangler deploy --dry-run (production bundle check)

Layout: src/clients/ (npm, UNPKG, and Shield API clients), src/domain/ (audit, import-map checking, estimation, guidance), src/server.ts (MCP wiring). Golden projects in test/fixtures/projects/ pin audit classification behavior.

Environment (wrangler.jsonc vars): UNPKG_ORIGIN, NPM_REGISTRY, SHIELD_API_ORIGIN, OAUTH_ISSUER, OAUTH_RESOURCE, OAUTH_ENABLED.

Estimating impact

audit_dependencies reports entry-file byte totals. estimate_migration_impact turns those, plus a traffic figure, into a bandwidth-offload range (and a dollar range when a $/GB rate is supplied). It does not forecast latency: where a site already serves from a capable CDN, latency is usually unchanged, and the practical gains are bundle size, cacheability, and how quickly patched versions reach users.

Source: README.md at commit ec56586

Tools

14

resolve_package

Resolve an npm package version

Resolve a package name plus exact version, dist-tag, or semver range to the version that exists on npm today, with its browser entry points. Use this instead of recalling versions from memory.

Parameterspackagerequiredversion

list_files

List files in a package version

List the real files inside an exact or resolvable package version via UNPKG ?meta. Use this before choosing a file path; never guess paths.

Parameterspathlimitpackagerequiredversion

build_file_url

Build a canonical UNPKG file URL

Build a direct UNPKG file URL (the original file lookup) with a deliberate version policy, verifying the file exists when a path is given.

Parametersfilepolicypackagerequiredsubpathversion

audit_dependencies

Audit dependencies for UNPKG conversion

Classify a project's runtime dependencies for conversion to direct UNPKG file lookups, in framework context when given. Read the project's package.json yourself and pass its dependencies map; this tool checks each package against live npm/UNPKG data and returns convert_now / convert_carefully / keep_bundled / needs_review with suggested URLs and an import map for the safe conversions. IMPORTANT: suitability is not usage. Before calling, scan the project's HTML/files for an existing import map and CDN URLs and pass them as existingImports; entries already on UNPKG come back as already_on_unpkg, not conversion candidates. If you did not scan, say so — currentUsage will be absent rather than falsely 'not detected'. Only pass runtime dependencies, never devDependencies.

ParametersframeworkdependenciesrequiredexistingImports

verify_url

Verify a UNPKG URL resolves

Check that a UNPKG file URL actually resolves (follows redirects) before you put it in a project.

Parametersurlrequired

generate_importmap

Generate an import map for UNPKG packages

Resolve a set of bare specifiers to UNPKG file URLs and return a ready-to-paste import map. Entry files are resolved live from each package.

Parametersentriesrequired

check_importmap

Validate an import map as a system

Validate an existing or proposed import map: every UNPKG URL resolves, files exist, versions are mutually consistent (including react/react-dom pairing and duplicate-version skew), loose specs are flagged, and framework-managed packages are errors when a framework is given or detected. Run this after generate_importmap or an audit, before committing to a conversion.

Parametersimportsrequiredframework

search_packages

Search npm for browser-suitable packages

Search npm for a need (e.g. 'date picker', 'markdown parser') and annotate each result with browser readiness for direct UNPKG file lookup: browser-ready ESM, CommonJS-only, or unclear, with the entry file and size when known. Ranking is npm's relevance order; readiness is annotated, never hidden, so a CJS-only result is visible as such rather than silently dropped.

Parameterslimitqueryrequired

estimate_migration_impact

Rough bandwidth/cost impact of a conversion

Order-of-magnitude estimate of bandwidth offloaded (and hosting dollars, if a $/GB is given) when bytes move from first-party hosting to UNPKG. Range-based with explicit assumptions and caveats; it cannot forecast latency or Core Web Vitals. Get unpkgBytesPerPageLoad from audit_dependencies' impact.convertNowEntryBytes plus any transitive files the caller chooses to include.

ParametersbrowserCacheRatemonthlyPageViewsrequiredbandwidthCostPerGbUsdunpkgBytesPerPageLoadrequired

shield_whoami

Shield account for the logged-in user

Return the Shield account, organization, and entitlements for the OAuth login on this connection. Requires an approved Shield account; anonymous connections get an authorization_required error with reconnect instructions.

Takes no parameters.

shield_simulate_request

Simulate a Shield edge decision

Preview what Shield would do for one package@version request (optionally with referer/origin) under the logged-in user's effective pin/block rules, using the same rule-matching semantics as the edge.

Parameterspathoriginpackagerequiredrefererversionrequired

shield_check_packages

Malware verdicts and CVEs for package versions

Check exact package@version pairs against Shield intel: malware verdict (with review state) and CVEs affecting that version, including the first patched version. Works anonymously for packages you name (25 per call); Shield login raises the cap to 200. Domain data still requires login. Missing pairs were not scanned yet — absence is not a clean verdict.

Parameterspackagesrequired

shield_domain_packages

Shield-observed packages on your domains

List the caller's verified domains with package counts, or the packages Shield has observed on one domain. With includeThreats, one domain's packages come back annotated with malware verdicts and CVEs, ranked by the domain's own traffic. Requires Shield login.

ParametersdaysdomainincludeThreats

shield_watchlist_status

Your Shield watchlist, pins, and blocks

Return the logged-in org's monitored packages, blocklist entries, and pin policies as Shield currently holds them. Requires Shield login.

Takes no parameters.

Version history

1
  1. v1.0.0LatestNov 7, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts