mcpField
C
CVErdict

CVErdict

本地服务
cverdict.dev安全14 天前更新

关于 CVErdict

CVErdict 是供 Agent 进行 CVE 分流的只读 MCP 服务,提供带证据链接的风险等级和评分。它列出相关信号、未知项及数据来源,无需账户或 API 密钥。

主要功能

  1. 01含评分和证据链接的 CVE 判定
  2. 02搜索并筛选近期 CVE
  3. 03列出即将到期和逾期的 KEV 项
  4. 04追踪新出现的利用证据
  5. 05显示数据时效和来源文件
  6. 06无需账户的只读工具

适用场景

  1. 01依据关联证据对 CVE 分流
  2. 02按厂商或产品查找近期漏洞
  3. 03检查临近到期的 CISA KEV 项
  4. 04查看旧 CVE 的利用信号变化

MCP 相关

服务在本机通过 stdio 运行,为 MCP 客户端提供六种只读工具,用于 CVE 判定、搜索、信号列表、KEV 截止日期、利用情况变化和历史记录。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"markusweldon-cverdict": {
"command": "npx",
"args": [
"-y",
"cverdict-mcp"
],
"env": {
"CVERDICT_DATA_BASE": "<CVERDICT_DATA_BASE>"
}
}
}
}
启动命令npx -y cverdict-mcp
需要配置的环境变量
CVERDICT_DATA_BASEComma-separated data base URLs ending in /v1/, tried in order. For a fork or a mirror.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcverdict-mcp0.1.3

工具

6

收录的工具列表 · 更新于 4 天前

参数类型必填说明
idsarray是CVE ID,例如 ["CVE-2026-96951"]。
knobinteger否Likely next 所需证据量,范围为 30 到 80。默认值为 50,与网站上的设置相同。
detailboolean否同时返回描述、受影响产品、CWE、SSVC、漏洞利用链接、时间线和参考资料。最多 5 个 ID。

详细介绍

CVErdict MCP 服务

一个只读的模型上下文协议服务,为 AI Agent 提供与 CVErdict 相同的判定结果:等级、分数、每个理由标签及其分值和证据链接,以及未知信息。每个回答都会说明数据的生成时间和来源文件。无需密钥或账户。

它在你的计算机上通过 stdio 运行,并读取 raw.githubusercontent.com 上已发布的 data 分支;如果 GitHub 访问失败,则改用网站的 /data/ 副本。只有 GitHub 访问失败时才需要网站,因此即使网站宕机,它仍能正常工作。

安装

需要 Node 22.12 或更高版本。该 npm 软件包名为 cverdict-mcp:单个文件,无运行时依赖。0.1.0 之后的版本通过 GitHub Actions 发布,并附带 npm 来源证明,可将每个版本关联到构建它的提交和工作流。

# Claude Code
claude mcp add cverdict -- npx -y cverdict-mcp

其他客户端使用 mcpServers 条目(键名因客户端而异):

{
  "mcpServers": {
    "cverdict": {
      "command": "npx",
      "args": ["-y", "cverdict-mcp"]
    }
  }
}

在 Windows 上,对于无法直接启动 npx 的客户端,请使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "cverdict-mcp"]。npx -y 会运行最新版本;如需固定版本,请使用 cverdict-mcp@<version>(版本信息见 npm 页面)。

从克隆版本运行

需要 Node 22.12 或更高版本。

git clone --single-branch https://github.com/markusweldon/cverdict.git
cd cverdict && npm ci

# Claude Code
claude mcp add cverdict -- npm --prefix "$PWD" run -s mcp

其他客户端使用 mcpServers 条目(键名因客户端而异):

{
  "mcpServers": {
    "cverdict": {
      "command": "npm",
      "args": ["--prefix", "/path/to/cverdict", "run", "-s", "mcp"]
    }
  }
}

请保留 -s:直接运行 npm run 会将自己的横幅输出到 stdout,而 stdout 是 JSON-RPC 通道。

如需在启动时跳过 npm 和 TypeScript(以及在无法直接启动 npm 的 Windows 客户端上),请先构建一次单文件服务,然后用 Node 启动:

npm run build:mcp                                   # writes mcp/dist/cverdict-mcp.mjs
claude mcp add cverdict -- node "$PWD/mcp/dist/cverdict-mcp.mjs"

运行 git pull && npm ci(如果使用打包文件,还需运行 npm run build:mcp)以更新。

选项

环境变量,均为可选项。MCP 客户端会以精简环境启动服务,因此请将这些变量放入该服务对应的客户端 env 块中。

