pkg x-ray

Pre-install package security

Look inside. Then install.

Inspect npm packages and MCP servers before install or connection.
Local static analysis. A SAFE, REVIEW, or BLOCK verdict with cited evidence.

Live static scan

Check it before you install.

Public npm packages and GitHub repositories.
Fresh source. No installation or package execution.

Try a popular package:

Choose an example, then select Scan source. Each uses its latest published version.

A name without a version resolves the current npm tag or GitHub commit. Downloads and analysis run in your browser. npm, GitHub, and OSV receive the requests; pkgxray does not store your scan.

Up to 8 MiB compressed, 100 source files, and 1 MiB of source text. Large or unsupported sources may need the local CLI. Private repositories and local files are not supported.

Ready. Source is inspected as data; package code is never run.

01 / The evidence

Inside a recorded scan.

Express 4.21.0, scanned with pkg x-ray 1.2.1.
Findings, source, and scope in one place.

express@4.21.0

Recorded

Recorded verdict

SAFE

No high- or medium-risk indicators were found in the provided evidence.

Scanner
pkg x-ray 1.2.1
Policy
safe-only
Decision
allow
Source files scanned
15
Skipped / truncated
0 / 0
Read recorded JSON
INFO

dynamic-require

A module loaded by a computed name.

// default engine export
var fn = require(mod).__express

The scanner records this pattern because the module name is computed. Its finding notes that it is common in legitimate plugin loaders and does not gate this scan on its own.

Source analysisCompleted
OSV vulnerability checkCompleted
Direct dependenciesNot requested —
Provenance attestationAbsent —
Recorded scan · 08 Nov 2026Receipt

SAFE is scoped to the checks that completed. Dependencies were not scanned; this is not proof of harmlessness. Some inputs were cached. This is a recorded result, not a live browser scan or recommendation to install this version.

Artifact & record details

Tarball SHA-256

b286ac08db99b23b0df74a453aff20839e8ab657650849c76ee04ddfb73e8fe0

The linked JSON is an excerpt of the captured report. Scanner fields are unchanged; full source contents, registry contact metadata, local paths, and timings are omitted. Its capture metadata includes the original report’s SHA-256.

02 / The boundary

Know what’s checked.

Read the threat model

Package inspection

Stage a package, inspect its source and supply-chain evidence, then review the cited findings. Normal static scans do not execute the inspected package’s code or install scripts.

Coverage varies

npm gets behavioral and supply-chain checks. PyPI has narrower coverage; general Python behavioral analysis is not implemented. Dependency checks depend on the command and flags you use.

Runtime has limits

Static analysis cannot see runtime-fetched payloads. Listing MCP tools can start a server; the proxy runs it, and opt-in canary scans execute code in a sandbox.

03 / Your terminal

Start with one package.

Node.js 18+ and network access.
No global install required.

Scan the example packagePublished CLI · v1.2.1
npx --yes pkgxray@1.2.1 guard npm:express@4.21.0

Downloads Express into quarantine and inspects it. It does not install Express or run its code. This pinned example reproduces the command, not a guaranteed verdict.

Read the documentation

04 / Your MCP client

Connect without installing.

Public MCP over Streamable HTTP.
No account or API key required.

Remote server URLNo authentication
https://mcp.pkgxray.ca/mcp

Add a remote server in your MCP client, paste this URL, and choose Streamable HTTP with no authentication. The URL is a protocol endpoint, not a web page.

Client setup guide

Two focused tools

Check supplied source snippets for suspicious behavior, or look up metadata and known vulnerabilities for an exact npm version. No package execution, VM, complete archive scan, or installation approval.

Know what you share

Submitted source is processed on Cloudflare. Do not send secrets. Source checks accept up to 16 files and 16 KiB total; rate limits apply. Package names and versions are sent to npm and OSV for metadata checks.