CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

GhostFree

shane-js/ghostfree
1authSTDIOregistry active
Summary

Scans your repository's dependency manifests (package.json, requirements.txt, go.mod, Cargo.toml, pom.xml, and more) and checks them against OSV.dev's CVE database. Exposes six tools: discover_dependencies to find all pinned packages, check_cves to query for vulnerabilities with severity filtering, enrich_cve to pull CVSS scores and CISA KEV exploitation status from NVD, plus accept_risk and remove_accepted_risk to manage exceptions with expiry dates. Ships with a /ghostfree.scan prompt that walks through discovery, triage, and remediation in a conversational flow. Accepted risks live in .ghostfree/accepted.yml so your team can commit suppression decisions to version control. Runs locally via npx with no signup or API keys required.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

GhostFree logo

What is GhostFree 🚫👻?

Every software team could use some help ridding their code base of the ghosts haunting their dependencies.

GhostFree is a local MCP server that scans your repository's dependencies for known vulnerabilities based on issued CVEs using OSV.dev, helps you triage and fix findings with NVD and CISA KEV enrichment, and lets you manage accepted risks — all directly from your AI coding assistant.

Quick Start

No installation, signup, or payment required. Add GhostFree to your MCP settings for whatever code tool you use and run /ghostfree.scan.

VS Code Copilot (Extension — easiest)

Search @mcp ghostfree in the Extensions view (Ctrl+Shift+X) and click Install. Then open the Command Palette (Ctrl+Shift+P), run MCP: List Servers, select GhostFree, choose Start Server, and confirm trust when prompted. No JSON config needed.

VS Code Copilot (Manual config)

Create or update .vscode/mcp.json in your project root:

{
  "servers": {
    "ghostfree": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "ghostfree", "--repo-path", "${workspaceFolder}"],
      "env": {}
    }
  }
}

Claude Code

Create .mcp.json in your project root:

{
  "mcpServers": {
    "ghostfree": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "ghostfree", "--repo-path", "."]
    }
  }
}

Cursor

Create .cursor/mcp.json:

{
  "mcpServers": {
    "ghostfree": {
      "command": "npx",
      "args": ["-y", "ghostfree", "--repo-path", "."]
    }
  }
}

Claude Desktop

Add to your claude_desktop_config.json (location varies by OS):

{
  "mcpServers": {
    "ghostfree": {
      "command": "npx",
      "args": ["-y", "ghostfree", "--repo-path", "/path/to/your/repo"]
    }
  }
}

How to Use

The /ghostfree.scan Prompt

The recommended way to run a scan is via the built-in prompt. In your AI client, type:

/ghostfree.scan

This drives the following flow:

  1. Discover — finds all manifest files (requirements.txt, package.json, go.mod, Cargo.toml, pom.xml, *.csproj, etc.)
  2. Threshold — asks you for a minimum severity level (CRITICAL / HIGH / MEDIUM / LOW) if not already configured
  3. Scan — queries OSV.dev for CVEs across all discovered packages
  4. Triage — presents numbered results, 10 at a time. You pick which ones to investigate.
  5. Enrich — fetches CVSS vectors, CWE classification, and CISA KEV "actively exploited" status for your selections
  6. Remediate — recommends upgrades, code changes, or risk acceptance with a reason and expiry date

Example Session

User: /ghostfree.scan

GhostFree: Discovering dependencies...
Found 84 packages across 2 ecosystems (npm, PyPI).

What minimum severity should I surface? (CRITICAL / HIGH / MEDIUM / LOW)

User: HIGH

GhostFree: Scanning against OSV.dev...

[1] CVE-2021-44228 CRITICAL (10.0) — org.apache.logging.log4j:log4j-core@2.14.1
    Log4Shell: Remote code execution via JNDI lookup
    Fix: upgrade to 2.17.1

[2] CVE-2022-25881 HIGH (7.5) — http-cache-semantics@4.1.0
    ReDoS in http-cache-semantics
    Fix: upgrade to 4.1.1

