关于 Attestd - Deterministic CVE & Supply Chain Data
@attestd/mcp 是用于检查基础设施以及 PyPI、npm 包版本是否存在可利用 CVE 或供应链风险信号的 MCP 服务。它为 AI Agent 和安全工作流返回结构化风险数据,支持批量检查和 CVE 详情查询。
主要功能
- 01检查产品版本的 CVE 风险
- 02每批审计最多 100 个包
- 03查询 CVE 详情和利用信号
- 04列出覆盖的产品与包
- 05查询 API 密钥用量额度
适用场景
- 01审计锁文件或清单中的依赖
- 02评估基础设施版本的已知漏洞
- 03查看 CVE 的 CVSS、EPSS 和利用状态
MCP 相关
它向兼容 MCP 的客户端提供漏洞、供应链、产品覆盖范围、CVE 详情和用量工具。大多数实时检查需要 API 密钥。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @attestd/mcpATTESTD_API_KEY密钥Attestd API key (atst_...). Required for check_package_vulnerability, check_batch_vulnerabilities, get_cve_details, and live list_covered_products. Get one at https://api.attestd.io/portalATTESTD_BASE_URLOptional API base URL override. Defaults to https://api.attestd.io本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| product | string | 是 | 软件包或产品的 slug,例如 "nginx"、"runc"、"@bitwarden/cli"、"litellm" |
| version | string | 是 | 准确的版本字符串,例如 "1.20.0" |
详细介绍
@attestd/mcp
Attestd 会检查某个依赖版本是否存在可利用的 CVE,或是否已确认遭到供应链攻击。一次 API 调用即可返回结构化风险响应。
面向 Attestd 的官方 Model Context Protocol (MCP) 服务。它将 CVE 风险和供应链检查作为工具提供给 Claude Code、Claude Desktop 和任何兼容 MCP 的客户端。
- stdio 传输:通过
npx -y @attestd/mcp运行,无需全局安装。 check_package_vulnerability:使用@attestd/sdk封装GET /v1/check。check_batch_vulnerabilities:一次调用最多检查 100 个包。适用于 lockfile 和清单审计。list_covered_products:返回 Attestd 覆盖的产品。提供 API 密钥时,返回来自GET /v1/products的实时数据;未提供密钥时,返回静态捆绑的基础设施列表。get_cve_details:返回单个 CVE ID 的 CVSS、EPSS、KEV 状态和受影响产品。get_usage:返回已认证密钥的剩余配额(GET /v1/usage)。
前置条件
- Node.js 18+
- 从门户获取的 Attestd API 密钥。调用
check_package_vulnerability、check_batch_vulnerabilities、get_cve_details、get_usage和实时list_covered_products时需要此密钥。
Claude Code / MCP 配置
添加到 ~/.claude/mcp.json 或项目的 .mcp.json:
{
"mcpServers": {
"attestd": {
"command": "npx",
"args": ["-y", "@attestd/mcp"],
"env": {
"ATTESTD_API_KEY": "your-api-key-here"
}
}
}
}
可选:覆盖 API 基础 URL(例如开发环境):
"env": {
"ATTESTD_API_KEY": "your-api-key-here",
"ATTESTD_BASE_URL": "https://dev.api.attestd.io"
}
工具
check_package_vulnerability
| 参数 | 类型 | 说明 |
|---|---|---|
product | string | 产品标识(nginx、postgresql、litellm 等) |
version | string | 精确版本(1.20.0) |
返回包含以下内容的 JSON:
| 字段 | 含义 |
|---|---|
outsideCoverage | 如果产品不在覆盖范围内则为 true。风险未知,不代表安全。 |
riskState | critical | high | elevated | low | none | 超出覆盖范围时为 null |
riskFactors | 驱动 riskState 的风险因素词汇 |
maxEpss | 匹配的 CVE 中最高的 EPSS 概率 |
activelyExploited | CISA KEV 信号 |
remoteExploitable | 如果任何匹配的 CVE 可远程利用则为 true |
authenticationRequired | 仅当所有匹配的 CVE 都需要身份验证时才为 true |
patchAvailable / fixedVersion | 补丁建议 |
confidence | 综合评估置信度,范围为 0.0–1.0 |
cveIds | 对风险评估有贡献的 CVE ID |
typosquat | 包名完整性:detected、resembles、confidence、ecosystem(SDK 0.5 运行时;省略额外字段) |
message | 当 outsideCoverage 为 true 时提供说明 |
supplyChainCompromised / supplyChainDescription | PyPI/npm 供应链信号 |
API 密钥无效或缺失,或触发速率限制时,返回 isError: true,并附带 JSON error 字符串。
check_batch_vulnerabilities
| 参数 | 类型 | 说明 |
|---|---|---|
items | array | { product, version } 对象数组。每次调用最多 100 项。每项会消耗一次 API 调用。 |
配额会预先检查。如果批量请求会超出月度配额,则会在任何调用计费前返回 429。
返回包含 count 和 results 的 JSON。受支持的项目包含与 check_package_vulnerability 相同的字段,但不含 typosquat。超出覆盖范围的项目仅返回 product、version、outsideCoverage: true 和 riskState: null。
list_covered_products
不接受参数。提供 API 密钥时,返回 GET /v1/products 的实时 JSON:
| 字段 | 含义 |
|---|---|
source | 从 API 获取时为 "live" |
total | CVE 产品和供应链软件包的合计数 |
cveProducts | CVE 基础设施 slug 及其显示名称 |
supplyChainPackages | 受监控的 PyPI/npm 软件包 |
未提供 API 密钥时,返回静态内置列表:
| 字段 | 含义 |
|---|---|
source | "static" |
count | 内置基础设施产品的数量 |
products | { slug, display } 条目组成的数组 |
get_cve_details
| 参数 | 类型 | 描述 |
|---|---|---|
cve_id | string | CVE 标识符,例如 CVE-2021-44228 |
返回包含以下字段的 JSON:
| 字段 | 含义 |
|---|---|
found | CVE 存在于 Attestd 数据库中时为 true;返回 404 时为 false(不算错误) |
cveId | CVE 标识符 |
description | NVD 描述文本 |
cvssScore / cvssVector | CVSS 基本评分和向量 |
activelyExploited | CISA KEV 信号 |
remoteExploitable | 可远程利用 |
authenticationRequired | 利用时是否需要身份验证 |
affectedProducts | 受此 CVE 影响的 Attestd 产品 slug |
epssScore / epssPercentile | EPSS 概率和百分位数 |
sourcePublishedAt / lastCheckedAt | ISO 时间戳 |
未找到 CVE 时,返回 { "found": false, "cveId": "..." },且不包含 isError。API 密钥无效或缺失,或达到速率限制时,返回 isError: true,并附带 JSON error 字符串。
get_usage
不接受参数。需要 API 密钥。返回 GET /v1/usage 的 JSON:
| 字段 | 含义 |
|---|---|
tier | 账户套餐等级 |
keyCallsThisMonth | 当前周期内计入此密钥的调用次数 |
accountCallsThisMonth | 当前周期内计入账户所有密钥的调用次数 |
includedCalls | 每月包含的调用次数上限 |
billingPeriodStart / billingPeriodEnd | ISO 时间戳 |
overageCalls / estimatedOverageUsd | 超出包含调用次数上限的调用次数及预估超额费用(美元) |
API 密钥无效或缺失,或达到速率限制时,返回 isError: true,并附带 JSON error 字符串。
在本地验证
npm run build
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node dist/index.js
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。