CVE MCP Server
Provides FIRST EPSS exploitation probability scores for vulnerabilities, enriching findings with the likelihood of exploitation in the next 30 days to help rank which CVEs are most urgent.
Click on "Deploy 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., "@CVE MCP Serverscan the lockfiles in this repo and tell me what to fix first"
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.
CVE MCP server
An MCP server that finds known vulnerabilities in your dependencies and tells you which ones matter now.
The problem
npm audit, composer audit and similar tools list every known vulnerability in your
dependencies, and on a real project that is often dozens or hundreds of entries, most marked
"high". They don't tell you which ones attackers are using today, they only cover what is already
installed, and turning the list into a decision (what to fix first, what to upgrade to, does it
even apply to how we use the library) is left to you.
This server gives Claude (Claude Code, claude.ai, mobile) live access to the public vulnerability databases, so you can ask in plain language:
"Scan this project's lockfiles: what must I fix today?"
"Is laravel/framework 8.0.0 safe? What's the smallest upgrade that fixes the critical ones?"
"Any new Laravel or Vite CVEs in the last 30 days?"
"Does CVE-2025-30208 affect us, given we never expose the Vite dev server?"
It doesn't replace your audit in CI; it is what you use after it, to decide what to do.
Related MCP server: Security Vulnerability MCP Server
How it works
Lookup. Packages and versions are checked against OSV.dev (which merges GitHub advisories, npm, Packagist, PyPI and more, including reports of malicious packages). CVE records come from CVE.org and keyword searches from NVD.
Risk. Every finding is enriched with two signals:
CISA KEV: is this vulnerability being exploited in the wild right now?
EPSS (FIRST.org): the probability it gets exploited in the next 30 days.
Ranking. Results are sorted most urgent first: actively exploited, then by EPSS. On one real project, 144 findings came down to 1 that was actively exploited.
Reasoning. Claude reads the advisories and your code to judge whether each one really applies and proposes the upgrade path.
Everything uses free public APIs; no account needed.
Tools
Tool | Source | What it does |
| CVE.org | Official record of one CVE |
| NVD | Recent CVEs by keyword (e.g. "laravel", last 30 days) |
| OSV.dev | Known vulnerabilities of one package version |
| OSV.dev | Every dependency in a |
Every result carries exploited (listed in CISA KEV = attacked in the wild now) and epss
(FIRST probability of exploitation in the next 30 days), and lists are sorted most urgent first.
All sources are free and need no account. NVD_API_KEY (optional) raises NVD's rate limit.
Installation
Requirements
Node.js 20 or newer
An MCP client: Claude Code, Claude Desktop, claude.ai, or any other client that speaks MCP
No API keys are needed, and nothing to clone: npx downloads and runs the server from GitHub.
Optionally get a free NVD API key to raise
the NVD rate limit for search_cves, and pass it as the NVD_API_KEY environment variable.
Claude Code
claude mcp add cve --scope user -- npx -y github:AlessioMealli/mcp-cve-server--scope user makes it available in every project. Check it with claude mcp list.
Claude Desktop
Open Settings → Developer → Edit Config (or edit the file directly:
~/Library/Application Support/Claude/claude_desktop_config.json on macOS,
%APPDATA%\Claude\claude_desktop_config.json on Windows) and add:
{
"mcpServers": {
"cve": {
"command": "npx",
"args": ["-y", "github:AlessioMealli/mcp-cve-server"]
}
}
}Restart Claude Desktop.
Other MCP clients (Cursor, VS Code, Windsurf, ...)
Use the same stdio command in the client's MCP config: npx -y github:AlessioMealli/mcp-cve-server.
From source
git clone https://github.com/AlessioMealli/mcp-cve-server.git
cd mcp-cve-server
npm install --omit=devThen use node /absolute/path/to/mcp-cve-server/index.js as the command instead of npx.
Remote (claude.ai, Claude mobile, teams)
Run your own hosted instance (see Self-hosting), then:
claude.ai / Claude Desktop / mobile: Settings → Connectors → Add custom connector, URL
https://your-domain/mcp. Claude opens a consent page; paste your access token once.Claude Code:
claude mcp add --transport http cve https://your-domain/mcp
Usage
Just ask Claude. Some prompts that work well:
Scan the lockfiles in this project and tell me what to fix first.
Check axios 0.21.0 on npm. Which version fixes everything?
Any CVEs about "wordpress" published in the last 7 days?
Explain CVE-2021-44228 and whether it is being exploited.Locally, scan_lockfile reads a project folder by path (it finds composer.lock and
package-lock.json). On a hosted server it takes the lockfile text in content + filename
instead and never reads the server's disk.
Configuration
Variable | Mode | Required | Description |
| both | no | Raises the NVD rate limit for |
| hosted | no | HTTP port, default 3000. Setting it (or passing |
| hosted | yes | Owner token, at least 24 characters. Generate: |
| hosted | yes | The public HTTPS address of the server, e.g. |
| hosted | no | People's tokens (default |
| hosted | no | Registered OAuth clients (default |
Under Phusion Passenger (Plesk, cPanel) the hosted mode starts automatically and Passenger handles the port.
Self-hosting
The hosted mode serves /mcp (Streamable HTTP), the OAuth 2.1 endpoints Claude uses to log in, and
/health.
PORT=3000 PUBLIC_URL=https://cve.example.com CVE_AUTH_TOKEN=... node index.jsPut it behind an HTTPS reverse proxy (nginx, Caddy, ...) that sets X-Real-IP or X-Forwarded-For,
then check https://cve.example.com/health returns {"ok":true,...}. Keep the token in the
environment, never in a file in the repo.
DNS: an A record for the subdomain pointing to your server.
Plesk: add the subdomain with Document Root
<subdomain>/public(an empty folder, so the app's files are never served) and a Let's Encrypt certificate.Git: add this repository, deploy to the subdomain root, deployment action
bash deploy.sh(installs dependencies and restarts the app). Add Plesk's webhook URL to the GitHub repo to deploy on every push.Node.js: Application Root = subdomain root, Startup File
app.js, mode production, and setCVE_AUTH_TOKEN,PUBLIC_URLand optionallyNVD_API_KEY. Then NPM install and Restart.
Giving access to other people
The owner token always works. Everyone else gets their own token, kept in tokens.json (mode 600,
never committed). Run these in the app folder, as the user the app runs as:
node tokens.js add elena "Elena Rossi" # prints her token once
node tokens.js list # who has access (never prints tokens)
node tokens.js remove elena # revokeGive the person the connector URL and their token. Removing someone cuts off their Claude connection on its next request, with no restart. Lost token: remove and add again.
Security
The hosted server refuses to start without a strong
CVE_AUTH_TOKEN.Access and refresh tokens are HMAC-signed and checked against the people list on every request, so revoking someone is immediate.
Wrong tokens on the consent page are limited to 10 per minute per IP, and the consent form only redirects to addresses the OAuth client registered.
Every login and tool call is logged as one JSON line with the person's id (
"tenant":"elena"), never the token or lockfile contents.The hosted
scan_lockfiledoes not accept file paths.
Found a security issue in this server? Please open a private security advisory rather than a public issue.
Development
npm install
npm testnpm test runs two live tests against the real APIs: test.js (stdio: every tool, lockfile
parsing and ranking) and test-http.js (hosted mode: full OAuth flow, throttle, redirect check,
people add/login/remove, tampered token, 2 MB lockfile, no server paths).
Data sources
CVE.org, NVD, OSV.dev, CISA KEV and FIRST EPSS. This project is not affiliated with any of them.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Look up CVEs, CISA KEV, EPSS and open-source package vulnerabilities, including malicious packages.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Queries live Google OSV.dev vulnerability intelligence for any PyPI, npm, Go, or Rust crate and r.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides live CVE data from NVD and EPSS without API key, enabling AI assistants to look up CVSS scores, search vulnerabilities, and check product CVEs.3MIT
- FlicenseNot gradedqualityCmaintenanceProvides Claude with live access to multiple vulnerability databases (NVD, OSV, GitHub Advisories, Snyk) for querying CVEs, package vulnerabilities, and remediation guidance.-
- AlicenseAqualityBmaintenanceEnables AI agents to search, correlate, and monitor real-time vulnerability intelligence from NVD, CISA KEV, EPSS, and MITRE ATT&CK, including CVE details, critical CVE tracking, known exploited vulnerabilities, and exploitation probability scores.52MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to look up known open-source vulnerabilities in the OSV.dev database, covering individual packages and versions, specific git commits, single vulnerability IDs, and batch SBOM-style dependency scans. Queries are keyless and return compact summaries or full vulnerability details with affected ranges and references.19 npmMIT