[3] CVE-2021-28918 CRITICAL (9.8) — netmask@1.0.6
    IP address parsing bypass (SSRF / allowlist bypass)
    Fix: upgrade to 1.1.0

Showing 1-3 of 3. Which would you like to investigate? (e.g., 1, 2, or 'all')

User: 3

GhostFree: [Calls enrich_cve CVE-2021-28918]

CVE-2021-28918 — netmask CRITICAL (9.8)
CVSS: 9.1 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
CWE: CWE-704 (Incorrect Type Conversion)
CISA KEV: Not listed

What it is: netmask@1.0.6 improperly parses octal-notation IP addresses (e.g. 010.0.0.1),
treating them as decimal. This enables SSRF protection bypass and IP allowlist/blocklist
bypass — an attacker can craft an address that appears private but routes to a public host.

Exploit status: Not in CISA KEV. Public PoC exists (SICK-2021-011), ~280k affected projects.

Codebase exposure: netmask is not directly imported — it appears in package-lock.json as a
transitive dependency of pac-resolver@3.0.0 (a transitive dev dependency). No direct
require('netmask') or IP parsing logic found. Reachability is very low.

Recommendation: Upgrade — low effort, patch version (1.0.6 → 1.1.0), no API changes.
netmask is a transitive dependency; use npm audit fix or add a package.json overrides entry
to force netmask@1.1.0.

→ Reply with a number to investigate another CVE, 'back' to return to the list,
  'fix' to apply the recommended fix, 'accept' to record an accepted risk, or 'done' to wrap up.

Example: Accepting a Known Risk

User: Accept CVE-2022-25881 — it's only in our CI test pipeline, not reachable in production. Expiry end of year.

GhostFree: [Calls accept_risk CVE-2022-25881]

Accepted risk recorded:
• CVE-2022-25881 — http-cache-semantics (HIGH, CVSS 7.5)
  Reason: Only used in CI test pipeline, not reachable in production
  Expires: 2026-12-31
  ID: 550e8400-e29b-41d4-a716-446655440000

This acceptance is saved to .ghostfree/accepted.yml. Commit this file to share the
decision with your team. The CVE will be suppressed on future scans until expiry.

User: List all accepted risks

GhostFree: [Calls list_accepted_risks]

## Accepted Risks (1)

**CVE-2022-25881** — ✅ expires in 272 days (2026-12-31) | Severity at acceptance: HIGH (7.5)
  ID: 550e8400-e29b-41d4-a716-446655440000
  Reason: Only used in CI test pipeline, not reachable in production
  Accepted: 2026-04-03T10:00:00.000Z

Example: Enriching a Specific CVE

User: Tell me everything about CVE-2021-44228

GhostFree: [Calls enrich_cve CVE-2021-44228]

## Enrichment: CVE-2021-44228

### NVD
CVSS Score: 10.0 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWE: CWE-917 (Improper Neutralization of Special Elements in an Expression Language Statement)

References:
• https://nvd.nist.gov/vuln/detail/CVE-2021-44228
• https://logging.apache.org/log4j/2.x/security.html

### CISA KEV
⚠️ CONFIRMED actively exploited in the wild (added to KEV: 2021-12-10)

Tools Reference

ToolRead-onlyDescription
discover_dependencies✅Scan repo manifests, return all pinned packages by ecosystem
check_cves✅Query OSV.dev for CVEs, filter by severity, apply accepted risks
enrich_cve✅Fetch CVSS, CWE, references from NVD + KEV exploitation status
list_accepted_risks✅List all accepted risks with expiry status and severity snapshot
accept_risk❌Record an accepted risk with reason, expiry date, and severity snapshot
remove_accepted_risk❌Remove an accepted risk by UUID

All read-only tools are safe to auto-approve in your MCP client. Write tools (accept_risk, remove_accepted_risk) will prompt for confirmation.

