CVE Tracker MCP server
CVE Tracker is also a Model Context Protocol server, so an AI assistant can look up CVEs itself instead of guessing from what it remembers. It reads the same data as the site and the JSON API, refreshed every few minutes. It is free and read-only, with no key and no account.
https://api.trackcve.app/v1/mcpConnect a client
The server speaks Streamable HTTP, so a client needs only the address above.
Claude Code
claude mcp add --transport http cve-tracker https://api.trackcve.app/v1/mcpClaude and Claude Desktop: under Settings, Connectors, add a custom connector with the address above.
Cursor, in ~/.cursor/mcp.json:
{
"mcpServers": {
"cve-tracker": { "url": "https://api.trackcve.app/v1/mcp" }
}
}VS Code, in .vscode/mcp.json:
{
"servers": {
"cve-tracker": { "type": "http", "url": "https://api.trackcve.app/v1/mcp" }
}
}Any other client: give it the address, with no authentication. To try the tools by hand, run the MCP Inspector:
npx @modelcontextprotocol/inspectorWhat to ask
- "Is CVE-2021-44228 known to be exploited, and which versions are affected?"
- "Which critical CVEs were published in the last 7 days for Microsoft products?"
- "Which CVEs affecting npm packages have the highest EPSS?"
- "How has the number of SQL injection CVEs changed over the years?"
- "What did CISA add to KEV this week?"
Tools
Every tool only reads. Each answers JSON in the shapes of the JSON API. The filter is the same as the API's filter parameters.
| Tool | What it answers | Input |
|---|---|---|
search_cves | One page of CVEs for a filter, with the total | The filter, sort, dir, page, pageSize (default 20, up to 100) |
get_cve | One CVE in full; affected products, packages and references are cut to the first 25, with their total | id |
get_epss_history | A CVE's EPSS day by day over the last month | id |
get_timeline | How many CVEs of a filter were published per hour, day, week, month or year, by severity | The filter |
get_summary | The headline counts, and when each source was last read | None |
get_vendor | One vendor's or product's CVEs by severity and year, its top products and weaknesses | vendor, product |
get_weakness | One weakness's CVEs by severity and year, and the vendors it comes up for most | cwe |
get_weekly_digest | One ISO week: counts, the most severe, additions to KEV, top vendors and weaknesses | week (default the last complete week) |
get_stats | Severity, the top weaknesses, vendors and CNAs of a recent window | range: 7d, 30d (default), 90d, 12m |
get_epss_movers | The CVEs whose EPSS rose the most | window: 1d, 7d (default), 30d |
find_filter_values | How a vendor, product or CNA is spelled; which weaknesses and ecosystems exist, with their counts | kind: vendor, product, assigner, cwe, ecosystem; q; vendor |
A value a tool cannot read is answered with the problem instead of being dropped, unlike the API's lenient default: a typo never widens the result to every CVE.
Good to know
- Fair use. Each message to the server is one request. It counts against the rate limit of the API and against 60 requests a minute per address for this server, with 1,200 a minute for all callers together. The
RateLimit-*headers report your share per address. Over any of the limits, the HTTP answer is429withRetry-After. - Busy is normal. The site comes first: agents share one query at a time, and a few more may wait. Beyond that, a tool answers
The server is busy; try again shortly, so retry after a moment. - No open connections. Every call is one request and one answer. The tools do not change while the server runs, so change notifications are not offered.
- Text from third parties. Titles, descriptions and references are written by the CNAs that publish the records. A client should treat them as data, never as instructions; the server tells it so.
- Not a scanner. It shows public data as published, without warranty. It knows nothing about your systems, so check the primary source before acting on an answer.
- In the browser. The site's pages also offer WebMCP tools to an agent running in the browser. Those can also move the page. This server is for every other client.
- Calls from web pages. A request with an
Originheader the server does not know is refused with403. Programs send no such header.
Self-hosting
The server is part of the backend: POST /v1/mcp on your own API host. Both the 2026-07-28 protocol revision and the 2025 ones are served, without sessions.
| Variable | Default | Meaning |
|---|---|---|
MCP_ENABLED | true | false answers 404 at /v1/mcp; the rest of the API is untouched |
RATE_LIMIT_MCP_PER_MINUTE | 60 | Requests per caller per minute, on top of the general limit |
RATE_LIMIT_MCP_TOTAL_PER_MINUTE | 1200 | Requests per minute for all callers together |