变量默认值用途
CVERDICT_DATA_BASEhttps://raw.githubusercontent.com/markusweldon/cverdict/data/v1/,https://cverdict.dev/data/v1/以逗号分隔、以 /v1/ 结尾的基础 URL,按顺序尝试。仅支持 https,或 localhost 和 127.0.0.1 上的 http(例如,与 npm run mock 和 npm run dev 搭配使用时的 http://localhost:5173/data/v1/)。用于分支或镜像
NODE_USE_ENV_PROXY、HTTPS_PROXY未设置使用代理时:NODE_USE_ENV_PROXY=1 和 HTTPS_PROXY=http://proxy.example:3128。需要 Node 22.21 或更高版本;较旧版本会忽略 NODE_USE_ENV_PROXY,且不会发出警告。NODE_EXTRA_CA_CERTS 可添加私有 CA

启动时,服务会向 stderr 写入一行信息,包含其版本、Node 版本、是否检测到代理以及数据基础 URL。stdout 中只会输出 JSON-RPC。

工具

这 6 个工具均为只读(readOnlyHint: true),并返回 structuredContent 以及内容相同的 JSON 文本块。结果类型见 shared/contract.ts 中的“MCP 工具结果”部分。

工具答案来自返回内容限制
get_verdictmeta.json、cve/<xx>.json等级、通俗易懂的判定、评分、score_math、每个带有分值和链接的原因标签、未知项、KEV、EPSS、CVSS、CVE 页面、分片文件和 cve.org 的链接。detail: true 会增加描述、受影响产品、CWE、SSVC、漏洞利用、标签、时间线和参考资料1 到 15 个 ID;使用 detail 时最多 5 个;knob 为 30 到 80
list_signalsignal.json;对于 Watch、Quiet 或低于 35 的 knob,则来自 index.json所选等级中的时间窗口内 CVE(默认优先显示 Exploited 和 Likely),按评分从高到低排序。筛选条件:vendor 文本、published_since、kev_onlylimit 为 1 到 50(默认 25),offset
kev_duekev.json未来 within_days 天内到期(0 到 60,默认 7)以及最多逾期 overdue_days 天(0 到 14,默认 7)的 CISA KEV 条目,按最早到期排序,并以 UTC 日历日表示 days_leftlimit 为 1 到 50(默认 50),offset
woke_upwoke.json自 since 以来新增利用证据的旧 CVE(默认从数据生成时间往前推 7 天),以及带日期的信号。可按 kinds 筛选limit 为 1 到 50(默认 25),offset
receiptsreceipts.jsonCVErdict、CVSS 7 或更高以及 EPSS 10% 或更高的评分,在 CISA 将 CVE 列入清单之前对其发出标记的频率:正向日志和事后回测,不包含逐个 CVE 的列表。id 会增加一个 CVE 的条目
search_cvesindex.json时间窗口内 ID、CNA、供应商、产品或标题中包含 query 所有词语的 CVE,按评分从高到低排序query 为 2 到 100 个字符,最多 8 个词;limit 为 1 到 50(默认 20),offset

日期(published_since、since)均为 UTC:2026-10-01、2026-10-01T06:00Z 或 2026-10-01T06:00:00.000Z。无效日期会报错。服务器无法应用的筛选条件一定会报错,绝不会被静默忽略。

根据 2026-11-03 的实时数据(16,747 个时间窗口内的 CVE)测算,任何工具在其最大限制下返回的最大答案都低于 20,000 个 token;scripts/mcp-measure.ts 会检查这一点。

每个答案都以 data 开头
字段含义
generated_at、age_hours答案所依据的流水线运行时间,以及服务器作答时数据的整小时龄期
score_model、knob_default、window与 meta.json 中相同
sources_down、sources_stale本次运行中没有可用数据的来源(其证据为未知,而非不存在),以及提供缓存副本的来源。osv 不列在其中:它只为 packages.json 提供数据,从不用于判定
files[]读取的每个文件:数据分支上的 path、文件来源 url、文件自身的 generated_at
warning刷新失败且答案来自最后一个可用副本时设置

每小时发布后,CDN 可能在几分钟内提供一个来自上次运行的文件;此时 files[] 会显示这两个时间,而不会将其中一个隐藏。