check_cves Inputs

ParameterRequiredDescription
packagesYesArray of {name, version, ecosystem} — use discover_dependencies output
min_severityNoCRITICAL, HIGH, MEDIUM, or LOW. If not passed in, resolves in order of: GHOSTFREE_MIN_SEVERITY env var, then .ghostfree/config.yml, then prompts to choose

accept_risk Inputs

ParameterRequiredDescription
cve_idYesCVE ID, e.g. CVE-2021-44228
reasonYesBusiness justification
expires_onYesExpiry date in YYYY-MM-DD format
confirm_extended_expiryNoSet true if expiry is more than 1 year away
severityYesSeverity label at time of acceptance (CRITICAL, HIGH, MEDIUM, LOW, UNKNOWN) — snapshot, not live
cvss_scoreNoCVSS score at time of acceptance — snapshot, not live

Configuration

Create .ghostfree/config.yml in your repo root to set a persistent severity threshold that's shared with your team via source control:

min_severity: HIGH

This takes priority over the environment variable. If neither is set, GhostFree will prompt you to choose at scan time.

Environment Variables

VariableDescription
NVD_API_KEYOptional NVD API key for higher rate limits (50 req/30s vs 5 req/30s)
GHOSTFREE_MIN_SEVERITYOptional — skip the severity prompt and always use this threshold (CRITICAL, HIGH, MEDIUM, or LOW)
GHOSTFREE_DIROptional — use a custom directory instead of .ghostfree/ (applies to both accepted.yml and config.yml)

VS Code extension users: create a .env file in your workspace root — the extension reads it automatically and forwards the values to the server. For all other setups (manual MCP JSON config): add these to the "env" block in your client's config file (.vscode/mcp.json, .mcp.json, .cursor/mcp.json, claude_desktop_config.json, etc.), or export them as system environment variables.


Accepted Risk Management

When you accept a risk, GhostFree writes it to .ghostfree/accepted.yml in your repo root. Commit this file to share accepted decisions with your team.

accepted_risks:
  - id: 550e8400-e29b-41d4-a716-446655440000
    cve_id: CVE-2022-25881
    reason: Only used in CI test pipeline, not reachable in production
    expires_on: "2027-01-01"
    accepted_at: "2026-04-02T10:00:00.000Z"
    severity_at_acceptance: HIGH
    cvss_score_at_acceptance: 7.5

Rules:

  • expires_on is required — no open-ended acceptances
  • Expiry within 1 year: accepted immediately
  • Expiry beyond 1 year: requires confirm_extended_expiry=true
  • Expired acceptances are never silently dropped — they resurface as warnings on every scan

Supported Ecosystems & Manifests

EcosystemManifest Files
Pythonrequirements.txt, pyproject.toml, Pipfile.lock, setup.cfg
Node.jspackage.json, package-lock.json
Gogo.mod, go.sum
RustCargo.toml, Cargo.lock
Javapom.xml, build.gradle, build.gradle.kts
.NET*.csproj, packages.config

Version range handling

When a manifest specifies a version range rather than an exact version, GhostFree extracts a single version to query vulnerability databases. We use two taxonomies to keep the reasoning clear: VRC (what a specifier means) and VRHP (what we do about it).

Version Range Concepts (VRC)

A VRC is an ecosystem-agnostic label for what a version specifier expresses. Multiple VRCs can apply to the same entry (e.g. a caret range with a prerelease tag is vrc-caret + vrc-prerelease).

