import-guardian
Audits Composer lockfiles (composer.json/composer.lock) for PHP packages, checking against Packagist for dependency confusion and abandonment.
Audits Gradle lockfiles (gradle.lockfile) for Java packages, checking against Maven Central for dependency confusion.
Scans npm package imports in generated code to detect hallucinated or malicious packages, and audits npm lockfiles for dependency confusion, typosquats, maintainer takeover, and malicious install scripts.
Audits PHP packages from Packagist (Composer ecosystem) for dependency confusion, typosquats, and abandonment risks.
Audits pnpm lockfiles (pnpm-lock.yaml) for npm packages, checking for dependency confusion, typosquats, and malicious install scripts.
Audits Poetry lockfiles (poetry.lock) for Python packages, detecting dependency confusion and other risks.
Audits PyPI packages for dependency confusion, typosquats, maintainer takeover, and analyzes setup.py in source distributions for malware.
Audits Rust packages from crates.io (via Cargo.lock) for typosquats (including dash/underscore equivalence) and other supply-chain risks.
Audits yarn lockfiles (yarn.lock) for npm packages, checking for dependency confusion, typosquats, and malicious install scripts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@import-guardianscan code: import shift from 'react-codeshift'; import React from 'react'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
import-guardian 🪝
Catch AI-hallucinated (slopsquatted) npm imports in generated code — before you run npm install.
An LLM just wrote some code. It might import a package that doesn't exist — a name the model confidently hallucinated. Attackers register exactly those names and ship malware. This is slopsquatting, and in 2026 it's one of the fastest-growing supply-chain attacks: code generators have been observed referencing 205,000+ unique non-existent package names, and real hallucinated packages (react-codeshift, a fake huggingface-cli with 30k+ downloads) have already shown up in the wild.
import-guardian reads the generated code, extracts every npm package it imports, and tells you which ones are real — so an agent never installs a name its own model invented.
It's part of the guardian set: npm-guardian audits a package you've already chosen for CVEs and malicious behaviour, license-guardian audits the licenses of your dependencies (GPL/AGPL/BUSL traps) before you ship, and lockfile-guardian audits the resolved package-lock.json for integrity tampering and risky install scripts. import-guardian works one step earlier than all of them, at the moment the code — and its dependency names — are generated.
What it catches
👻 Hallucinated | imports of packages that do not exist on npm — the model invented the name. Returns |
🪤 Fresh squats | packages that do exist but were published days ago, have no source repo, near-zero downloads, or are a 1–2 edit typo of a popular library. Returns |
🧩 Import-aware | resolves |
Verdicts: 🟢 CLEAN · 🟠 REVIEW · 🔴 BLOCK.
Related MCP server: npmguard
Use it as an MCP server (free)
{
"mcpServers": {
"import-guardian": { "command": "npx", "args": ["-y", "import-guardian-mcp"] }
}
}Tools:
scan_code_imports— give it a block of generated JS/TS; it extracts and checks every npm import. Run this on code you just generated, before its install command.check_packages— verify an explicit list of package names.verify_package— deep-check a single package name (existence, age, versions, repo, weekly downloads, edit distance to popular packages).audit_lockfile🔒 (premium) — the deep one. Give it a lockfile from npm (package-lock.json), yarn (yarn.lock), pnpm (pnpm-lock.yaml), PyPI (requirements.txt/poetry.lock/Pipfile.lock) or Go (go.mod/go.sum) and it resolves the whole transitive tree and audits every package for dependency confusion, transitive typosquats / homoglyph clones, maintainer-takeover fingerprints, nonexistent pins, and install-script risk. See below.
Deep lockfile audit (premium) 🔒
scan_code_imports looks at the handful of imports you can see. audit_lockfile looks at the hundreds you can't — the fully resolved dependency graph in your lockfile — and finds the supply-chain attacks an LLM cannot reason about from source alone:
🎯 Dependency confusion | a package the lockfile resolves from a private / internal registry whose name is unclaimed on the public index — an attacker can publish that exact name publicly and shadow it. The single highest-impact supply-chain bug, and impossible to detect without the resolved lockfile + a live public-registry cross-check. On PyPI it's sharper still: |
🪞 Transitive typosquats | homoglyph/Unicode-confusable clones ( |
🕳️ Maintainer takeover | the fingerprint of a compromised maintainer: a dormant package suddenly republished, a sole-maintainer project, or a rapid republish burst — the pattern behind event-stream, ua-parser-js, node-ipc and PyPI's ctx hijack. |
💉 Install-script version-diffing | the sharpest injection signal: a package whose newest release ADDED a |
🔬 Install-script PAYLOAD analysis | goes past whether a hook exists to what it does: downloads the package tarball, gunzip+untars it in-memory (no deps), resolves the lifecycle command to its entry file, and statically analyzes the actual code for malware behavior — network egress, credential/env exfil, child-process exec, download-and-run, obfuscation. An obfuscation-resistant AST/token analyzer decodes |
🐍 PyPI sdist | the PyPI analogue of the npm tarball pass, and the sharpest PyPI surface: a source distribution runs |
🦠 Known-malware / known-vuln (live OSV cross-reference) | every resolved package is cross-referenced — at its exact pinned version — against the live OSV.dev advisory database (which ingests the OpenSSF Malicious Packages feed as |
🏗️ Local build-backend follow-hop (PyPI) | when |
🔀 Go | a |
💣 Install-script & provenance risk | packages in the resolved tree that run install scripts, brand-new pins, missing repos, and near-zero real downloads (verified against npm / pypistats / crates.io). |
Seven ecosystems. The same resolved-graph engine runs over npm / yarn / pnpm, PyPI (requirements.txt, poetry.lock, Pipfile.lock), Go modules (go.mod, go.sum), Rust / Cargo (Cargo.lock, Cargo.toml), Java (Maven pom.xml, Gradle build.gradle / .kts / gradle.lockfile) and PHP / Composer (composer.json, composer.lock) — each cross-checked against its own public index (npm registry, PyPI, the Go module proxy, crates.io, Maven Central, Packagist). On crates.io the matcher knows the -/_ equivalence (rustdecimal vs rust_decimal); on Maven an internal groupId:artifactId unclaimed on Central is the dependency-confusion target; on Composer an internal vendor/package unregistered on Packagist while a private repo is merged with the public index is the confusion target, and a Packagist-abandoned package is flagged as a takeover risk. Large lockfiles are bounded: direct + private-source packages are always live-checked first, then transitive up to a cap, so one call never fans out to tens of thousands of requests.
POST /pro/audit { "lockfile": "<contents of package-lock.json>", "filename": "package-lock.json" }Pay per call via x402 (USDC on Base) or a prepaid Stripe key. The free POST /audit returns the verdict and issue counts by severity, but withholds which packages are affected and why — that's the paid report. This deep engine runs server-side only and is never shipped in the npm package.
Example
scan_code_imports({ code: 'import shift from "react-codeshift";\nimport React from "react";' })
🟠 REVIEW — 1 referenced package(s) look risky.
🟠 react-codeshift (risk 57/100)
• No source repository linked.
• Only 1 published version.
• Only 3 downloads in the last week despite being 158 days old.
🟢 react (ok) — established package.Free HTTP API
POST /scan { "code": "import x from 'reqeusts'\nimport y from 'lodash'" }
GET /verify?name=expressHosted at https://import-guardian.vercel.app · try /verify?name=express vs /verify?name=reqeusts.
Pay-per-call (x402)
The /pro/* routes are gated by x402. Your agent pays $0.02 USDC per call automatically — no sign-up, no API key. Payment settles on-chain (USDC on Base). The server holds no private key; it only declares a public receiving address.
POST /pro/scan { "code": "…" } # 402 → pay → result, no rate limitHow it works (and its limits)
Existence + freshness come straight from the live npm registry (
registry.npmjs.org) and the download-stats API — these are facts, not guesses, which is the moat: an agent can't reliably know on its own whether a name it generated is real and trusted."Did you mean" uses Levenshtein distance against a curated list of high-impact packages attackers impersonate.
It does not execute or install anything (read-only), and it intentionally errs toward
REVIEWrather than silently passing a brand-new lookalike. It is a guardrail, not a guarantee — pair it with npm-guardian for behavioural/CVE auditing of packages you decide to keep.
License
MIT.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityFmaintenanceActs as a security checkpoint for AI coding agents by intercepting package installations to verify existence, check against CVE databases, and block vulnerable or hallucinated dependencies before they reach your codebase. Provides seven security tools including pre-install gates, full project audits, safe version recommendations, and deep transitive dependency scanning for npm and PyPI packages.Last updated7154MIT
- AlicenseAqualityAmaintenancePre-install risk gate for npm packages. Stops AI coding agents from running malicious or lifecycle scripts run.Last updated12MIT
- Flicense-qualityDmaintenanceSecurity scanner for vibe coders that checks npm packages for known vulnerabilities before installation, integrating with AI coding tools like Claude Code and Cursor.Last updated
- Alicense-qualityCmaintenanceAudits npm packages for supply-chain attacks (typosquatting, malicious install scripts, credential exfiltration) before installation, returning a SAFE/SUSPICIOUS/DANGEROUS verdict.Last updatedMIT
Related MCP Connectors
Provide AI-powered real-time analysis and intelligence on NPM packages, including security, depend…
Verify a skill, tool, or package for malicious behavior before your agent installs it. Hosted.
Supply chain risk scoring for npm, PyPI, Cargo, and Go. 9 tools. Behavioral signals.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Baneado98/import-guardian'
If you have feedback or need assistance with the MCP directory API, please join our Discord server