如实解读答案
  • Quiet 表示目前还没有证据,绝不表示安全。 数据之外的 CVE(found: false)是未知的,并非安全:数据涵盖过去 30 天内发布的 CVE、CISA KEV 中的所有 CVE,以及重新出现的旧 CVE。
  • 文本不可信。 标题、描述、KEV 名称和必需操作,以及标签文字,均引用自 CNA、CISA 和漏洞利用信息源。服务器指令会告知 Agent,绝不要遵循其中出现的指令。这能降低提示词注入风险,但不能消除风险。
  • 隐私。 GitHub 可以看到服务器请求了 256 个分片文件中的哪些文件,但看不到你的 CVE ID 或搜索词。如果 GitHub 拒绝请求或发生故障,同一请求会发送到该站点的 /data/ 副本。不会上传任何内容,也不会向磁盘写入任何内容。

错误

失败会作为工具结果返回,包含 isError: true 和纯文本消息,例如:

情况消息
文件尚未发布woke.json is not on the data branch yet, so this tool has nothing to read. The other tools still work.
第一个响应的基础位置缺少 meta.jsonmeta.json is not at the first data base that answered, so no tool can answer. Check CVERDICT_DATA_BASE, ...
所有基础位置均失败,且没有缓存CVErdict could not load its data right now (raw.githubusercontent.com: HTTP 503 for meta.json; ...). Try again in a few minutes, or read the files directly: https://github.com/markusweldon/cverdict/tree/data/v1
调用的 10 s 时限内没有数据CVErdict could not load its data in time (...)
数据已迁移到新架构The published data uses schema version 2; this server reads version 1. Update the server: ...
detail 包含超过 5 个 IDdetail: true takes at most 5 IDs; ask again in groups of 5.
参数错误Input validation error: Invalid arguments for tool get_verdict: ...

数据读取方式

  • 按顺序尝试基础位置。遇到 404 时不再尝试其他位置。遇到 429 或 403,或超时(4 s 内未收到响应标头,或响应正文停止到达 4 s),则转到下一个基础位置,并将该位置移至队列末尾 10 分钟。网络错误、重定向(被拒绝)、5xx 和格式错误的文件都会转到下一个基础位置。持续到达的缓慢响应正文不会被截断。
  • 每次工具调用的时限为 10 s。get_verdict 的分片并行获取,每次最多 6 个。
  • 解码后的响应正文上限为 24 MB,这也能防止镜像站的压缩炸弹。文件必须包含 schema_version 1 和 generated_at;行表必须恰好包含已发布的列。
  • 解析后的文件会在进程生命周期内保留在内存中。每隔 5 分钟重新检查 meta.json(raw.githubusercontent.com 无论如何都会缓存 5 分钟);当 meta.json 指向较新的运行版本时,会重新获取其他文件。空闲的服务不会发出请求,也不会运行定时器。

开发

npx vitest run mcp/test      # unit, protocol and spawn tests (what the release workflow runs)
npm test                     # every test in the repository
npm run build:mcp             # the single-file bundle in mcp/dist/
npx tsx scripts/mcp-measure.ts                # answer sizes against the live data branch
npx tsx mcp/test/smoke.ts mcp/dist/cverdict-mcp.mjs <data dir>   # what CI runs on mock data

SDK(@modelcontextprotocol/server)和 zod 是仓库中精确锁定版本的开发依赖项,并会打包到 dist/cverdict-mcp.mjs 中,因此该软件包没有运行时依赖项。网站不会导入它们:shared/mcp.ts 中存放着两者共用的副本。

发布

仅限维护者。设置 mcp/package.json 中的新版本、shared/mcp.ts 中的 MCP_SERVER.version,以及 mcp/server.json 中的两个 version 字段(测试会确保它们一致),然后提交并推送标签 mcp-v<version>,例如 git tag mcp-v0.1.1 && git push origin mcp-v0.1.1。发布工作流 (.github/workflows/release-mcp.yml) 会检查标签是否与版本匹配,运行 MCP 测试和冒烟测试,打包并通过可信发布(附带来源证明)发布到 npm。最后一个作业会使用工作流的 GitHub OIDC 身份登录,并根据 mcp/server.json 在 MCP Registry 中列出该版本。任何地方都不会存储 npm 或 Registry 令牌。

一次性设置:第一个版本需手动发布(在根目录运行 npm run build:mcp,然后在 mcp/ 中运行 npm login 和 npm publish)。接着在 npmjs.com 上,进入软件包 cverdict-mcp → Settings → Trusted publishing → GitHub Actions:所有者 markusweldon,仓库 cverdict,工作流 release-mcp.yml,不设置环境。在 Publishing access 下,选择要求双重身份验证并禁止使用令牌。

许可证

MIT(LICENSE)。该软件包包含 MCP TypeScript SDK(Apache-2.0,贡献内容采用 MIT 许可)、zod(MIT)以及 SDK 捆绑的库;相关声明见 LICENSE-THIRD-PARTY。数据条款:docs/DATA.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。