VRCConceptEcosystem examples
vrc-exactExact pinned versionnpm 1.4.0, Python ==2.28.0, Cargo 1.0.188, Maven 6.0.11
vrc-lockfile-pinResolved version from lock filepackage-lock.json, Cargo.lock, go.sum, Pipfile.lock
vrc-prereleasePrerelease / pre-stable tag1.0.0-beta, 9.0.0-preview.1, 1.0.0-SNAPSHOT, 32.1.2-jre
vrc-caretCaret (major-compatible) rangenpm ^1.2.3, Cargo ^1.0.100, Poetry ^2.28.0
vrc-tildeTilde (minor/patch-compatible) rangenpm ~4.17.0, Cargo ~1.0.0, Poetry ~2.28.0
vrc-inclusive-minimumInclusive lower bound (>=)npm >=1.2.0, Python >=2.28.0, Cargo >=0.5
vrc-exclusive-minimumExclusive lower bound (>)npm >1.0.0, Python >2.0, Cargo >0.5
vrc-compatible-releaseCompatible releasePython ~=2.28
vrc-compoundMultiple constraints combinednpm >=1.0.0 <2.0.0, Cargo >=0.5, <1.0, Python >=2.28,<3.0
vrc-inclusive-rangeBracket interval with inclusive lowerNuGet [1.0,2.0), Maven [1.0,2.0]
vrc-exclusive-rangeBracket interval with exclusive lowerNuGet (4.1.3,), Maven (1.0,2.0)
vrc-wildcardWildcard / any versionnpm *, NuGet 6.*, Cargo *
vrc-upper-bound-onlyUpper bound with no lower boundnpm <2.0.0, Python <=3.0, NuGet [,1.0], (,1.0)
vrc-exclusionVersion exclusionPython !=2.0
vrc-tagNamed tag or aliasnpm latest
vrc-workspace-refWorkspace / path referencenpm workspace:*, Cargo { workspace = true }
vrc-property-placeholderBuild variable placeholderMaven ${spring.version}
vrc-build-metadataBuild metadata suffixGo v1.0.0+build.123
vrc-pseudo-versionGo pseudo-versionGo v0.0.0-20230817171753-abc123

Version Range Handling Principles (VRHP)

A VRHP is the action GhostFree takes once a VRC is identified. String-keyed so ordering never matters.

VRHPActionDetail
vrhp-lockfileUse lock file versionIf a resolved lock file exists (package-lock.json, Cargo.lock, go.sum, Pipfile.lock), use its exact installed version. No interpretation needed.
vrhp-extract-lowerExtract the lower boundFor range specifiers (^, ~, >=), extract the minimum version the developer has accepted. This is the oldest — and most-likely-vulnerable — version they could be running.
vrhp-skipSkip dependencyIf a specifier provides only an upper bound (<=, <), an exclusion (!=), is unresolvable (*, latest, workspace:*), or uses a notation only a resolver can evaluate, skip the dependency. Querying a wrong version produces false positives or false negatives — both worse than a coverage gap you can fix by pinning or providing a lock file.
vrhp-preserve-prereleasePreserve prerelease tagVersions like 1.0.0-beta.1, 2.0.0-rc, and 32.1.2-jre are queried as-is. Prerelease versions can have their own CVEs and must not be stripped or normalized. When vrc-prerelease co-occurs with another VRC, this principle always applies alongside the primary VRHP.
vrhp-passthroughPass through verbatimGo go.mod, .NET packages.config, and all lock files use exact pinned versions with no range operators. Non-version strings (e.g. ${...} property placeholders in Maven) are skipped.

Ecosystem examples

