lazaretto-mcp
MCP serverSecurityLazaretto screens software for malware before it gets installed, offering a free malware check for lockfiles and a paid scan for any skill, tool, or package. Once added, your AI can run these checks so malicious code is caught before installation.
Use lazaretto-mcp in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add lazaretto-mcp and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the known bad lookup tool from lazaretto-mcp
Needs your own API account. Keys stay in your vault.
Details
Available today. Use it from your connected AI after setup.
After adding Lazaretto, ask your AI to check a lockfile or scan a skill, tool, or package you plan to install.
What your AI can do with it
- Check lockfiles for malware at no cost
- Scan any skill, tool, or package before you install it
- Catch malware before it reaches your setup
Install lazaretto-mcp
The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user lazaretto-mcp 'https://lazaretto.dev/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://lazaretto.dev/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=lazaretto-mcp&config=eyJ1cmwiOiJodHRwczovL2xhemFyZXR0by5kZXYvbWNwIn0=Open the link and Cursor adds the server at that address.
ChatGPT
https://lazaretto.dev/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add lazaretto-mcp --url 'https://lazaretto.dev/mcp'Run it once, then sign in with codex mcp login lazaretto-mcp if the server asks for an account.
From the project's README
As published by jamesdfinance-dev/lazaretto-mcp in README.md.
Know what a package does before you install it.
An MCP server for Lazaretto: deterministic pre-install verification for npm packages, AI agent skills and MCP tools. The free lockfile check matches every exactly pinned dependency against OSV and OpenSSF malicious-package advisories with no account. A paid scan adds behavioral analysis with file-and-line evidence.
This package is a thin front end for the Lazaretto API. It ships no detection logic and does nothing but make HTTPS requests, so it is easy to audit.
Try it in one line, nothing installed
Check every exactly pinned dependency in your project against published malicious-package advisories. No account, no key, no install:
curl -s https://lazaretto.dev/check --data-binary @package-lock.json
Works with package-lock.json, npm-shrinkwrap.json, yarn.lock or
pnpm-lock.yaml. We keep no copy of your lockfile.
Tools
check_lockfile (free, no API key)
Checks every exactly-pinned dependency in your lockfile against published
malicious-package advisories. Reads package-lock.json, yarn.lock, or
pnpm-lock.yaml from the working directory, so the agent never has to paste a
lockfile through its context. One call covers the whole tree.
An empty malicious list is an all-clear only when unverified is also empty.
known_bad_lookup: free, no key. Is a sha256 content hash a known-bad artifact? Exact-hash match against an indicator store refreshed daily.find_attestation: free, no key. Has anyone already attested this artifact? Give a package identity likechalk@5.6.1, an MCP server URL, or a sha256 content hash, and get the signed verdict if one exists, with its age, whether it was made under an older rules version, andcontradictedif the subject is now known-bad. A miss means no attestation is on record for this subject. It is not a verdict either way.verify_attestation: free, no key. A scan verdict ships with a signed attestation (compact JWS). Hand this tool one that another agent, a README, or a lockfile gave you: it confirms the signature is Lazaretto's, returns the attested claims, and flagscontradictedif a once-clearsubject is now known-bad, so a verdict can be trusted without re-scanning or re-paying. Still confirm the artifact you will run matchesclaims.sub.scan_artifact: fetches a target (npm or PyPI package, GitHub repo, ClawHub skill, raw URL, or inline text) without running it and returns a deterministic verdict (malicious,flagged,clear,error) with evidence. A full scan needs prepaid credits: theX-API-Keyheader on the hosted server, orLAZARETTO_API_KEYfor the stdio package. Buy them at https://lazaretto.dev/buy.scan_lockfile_deep: paid, one credit per package that returns a verdict. The behavioral counterpart tocheck_lockfile: reads the code of every exactly pinned dependency, up to 25 per call, instead of only matching names and versions. Trustcomplete_coverage:falsemeans something was capped, errored or only partly read, so the run is not a clean bill of health for the tree. Calling again with the same lockfile rescans, and bills again, the same first packages. The result lists every package it left innot_scanned.packages, asname@versionstrings. To continue a run, pass those aspackagesinstead of the lockfile:- Hosted server (
https://lazaretto.dev/mcp): passnot_scanned.packagesback aspackages, the whole list. It scans the first 25 and lists the rest innot_scanned.packagesagain. - stdio package:
packagestakes up to 25 per call, so work throughnot_scanned.packages25 at a time. The tool addsnext_callto the result, andnext_call.packagesholds the first 25 of that list.
- Hosted server (
check_mcp_tools: paid. For a server that runs over stdio, which is most of them, nothing can connect to it from outside, so there is no endpoint to check. Your client already read its tool list at startup though: paste that JSON and we analyze the same text with the same rules, contacting no server at all.scan_mcp_server: paid. Point it at an MCP endpoint before you connect to it. It asks the server to introduce itself and list its tools, then analyzes the text that server hands an agent: tool names, descriptions, parameter schemas, and its instructions. That text is documentation a model obeys, so it is an instruction channel the server controls. Catches tool poisoning (hidden directives to read~/.ssh/id_rsaor an agent config file), parameters whose purpose is to carry secrets or your conversation out, and standing orders about another server's tools. Evidence names the exact tool. It calls onlyinitializeandtools/list, never the server's own tools.
Reports are signals with evidence, not a warranty. clear means no known-bad
match and no rule fired. It is not a statement about risk.
Use it (hosted, zero install)
The server is hosted at https://lazaretto.dev/mcp. Add it to any MCP client
that supports remote (Streamable HTTP) servers. Nothing to install, no local
process.
{
"mcpServers": {
"lazaretto": {
"url": "https://lazaretto.dev/mcp",
"headers": {
"X-API-Key": "your-prepaid-key (optional; the free tools need no key)"
}
}
}
}
check_lockfile, known_bad_lookup, find_attestation and
verify_attestation work with no key. scan_artifact, scan_lockfile_deep,
scan_mcp_server and check_mcp_tools need credits: buy a pack at
https://lazaretto.dev/buy (an agent with a wallet can also buy credits itself
over x402 at POST https://lazaretto.dev/v1/credits/topup).
Self-host the stdio server (optional)
If you would rather run it locally over stdio instead of the hosted URL, the
npm package is lazaretto-mcp:
{
"mcpServers": {
"lazaretto": {
"command": "npx",
"args": ["-y", "lazaretto-mcp"],
"env": {
"LAZARETTO_API_KEY": "your-prepaid-key (optional; the free tools need no key)"
}
}
}
}
Or from a clone:
git clone https://github.com/jamesdfinance-dev/lazaretto-mcp
cd lazaretto-mcp && npm ci
read -rs LAZARETTO_API_KEY && export LAZARETTO_API_KEY
node index.mjs
The stdio package pays only with prepaid credits on LAZARETTO_API_KEY. It
has no x402 client of its own, so a paywall result carries no x402 payment
challenge: per-call x402 payment must be made by the agent's own HTTP client
against https://lazaretto.dev/v1/scan, not through this package.
LAZARETTO_BASE_URL overrides the API host (default https://lazaretto.dev).
License
MIT. The Lazaretto service and its detection engine are separate and proprietary.
Tools it offers (9)
What this server listed when Ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.
known_bad_lookupcheck_lockfilescan_artifactscan_lockfile_deepscan_mcp_servercheck_mcp_toolsfind_attestationverify_attestationget_free_key
Signals
- Last commit
- Sep 2026
- Weekly downloads
- 73
- Weekly_downloads
- 73 weekly_downloads
Advanced
- Delivery
- lazaretto MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-jamesdfinance-dev-lazaretto- Source
- github.com/jamesdfinance-dev/lazaretto-mcp
- Hosted endpoint
https://lazaretto.dev/mcp
github.com/jamesdfinance-dev/lazaretto-mcp
More in Security
MCP server
More in Securityechelongraph-mcp
MCP server · echelongraph
More in Securitynotfair
MCP server · nowork-studio
More in Securityfeedmyagent
MCP server · makash
More in Securityopenwork
MCP server · different-ai
More in Securityosv-advisory-mcp-server
MCP server · cyanheads
More in Security