cve-lookup-mcp
by Aashish-32
README.md
# cve-lookup-mcp
An MCP server that gives AI assistants live access to CVE data from the [National Vulnerability Database (NVD)](https://nvd.nist.gov/) and [FIRST EPSS](https://www.first.org/epss/) — no API key required.
Built for use with [Claude Code](https://claude.ai/code) and any other [Model Context Protocol](https://modelcontextprotocol.io/) compatible client.
---
## Tools
| Tool | Description |
|------|-------------|
| `lookup_cve` | Full details for a CVE — CVSS score, description, affected products, EPSS exploitation probability, references |
| `search_cves` | Search NVD by keyword with optional severity and year filters |
| `check_product_cves` | Find all HIGH/CRITICAL CVEs for a vendor/product (useful during version fingerprinting) |
### Example prompts
```
Look up CVE-2022-41352
```
```
Search for critical Zimbra RCE vulnerabilities from 2022
```
```
Check CVEs for apache struts
```
---
## Installation
### Option 1 — pipx (recommended)
```bash
pipx install cve-lookup-mcp
```
### Option 2 — pip
```bash
pip install cve-lookup-mcp
```
### Option 3 — run from source
```bash
git clone https://github.com/Aashish-32/cve-lookup-mcp
cd cve-lookup-mcp
pip install -e .
```
---
## Configuration
Add to your `~/.claude.json` (Claude Code) or equivalent MCP client config:
```json
{
"mcpServers": {
"cve-lookup": {
"command": "cve-lookup-mcp",
"args": []
}
}
}
```
If installed from source, point directly at the script:
```json
{
"mcpServers": {
"cve-lookup": {
"command": "python3",
"args": ["/path/to/cve-lookup-mcp/src/cve_lookup_mcp/server.py"]
}
}
}
```
Restart your MCP client after adding the config.
---
## Data sources
| Source | What it provides | Rate limit |
|--------|-----------------|------------|
| [NVD API v2](https://nvd.nist.gov/developers/vulnerabilities) | CVE details, CVSS scores, affected products | ~5 req/30s (no key), 50 req/30s (with key) |
| [FIRST EPSS API](https://www.first.org/epss/api) | Exploitation probability score | None |
### NVD API key (optional)
Without a key, NVD allows roughly 5 requests per 30 seconds. For heavier use, [request a free API key from NVD](https://nvd.nist.gov/developers/request-an-api-key) and set it as an environment variable:
```json
{
"mcpServers": {
"cve-lookup": {
"command": "cve-lookup-mcp",
"env": {
"NVD_API_KEY": "your-key-here"
}
}
}
}
```
---
## Development
```bash
git clone https://github.com/Aashish-32/cve-lookup-mcp
cd cve-lookup-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
```
Run the server manually (stdio mode):
```bash
cve-lookup-mcp
```
Test with a raw JSON-RPC call:
```bash
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' \
| cve-lookup-mcp
```
---
## License
MIT
TDQS
A4.1/5.0
Scored across 3 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: check_product_cves for product-specific high/critical CVEs, lookup_cve for a specific ID, and search_cves for keyword searches. No overlap in functionality.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern in snake_case (check_product_cves, lookup_cve, search_cves), making it easy to predict their purpose.
Tool Count5/5
With 3 tools, the set is well-scoped for a CVE lookup server. Each tool serves a distinct and essential function without unnecessary redundancy.
Completeness4/5
Covers the core use cases: keyword search, ID lookup, and product-based filtering. Missing a time-based or trending CVE lookup, but the essential workflows are complete for most security assessments.
Maintenance
ActivityStale
ResponsivenessNo issues