Ecosystem / FileExample inputQueried versionVRCVRHP
.NET *.csproj — exact version2.28.22.28.2vrc-exactvrhp-passthrough
.NET *.csproj — prerelease1.0.0-beta, 9.0.0-preview.11.0.0-beta, 9.0.0-preview.1vrc-exact + vrc-prereleasevrhp-passthrough
.NET *.csproj — inclusive interval [lower,upper)[1.0,2.0)1.0vrc-inclusive-rangevrhp-extract-lower
.NET *.csproj — wildcard 6.*, 6.0.*6.*, 6.0.*6.0, 6.0.0vrc-wildcardvrhp-extract-lower — .* replaced with .0
.NET *.csproj — exclusive lower / upper-only(4.1.3,), [,1.0], (,1.0)(omitted)vrc-exclusive-range, vrc-upper-bound-onlyvrhp-skip
.NET packages.config — exact version13.0.313.0.3vrc-exactvrhp-passthrough
.NET packages.config — prerelease5.0.0-beta.15.0.0-beta.1vrc-exact + vrc-prereleasevrhp-passthrough
Go go.mod — exact versionv1.21.01.21.0vrc-exactvrhp-passthrough — v prefix stripped
Go go.mod — prerelease / build metadatav1.0.0-beta.1, v2.0.0+build.1231.0.0-beta.1, 2.0.0+build.123vrc-prerelease, vrc-build-metadatavrhp-passthrough — v stripped; tags preserved
Go go.sum — exact versionv1.21.01.21.0vrc-lockfile-pinvrhp-lockfile — v stripped; /go.mod lines deduplicated
Go go.sum — prereleasev1.0.0-rc.11.0.0-rc.1vrc-lockfile-pin + vrc-prereleasevrhp-lockfile — v stripped
Java build.gradle / build.gradle.kts — exact version2.28.22.28.2vrc-exactvrhp-passthrough
Java build.gradle / build.gradle.kts — prerelease / SNAPSHOT / classifier1.0.0-SNAPSHOT, 32.1.2-jre1.0.0-SNAPSHOT, 32.1.2-jrevrc-exact + vrc-prereleasevrhp-passthrough
Java build.gradle / build.gradle.kts — inclusive interval[1.0,2.0)1.0vrc-inclusive-rangevrhp-extract-lower
Java build.gradle / build.gradle.kts — exclusive lower / upper-only(4.1.3,), [,1.0](omitted)vrc-exclusive-range, vrc-upper-bound-onlyvrhp-skip
Java pom.xml — exact version2.28.22.28.2vrc-exactvrhp-passthrough
Java pom.xml — prerelease / SNAPSHOT / classifier1.0.0-SNAPSHOT, 32.1.2-jre1.0.0-SNAPSHOT, 32.1.2-jrevrc-exact + vrc-prereleasevrhp-passthrough
Java pom.xml — inclusive interval[1.0,2.0)1.0vrc-inclusive-rangevrhp-extract-lower
Java pom.xml — exclusive lower / upper-only / placeholder(4.1.3,), [,1.0], ${spring.version}(omitted)vrc-exclusive-range, vrc-upper-bound-only, vrc-property-placeholdervrhp-skip
npm package.json — exact version1.4.01.4.0vrc-exactvrhp-passthrough
npm package.json — prerelease1.0.0-beta.1, ^1.0.0-rc.21.0.0-beta.1, 1.0.0-rc.2vrc-prerelease, vrc-caret + vrc-prereleasevrhp-preserve-prerelease, vrhp-extract-lower
npm package.json — ^, ~, >=, >, =^1.2.3, >=1.2.0 <2.0.01.2.3, 1.2.0vrc-caret, vrc-compoundvrhp-extract-lower
npm package.json — *, latest, workspace:*, <*, latest, <2.0.0(omitted)vrc-wildcard, vrc-tag, vrc-workspace-ref, vrc-upper-bound-onlyvrhp-skip
npm package-lock.json1.2.31.2.3vrc-lockfile-pinvrhp-lockfile
Python Pipfile.lock2.28.22.28.2vrc-lockfile-pinvrhp-lockfile
Python pyproject.toml (PEP 621) — == / >= / ~=httpx==0.24.0, pydantic>=2.0.00.24.0, 2.0.0vrc-exact, vrc-inclusive-minimumvrhp-passthrough, vrhp-extract-lower
Python pyproject.toml (Poetry) — ^, ~, >=^2.28.0, >=2.28,<3.02.28.0, 2.28vrc-caret, vrc-compoundvrhp-extract-lower
Python pyproject.toml (Poetry) — prerelease^1.0.0-beta1.0.0-betavrc-caret + vrc-prereleasevrhp-extract-lower
Python pyproject.toml (Poetry) — !=, < only!=2.28.0, <3.0(omitted)vrc-exclusion, vrc-upper-bound-onlyvrhp-skip
Python requirements.txt, setup.cfg — == / === / >= / > / ~=requests>=2.28.0, requests~=2.28, requests===2.0.02.28.0, 2.28, 2.0.0vrc-inclusive-minimum, vrc-compatible-release, vrc-exactvrhp-extract-lower, vrhp-passthrough
Python requirements.txt, setup.cfg — prereleaserequests==1.0.0-beta1.0.0-betavrc-exact + vrc-prereleasevrhp-passthrough
Python requirements.txt, setup.cfg — <= / < / != onlyrequests<=2.28.0(omitted)vrc-upper-bound-only, vrc-exclusionvrhp-skip
Rust Cargo.toml — bare version (implicit ^)1.0.1881.0.188vrc-exactvrhp-passthrough
Rust Cargo.toml — prerelease1.0.0-beta1.0.0-betavrc-exact + vrc-prereleasevrhp-passthrough
Rust Cargo.toml — ^, ~, >=, >, =^1.0, >=0.51.0, 0.5vrc-caret, vrc-inclusive-minimumvrhp-extract-lower
Rust Cargo.toml — *, <*, <1.0(omitted)vrc-wildcard, vrc-upper-bound-onlyvrhp-skip
Rust Cargo.lock1.0.861.0.86vrc-lockfile-pinvrhp-lockfile

