Questions it answers
Triage security vulnerabilities: by CVE id (how severe it is, whether it is being exploited, how likely exploitation is) or for a whole dependency list (which 3 packages to upgrade first, and to what version).
Ask "how bad is CVE-2021-44228?", "which of these CVEs should I patch first?", "what did CISA add to its exploited list this month?" or "which dependencies in this package-lock.json should I fix first?".
CVE Risk Check reads two free public sources. The National Vulnerability Database (NVD) gives the description, the CVSS score and severity, the publication date, a link to a patch or vendor advisory when one is tagged, and whether the CISA Known Exploited Vulnerabilities (KEV) catalog lists the CVE, with CISA's due date and required action. FIRST's EPSS gives the modelled probability that the CVE is exploited in the next 30 days.
Each CVE gets a priority: "exploited" when CISA lists it, "likely" when its EPSS score is 0.1 or more, otherwise "routine", or "unknown" when EPSS could not be read. A batch of up to 10 CVEs comes back sorted with the most urgent first.
Every answer names its sources and the date the NVD record and the EPSS score are from. NVD limits requests without a key, so records are cached for a few hours; a recent change to a CVE can take that long to appear, and when NVD asks this service to slow down the answer says so and when to retry.
For a dependency list, pass the text of a lockfile (package-lock.json, pnpm-lock.yaml, yarn.lock, poetry.lock, uv.lock, Cargo.lock, go.sum or go.mod), a package.json or a requirements.txt, or a list of packages with exact versions (npm, PyPI, Go, crates.io, Maven, RubyGems, NuGet or Packagist). Each package version is matched to its known advisories in OSV.dev, which collects the GitHub Advisory Database and other open databases. The advisories' CVE ids are then checked against the CISA exploited list and EPSS. The answer is the few packages to fix first, each with a priority (malicious, exploited, likely, routine or unknown), a one-line reason and the version to upgrade to, followed by a short list of the rest. A match is by exact name and version: it does not show that your code reaches the vulnerable code.
It does not scan your systems, read your source code, confirm that you are vulnerable, or tell you how to exploit anything. The CVE ids and dependency lists you send are not stored; the only lasting record is a daily count of calls per tool.
Short questions this server answers, each with a direct answer: CVE Exploit Status, EPSS and Patch Priority Lookup.
What it can do
- Looks up a CVE's description, CVSS score and severity, and publication date from the NVD
- Shows whether the CISA Known Exploited Vulnerabilities catalog lists a CVE, with its due date and required action
- Adds the EPSS score: the modelled chance of exploitation in the next 30 days
- Gives each CVE a priority: exploited, likely or routine
- Ranks a batch of up to 10 CVEs with the most urgent first
- Reads an npm, pnpm, yarn, Poetry, uv, Cargo or Go lockfile and names the 3 packages to upgrade first, with the fix
- Matches package versions to OSV.dev advisories in 8 ecosystems, including npm, PyPI, Go, Maven and crates.io
- Lists CVEs recently added to the CISA exploited list, optionally filtered by a product word
- Links a patch or vendor advisory when NVD tags one, and names its sources and dates
Tools
check_cve, Check a CVE. Use this when the user asks how serious a CVE is, such as "how bad is CVE-2021-44228?". Pass the CVE id. Returns a priority (exploited, likely, routine or unknown), the description, CVSS score and severity, whether the CISA Known Exploited Vulnerabilities catalog lists it, the EPSS exploitation probability, a patch or advisory link when tagged, and the as_of dates. A lookup by CVE id: it does not know which software the user runs or whether they are affected.check_cves, Rank several CVEs. Use this when the user has a list of CVE ids and wants to know which to deal with first, such as "which of these CVEs should I patch first?". Pass up to 10 CVE ids. Returns each one's priority, CVSS score, CISA exploited-list status and EPSS score, most urgent first, with a count per priority. An id NVD could not be asked about in this call is marked deferred; ask for it again later. It does not know which software the user runs.list_recent_kev, List recent exploited CVEs. Use this when the user asks what CISA recently added to its Known Exploited Vulnerabilities list, such as "what exploited CVEs were added this month?". Optionally pass how many days back (up to 90), a product word to filter by, and a limit. Returns each CVE with its CISA name, the date it was added, CISA's due date and its CVSS score, newest first. The catalog lists vulnerabilities with evidence of exploitation; it is not a list of every serious CVE.triage_dependencies, Triage dependency vulnerabilities. Use this when the user wants to know which vulnerable dependencies to fix first, such as "which dependencies in this package-lock.json should I upgrade first?" or "triage my requirements.txt". Pass the text of a lockfile (package-lock.json, pnpm-lock.yaml, yarn.lock, poetry.lock, uv.lock, Cargo.lock, go.sum or go.mod), a package.json or a requirements.txt as manifest, or a packages list of ecosystem, name and exact version (npm, pypi, go, crates.io, maven, rubygems, nuget, packagist); only names and versions are read. Returns fix_first: by default the 3 packages to upgrade first, each with a priority (malicious, exploited, likely, routine or unknown), one line on why, the CVE ids and the version that fixes it, then a short list of the other vulnerable packages and a count per priority. It matches exact package versions to known advisories; it does not scan code or show that the vulnerable code is reached.
Add CVE Risk Check in VS Code
VS Code reads MCP servers from mcp.json and offers their tools to Copilot Chat in Agent mode. A workspace file at .vscode/mcp.json applies to that project. For every workspace, run MCP: Open User Configuration from the Command Palette and add the same entry there. These steps were checked against the VS Code MCP servers guide on 2026-10-09.
Create or edit the file so it contains this server. VS Code uses a top-level servers object, not mcpServers. Merge it with servers you already have.
{
"servers": {
"cve": {
"type": "http",
"url": "https://cve.openkrill.app/mcp"
}
}
}
No command, no headers and no input variables for a key: CVE Risk Check answers without a login. Save the file and select Start above the entry. VS Code asks once whether you trust the server: confirm it. Run MCP: List Servers to check that CVE Risk Check is running. You should see check_cve, check_cves, list_recent_kev, triage_dependencies.
Open the Chat view, choose Agent mode and ask: How bad is CVE-2021-44228? The Configure Tools button in the chat input lists the tools of each server, and VS Code may ask you to confirm the first call. The server is public and read-only. It sees only the arguments of each call, so do not paste secrets into the question.
Command line users can add it to the user profile in one step with code --add-mcp and the same name, type and url as JSON. The portable .mcp.json at the project root also works in VS Code, with mcpServers as its top-level key. An organization can turn MCP off through Copilot policy: if the MCP commands are missing, ask the admin.
If it does not work
The tool does not show up
Run MCP: List Servers, select the server and choose Restart. If it shows an error, choose Show Output to read the log. Check that the entry sits under servers with "type": "http", and that Chat is in Agent mode, where MCP tools are offered.
429 or rate_limited
Each server takes 60 calls a minute from one network, and some tools take fewer. Past that the call comes back as a tool error that starts with rate_limited: wait a minute and ask again. daily_limit means the server reached its shared daily cap, which resets at 00:00 UTC. A limit is not an answer, so do not read it as no results. For higher limits, ask support@openkrill.app for a key.
JSON entry has no type
Claude Code skips an entry in .mcp.json that has a url but no type. Add "type": "http" next to the url, or add the server with claude mcp add --transport http, which writes the type for you. The VS Code entry needs the same type field. Cursor and Pi read the url alone.
A call checked on 2026-10-11
CVE-2021-44228 is Log4Shell, listed by CISA, so priority, CVSS and KEV can be checked against the public record. The request below was posted to https://cve.openkrill.app/mcp as tools/call. HTTP 200. Source: the CVE Risk Check server, read 2026-10-11.
{
"method": "tools/call",
"params": {
"name": "check_cve",
"arguments": {
"cve": "CVE-2021-44228"
}
}
}
- status. ok
- priority. exploited
- cve. CVE-2021-44228
- source. NVD (nvd.nist.gov, includes the CISA Known Exploited Vulnerabilities flag) and FIRST EPSS (first.org)
- notice. Priority is a triage hint, not a risk rating: exploited means CISA lists it as exploited in the wild, likely means an EPSS score of 0.1 or more, routine is anything lower. To check whether a package version is affected,
- kev name. Apache Log4j2 Remote Code Execution Vulnerability
Repeat the call yourself if you need a newer reading. Cached answers expire. A rate limit is not a result: wait and try again. Nothing in the call is a ranking, a filing, or advice.
Using it in production
Nothing to install and nothing to run: no package, no Python or Node.js version and no environment variable. CVE Risk Check runs on our servers, and your client only needs the URL https://cve.openkrill.app/mcp.
| Rate limit | 60 tool calls a minute from one network. initialize and tools/list do not count. |
|---|---|
| Daily cap | 5000 tool calls a day per server, shared by every caller. It resets at 00:00 UTC. |
| At a limit | The call comes back as a tool error that starts with rate_limited (wait a minute) or daily_limit (try after 00:00 UTC), never as a partial answer. |
| Key | None. Do not add an Authorization header or a key field. |
| Higher limits | Email support@openkrill.app with the server name, the calls a day you expect and what they are for. We answer within 1 business day. |
| Freshness | Some answers come from a short cache. Each guide shows the date of its checked call; repeat a call when you need a newer reading. |
| Uptime | Scheduled test calls check the servers through the same endpoint. There is no SLA yet. |
| Data | What each server receives and keeps is on the privacy page. |
Use it in other apps
Roles that use CVE Risk Check
Frequently asked questions
How do I install the CVE Risk Check MCP server in VS Code?
Add cve with type http and the url https://cve.openkrill.app/mcp under servers in .vscode/mcp.json and save the file. Select Start above the entry, confirm that you trust the server, then use it from Chat in Agent mode.
Do I need an API key to run CVE Risk Check in VS Code?
No. This server takes no API key. For higher limits, email support@openkrill.app with the server name (CVE Risk Check), the calls a day you expect and what they are for. We answer within 1 business day.
What should I do if CVE Risk Check does not connect in VS Code?
Check that the entry sits under servers, not mcpServers, and has type http. Run MCP: List Servers, select cve and choose Restart, then open Show Output if it still fails.