FAQ

Q: Why would I need something more than my current AI coding agent(s)?
Your AI agent's knowledge of vulnerabilities is frozen at its training cutoff. New CVEs are disclosed daily — example: Log4Shell, for example, was disclosed in December 2021 and would be invisible to any model trained before that.

GhostFree queries live authoritative vulnerability reporting organizations for up to date information, so every scan reflects the current threat landscape regardless of when your model was trained. This extra context is also critical in increasing the accuracy or whatever suggestions or recommendations your agent can provide.

It also tracks your accepted risks with reasons and expiry dates, building an auditable record that lives in your repo.

It aims to do all of this with as much determinism as can be introduced while still at its coring being run by your chosen agent that interacts with GhostFree. While running it with the best model you can afford is our recommendation, this determinism strategy helps cheaper/weaker models be decently effective vulnerability remediationa assistants when aided with GhostFree from our testing.

Q: Does GhostFree upload my code anywhere?
No. Only package names and versions are sent to OSV.dev. No source code leaves your machine.

Q: Do I need an API key?
No. OSV.dev requires no auth. NVD enrichment works without a key (rate-limited to 5 req/30s) which you are unlikely to hit in typical human use of this tool (you would start to see if running in some autonomous agent setup though). Set env variable NVD_API_KEY for higher limits (see nist.gov website for more details).

Q: What if I'm offline?
The scan requires OSV.dev access. NVD and KEV enrichment will gracefully degrade with a warning if unreachable.

Q: Does it scan transitive dependencies?
Partially. When a lock file is present, GhostFree scans the full resolved dependency graph (direct + transitive): package-lock.json for Node.js, Cargo.lock for Rust, go.sum for Go, and Pipfile.lock for Python. For ecosystems without lock file support (Java, .NET), only directly declared dependencies are scanned.

Q: The scan found a CVE I've already fixed. What do I do?
Update the package version in your manifest. On the next scan it will no longer appear.


Support

For bugs and feature requests, open an issue on GitHub.


Privacy Policy

GhostFree processes your repository's dependency manifests locally on your machine. Here is exactly what data leaves your machine and where it goes:

Data sentDestinationPurpose
Package names and versionsOSV.dev (Google)CVE lookup
CVE IDNVD API (NIST/U.S. Gov)CVSS score and CWE enrichment
CVE IDCISA KEV (U.S. Gov)Known exploitation status

No source code, file contents, repository names, user identifiers, or telemetry data of any kind are ever coded to be sent anywhere by us. As when interacting with any AI assisted tools, your underlying environment, AI model, agent, IDE, etc. are beyond our control in how it chooses to interact with our code and your code. Anyone making use of this tool should familiarize themselves with the information in our included LICENSE.txt (MIT).

GhostFree does not collect, store, or share any data. All processing happens locally. The accepted risks file (.ghostfree/accepted.yml) stays in your repository under your control.

For questions, open an issue on GitHub.


Acknowledgements

GhostFree is built entirely on the shoulders of three organizations that have made their vulnerability intelligence freely available to the world and all the vulnerability researchers around the world that report CVEs. Without them, this tool would not exist.

Google Open Source Security Team — Open Source Vulnerabilities (OSV)
OSV.dev is the backbone of every GhostFree scan. It provides a free, open API for querying known vulnerabilities across all major package ecosystems by package name and version, and includes severity scores and fix version data in a single response. Its generous rate limits and zero-auth design make it ideal for a tool that runs locally on every developer's machine.

U.S. National Institute of Standards and Technology — National Vulnerability Database (NVD)
The National Vulnerability Database, maintained by NIST within the U.S. Department of Commerce, is the authoritative source for standardised CVSS severity vectors and CWE classification for every published CVE. GhostFree calls the NVD API 2.0 during per-CVE triage to surface the full technical detail a developer needs to make an informed remediation decision.

U.S. Cybersecurity and Infrastructure Security Agency — Known Exploited Vulnerabilities (KEV)
CISA, part of the U.S. Department of Homeland Security, publishes and maintains the Known Exploited Vulnerabilities catalog — a curated list of CVEs confirmed to be actively exploited in the wild. GhostFree downloads and uses this catalog to answer the one question that most changes how urgently a team should act: Is this being exploited right now?


Our goal is to make the security intelligence these organizations produce — gathered at significant public expense and shared freely in the interest of a safer internet — as accessible as possible to every developer, wherever they work. The bad actors chasing these vulnerabilities don't sleep. Neither does the data.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

GHOSTFREE_DIR

Override the directory where GhostFree stores its data files (accepted-risks.yml, config.yml). Defaults to .ghostfree/ in the scanned repository root.

GHOSTFREE_MIN_SEVERITYdefault: MEDIUM

Minimum CVE severity level to surface. One of: CRITICAL, HIGH, MEDIUM (default), LOW.

NVD_API_KEYsecret

Optional NVD API key for higher rate limits when enriching CVE details. Free to request at https://nvd.nist.gov/developers/request-an-api-key.

Categories
Security & Pentesting
Registryactive
Packageghostfree
TransportSTDIO
AuthRequired
UpdatedApr 7, 2026
View on GitHub

Related Security & Pentesting MCP Servers

View all →
Exploit Intelligence Platform — CVE, Vulnerability and Exploit Database

com.exploit-intel/eip-mcp

Real-time CVE, exploit, and vulnerability intelligence for AI assistants (350K+ CVEs, 115K+ PoCs)
Semgrep

semgrep/mcp

A MCP server for using Semgrep to scan code for security vulnerabilities.
666
Pentest

dmontgomery40/pentest-mcp

NOT for educational purposes: An MCP server for professional penetration testers including STDIO/HTTP/SSE support, nmap, go/dirbuster, nikto, JtR, hashcat, wordlist building, and more.
137
Notebooklm Mcp Secure

pantheon-security/notebooklm-mcp-secure

Security-hardened NotebookLM MCP with post-quantum encryption
68
Pentest Mcp Server

cyanheads/pentest-mcp-server

Offline methodology engine for authorized penetration testing, CTF, and security research.
1
AI Firewall MCP

io.github.akhilucky/ai-firewall-mcp

Multi-agent LLM security layer detecting prompt injection and jailbreaks.