npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

supply-chain-mcp-server

v0.2.1

Published

Software supply chain security MCP server — vulnerability scanning, package analysis, provenance verification, typosquatting detection, dependency intelligence across npm, PyPI, crates.io, Go, and more

Downloads

149

Readme


问题所在

供应链安全情报是现代软件开发中缺失的一环。漏洞数据库、包注册表、来源验证、漏洞利用预测评分、许可证合规、安全评分卡、仿冒检测 — 你需要的数据分散在数十个平台中,每个平台都有自己的 API、认证、速率限制和输出格式。如今你需要在一个标签页中查看 OSV,在另一个标签页中查看 NVD,调出 npm 安全公告,在 FIRST.org 上查看 EPSS 分数,在另一个标签页中验证 Sigstore 来源,查找 OpenSSF Scorecard,交叉引用 CISA KEV,然后花一个小时手动将这些信息拼凑在一起。

传统供应链安全工作流:
  检查漏洞                       ->  OSV + NVD + GitHub Advisories(3 个独立界面)
  评估被利用的可能性              ->  EPSS 评分(独立 API)
  检查主动利用                    ->  CISA KEV 目录(独立 JSON 源)
  验证包来源                      ->  Sigstore/Rekor + npm 证明(多个 CLI)
  检查安全实践                    ->  OpenSSF Scorecard + Best Practices Badge(2 个界面)
  审计依赖关系                    ->  deps.dev + Libraries.io(又 2 个界面)
  检查注册表元数据                ->  npm + PyPI + crates.io + Go(4 个注册表)
  检查仿冒                       ->  手动名称比较(容易出错)
  验证许可证合规                  ->  ClearlyDefined(又一个界面)
  检查发行版打包                  ->  Repology(又一个界面)
  ────────────────────────────────
  合计:每次包审计 45 分钟以上,大部分时间在切换上下文

supply-chain-mcp-server 通过 Model Context Protocol 为你的 AI 代理提供 7 个复合工具(内部编排 90 种技术),跨 21 个数据源。代理调用一个工具如 vuln_scanpackage_info,它会自动并行地分发到正确的技术,关联漏洞数据与漏洞利用预测,验证来源,检查安全态势,并呈现统一的供应链风险评估 — 在一次对话中完成。

使用 supply-chain-mcp-server:
  你:"审计 express npm 包的安全态势"

  代理:-> vuln_scan(mode:"package", ecosystem:"npm", name:"express")
           内部运行:osv_query + ghsa_package + epss_batch + kev_lookup
        -> package_info(ecosystem:"npm", name:"express", version:"4.21.2")
           内部运行:npm_package + npm_downloads + npm_maintainers + npm_scripts + npm_provenance
        -> quality(mode:"scorecard", owner:"expressjs", repo:"express")
           内部运行:scorecard_repo
        -> "express 拥有强健的安全态势。2 个已知漏洞但
           都未被主动利用(不在 KEV 中)。一个 CVE 的 EPSS 较高
           需优先修补。通过 Sigstore 验证了来源。
           OpenSSF Scorecard 8.2/10。"

有何不同

现有工具一次只给你一个来源的原始数据。supply-chain-mcp-server 让你的 AI 代理能够同时跨漏洞、来源和包情报进行推理


快速开始

方式一:npx(无需安装)

npx supply-chain-mcp-server

7 个复合工具(90 种技术)立即可用。大多数数据源无需 API 密钥 — 21 个源中 18 个完全免费。

方式二:克隆

git clone https://github.com/badchars/supply-chain-mcp-server.git
cd supply-chain-mcp-server
bun install

环境变量(可选)

export GITHUB_TOKEN=your-token        # GHSA + Scorecard 更高速率限制
export LIBRARIES_API_KEY=your-key     # Libraries.io 工具必需
export NVD_API_KEY=your-key           # 50 请求/30秒(无密钥 5 请求/30秒)

所有 API 密钥均为可选。无密钥时仍可使用 7 个复合工具中的 6 个 — 仅 Libraries.io(在 dep_tree 中)需要 API 密钥。

连接到 AI 代理

# 使用 npx
claude mcp add supply-chain-mcp-server -- npx supply-chain-mcp-server

# 使用本地克隆
claude mcp add supply-chain-mcp-server -- bun run /path/to/supply-chain-mcp-server/src/index.ts

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "supply-chain": {
      "command": "npx",
      "args": ["-y", "supply-chain-mcp-server"],
      "env": {
        "GITHUB_TOKEN": "optional",
        "LIBRARIES_API_KEY": "optional",
        "NVD_API_KEY": "optional"
      }
    }
  }
}

相同的 JSON 配置格式。将命令指向 npx supply-chain-mcp-server 或本地安装路径。

开始查询

你:"检查 [email protected] 是否有已知漏洞并验证其来源"

就这样。代理自动处理漏洞查询、EPSS 评分、KEV 检查、来源验证等。


AI 能做什么

完整包审计

你:"对 lodash npm 包进行完整的安全审计"

代理:-> vuln_scan {mode: "package", ecosystem: "npm", name: "lodash"}
         ↳ osv_query + ghsa_package + epss_batch + kev_lookup(并行)
      -> package_info {ecosystem: "npm", name: "lodash", version: "4.17.21"}
         ↳ npm_package + npm_downloads + npm_maintainers + npm_scripts + npm_provenance + npm_attestations + npm_audit_bulk(并行)
      -> quality {mode: "scorecard", owner: "lodash", repo: "lodash"}
         ↳ scorecard_repo
      -> license {mode: "lookup", type: "npm", name: "lodash", version: "4.17.21"}
         ↳ license_lookup
      -> "[email protected] 安全审计:
         漏洞:3 个历史漏洞(全部在 4.17.21 中修复),
         包括原型污染 CVE-2020-8203。
         来源:无 Sigstore 证明(在来源时代之前发布)。
         OpenSSF Scorecard:6.1/10 — 无分支保护,无模糊测试。
         依赖:零运行时依赖(自包含)。
         许可证:MIT(ClearlyDefined 确认)。
         生命周期脚本:无 — 干净。
         建议:使用最新版本是安全的。考虑
         迁移到 lodash-es 以支持 tree-shaking。"

漏洞分类

你:"分类 CVE-2024-3094 — 有多紧急?"

代理:-> vuln_scan {mode: "cve", cve_id: "CVE-2024-3094"}
         ↳ nvd_cve + osv_id + ghsa_id + epss_score + kev_lookup(并行)
      -> "CVE-2024-3094(xz-utils 后门):
         CVSS:10.0 严重 — xz-utils 5.6.0/5.6.1 中的后门
         EPSS:0.95(第99百分位)— 极有可能被利用
         CISA KEV:是 — 正在被主动利用,截止日期 2024 年 3 月
         影响:Linux 上的 xz-utils/liblzma(通过 systemd 影响 sshd)
         这是紧急事件。需要立即行动:
         1. 将 xz-utils 降级到 5.4.x 或删除 5.6.0/5.6.1
         2. 检查所有系统中是否有受影响的版本
         3. 这是一次通过妥协维护者实施的复杂供应链攻击。"

依赖风险评估

你:"评估将 fastapi 添加到我们 Python 项目的供应链风险"

代理:-> package_info {ecosystem: "pypi", name: "fastapi"}
         ↳ pypi_package + pypi_releases + pypi_maintainers(并行)
      -> vuln_scan {mode: "package", ecosystem: "PyPI", name: "fastapi"}
         ↳ osv_query + ghsa_package + epss + kev(并行)
      -> dep_tree {mode: "dependencies", ecosystem: "pypi", name: "fastapi", version: "0.115.0"}
         ↳ deps_dependencies + deps_requirements + libraries_deps(并行)
      -> quality {mode: "full", owner: "tiangolo", repo: "fastapi", repo_url: "https://github.com/tiangolo/fastapi"}
         ↳ scorecard_repo + badge_by_repo(并行)
      -> security_check {mode: "typosquat", name: "fastapi", ecosystem: "pypi"}
         ↳ typosquat_check
      -> "fastapi 供应链风险评估:
         漏洞:1 个低严重性(已在最新版本修复)。
         依赖:5 个直接依赖(starlette、pydantic 等),23 个传递依赖。
         OpenSSF Scorecard:7.4/10 — 良好的 CI/CD,签名发布。
         维护者:单一主要维护者(tiangolo)。
         仿冒:'fast-api' 和 'fastapi2' 存在 — 请验证
         安装的是正确的包。
         风险:低。维护良好,活跃社区,良好的安全
         实践。单一维护者风险因强大的
         自动化和社区监督而被缓解。"

仿冒检测

你:"我准备从 PyPI 安装 'reqeusts' — 这安全吗?"

代理:-> security_check {mode: "typosquat", name: "reqeusts", ecosystem: "pypi"}
         ↳ typosquat_check
      -> security_check {mode: "compare_names", name_a: "reqeusts", name_b: "requests"}
         ↳ typosquat_compare
      -> "警告:'reqeusts' 很可能是 'requests' 的仿冒包。
         编辑距离:2('ue' -> 'eu' 转置)
         相似度:87.5%
         合法的包是 'requests'(月下载量 8 亿+)。
         'reqeusts' 下载量极低,很可能是为利用拼写错误而发布的。
         不要安装此包。
         正确命令:pip install requests"

复合工具(7 工具,90 技术)

AI 代理仅看到 7 个复合工具(约 1K tokens),每个工具内部并行编排多种技术。

| 复合工具 | 技术数 | 模式 | 描述 | |---|---|---|---| | vuln_scan | 24 | package cve batch recent go_module | 跨 OSV、GHSA、NVD、EPSS、CISA KEV、Go Vuln DB 的漏洞情报 | | package_info | 33 | 按生态系统 | 包元数据 — 自动分发到 npm (10)、PyPI (4)、crates.io (4)、Go (3)、RubyGems (4)、NuGet (4)、Packagist (4) | | dep_tree | 14 | dependencies dependents project similar search full | 通过 deps.dev + Libraries.io 的依赖图情报 | | security_check | 7 | typosquat compare_names provenance verify_hash search_log | 供应链威胁检测:仿冒、来源、Sigstore | | quality | 8 | scorecard badge distro compare full | 项目质量:OpenSSF Scorecard、Best Practices Badge、Repology | | license | 3 | lookup batch search | 通过 ClearlyDefined 的许可证合规分析 | | meta | 1 | — | 列出所有数据源及配置状态 |


个体技术(90)

运行 npx supply-chain-mcp-server --list-all 查看完整列表。

| 工具 | 描述 | |------|------| | osv_query | 查询 OSV 数据库中影响特定包和可选版本的已知漏洞 | | osv_query_commit | 查询 OSV 数据库中与特定 git commit hash 关联的漏洞 | | osv_query_purl | 使用 Package URL (purl) 查询 OSV 数据库中的已知漏洞 | | osv_batch | 批量查询 OSV 数据库中多个包的漏洞 | | osv_id | 通过 ID 从 OSV 获取完整漏洞详情(OSV、CVE、GHSA、RUSTSEC、PYSEC 等) |

| 工具 | 描述 | |------|------| | ghsa_id | 通过 GHSA 或 CVE 标识符获取 GitHub 安全公告 | | ghsa_search | 按关键词、生态系统和严重性搜索 GitHub 安全公告 | | ghsa_package | 列出影响特定生态系统中特定包的 GitHub 安全公告 | | ghsa_recent | 列出最近更新的 GitHub 安全公告 |

| 工具 | 描述 | |------|------| | nvd_cve | 通过 CVE ID 从 NVD(NIST 国家漏洞数据库)获取完整 CVE 详情 | | nvd_search | 按关键词和可选的 CVSS v3 严重性搜索 NVD 中的 CVE | | nvd_recent | 获取指定天数内最近发布的 NVD CVE |

| 工具 | 描述 | |------|------| | epss_score | 获取单个 CVE ID 的 EPSS 漏洞利用概率和百分位 | | epss_batch | 单次请求中批量获取多个 CVE 的 EPSS 分数(最多 100 个) | | epss_top | 获取 EPSS 分数最高的 CVE(最有可能被利用的) | | epss_above_threshold | 查找 EPSS 分数高于指定阈值的 CVE |

| 工具 | 描述 | |------|------| | kev_lookup | 检查 CVE 是否在 CISA 已知被利用漏洞 (KEV) 目录中 | | kev_search | 按关键词搜索 KEV 条目(匹配供应商、产品、名称、描述) | | kev_recent | 获取最近 N 天内添加的 KEV 条目 | | kev_stats | 获取 KEV 目录统计:总数、热门供应商、每年条目数和勒索软件使用情况 |

| 工具 | 描述 | |------|------| | npm_package | 获取 npm 包元数据,包括描述、最新版本、维护者、许可证、仓库、主页和发布时间线 | | npm_version | 获取特定 npm 包版本的元数据,包括依赖、分发信息(tarball、shasum、integrity)、脚本和废弃状态 | | npm_downloads | 获取指定时期内 npm 包的下载计数(last-day、last-week、last-month) | | npm_search | 在 npm 注册表中搜索匹配查询字符串的包 | | npm_maintainers | 提取 npm 包的维护者和发布时间线 — 对检测维护者接管攻击至关重要 | | npm_scripts | 提取并分析特定 npm 包版本的生命周期脚本 — 标记常用于供应链攻击的可疑命令(curl、wget、eval、exec 等) | | npm_provenance | 检查 npm 包版本是否有 Sigstore 来源证明和签名 | | npm_audit_bulk | 批量查询一组包和版本的 npm 安全公告 | | npm_attestations | 获取 npm 包版本的完整 Sigstore 证明捆绑包 — 返回 SLSA 来源和发布证明 | | npm_download_range | 获取日期范围内逐日的 npm 下载计数 — 用于检测下载异常或依赖混淆攻击 |

| 工具 | 描述 | |------|------| | pypi_package | 获取 PyPI 包元数据,包括作者、许可证、摘要、项目 URL、分类器和 Python 版本要求 | | pypi_version | 获取特定 PyPI 包版本的元数据,包括发布 URL 和上传时间、文件大小、摘要和撤回状态 | | pypi_releases | 列出 PyPI 包的所有版本及上传日期、大小和撤回状态 — 用于检测可疑的快速版本升级 | | pypi_maintainers | 提取 PyPI 包的作者和维护者信息 — 用于检测所有权变更 |

| 工具 | 描述 | |------|------| | crate_info | 获取 crates.io crate 元数据,包括描述、下载计数、最大版本、仓库、主页、分类和关键词 | | crate_versions | 列出 crate 的所有版本及版本号、撤回状态、许可证、crate 大小、创建日期和下载计数 | | crate_deps | 获取特定 crate 版本的依赖,包括依赖种类(normal/dev/build)、版本要求和可选标志 | | crate_owners | 列出 crates.io 上 crate 的所有者 — 用于检测所有权变更 |

| 工具 | 描述 | |------|------| | gem_info | 获取 RubyGems gem 元数据,包括名称、版本、作者、描述、下载计数、项目 URI 和源代码 URI | | gem_versions | 列出 RubyGems gem 的所有版本及发布日期、平台信息和版本号 | | gem_search | 在 RubyGems 注册表中搜索匹配查询字符串的 gem | | gem_reverse_deps | 获取 RubyGems gem 的反向依赖 — 用于评估被入侵包的影响范围 |

| 工具 | 描述 | |------|------| | nuget_package | 获取 NuGet 包注册元数据,包括所有版本、依赖组、描述和目录条目 | | nuget_search | 在 NuGet 注册表中搜索匹配查询字符串的包 | | nuget_versions | 列出 NuGet 包的所有已发布版本 | | nuget_catalog_entry | 获取 NuGet 特定版本的详细信息,包括依赖组、描述、许可证和目录元数据 |

| 工具 | 描述 | |------|------| | composer_package | 从 Packagist 获取 PHP/Composer 包元数据,包括版本、描述、维护者和仓库信息 | | composer_search | 在 Packagist 中搜索匹配查询字符串的 PHP 包 | | composer_stats | 获取 Packagist 包下载统计,包括总计、月度和每日下载计数 | | composer_advisories | 获取 Packagist 中 PHP 包的安全公告 — 返回已知漏洞和 CVE |

| 工具 | 描述 | |------|------| | go_module | 从模块代理获取 Go 模块信息:最新版本和所有可用版本 | | go_version | 获取特定 Go 模块版本的信息和 go.mod 内容 — 返回解析的依赖列表 | | go_sum | 在校验和数据库 (sum.golang.org) 中查询 Go 模块版本以进行哈希验证 |

| 工具 | 描述 | |------|------| | go_vuln_id | 从 Go 漏洞数据库按 ID 获取 Go 漏洞 | | go_vuln_list | 列出数据库索引中所有 Go 漏洞 ID | | go_vuln_db_info | 获取 Go 漏洞数据库元数据,包括最后修改时间 | | go_vuln_by_module | 查找影响特定模块的 Go 漏洞 |

| 工具 | 描述 | |------|------| | deps_package | 在 deps.dev 上查找包以获取元数据、版本和安全信息 | | deps_version | 从 deps.dev 获取特定包版本的详细信息,包括链接、许可证和公告 | | deps_dependencies | 从 deps.dev 获取特定包版本的依赖树 | | deps_dependents | 获取依赖于 deps.dev 上特定包版本的包 | | deps_advisory | 从 deps.dev 按密钥获取安全公告(如 GHSA-xxxx-xxxx-xxxx) | | deps_project | 通过仓库 URL 从 deps.dev 获取项目信息 | | deps_query | 通过 SHA256 artifact hash 在 deps.dev 上查找包 | | deps_requirements | 从 deps.dev 获取特定包版本的依赖要求(版本约束) | | deps_similar_packages | 在 deps.dev 上查找相似名称的包用于仿冒检测 | | deps_purl_lookup | 通过 Package URL (purl) 在 deps.dev 上查找包 |

| 工具 | 描述 | |------|------| | scorecard_repo | 获取 GitHub 仓库的 OpenSSF Scorecard 安全分数,包括各项检查结果 | | scorecard_compare | 并排比较 2-5 个 GitHub 仓库的 OpenSSF Scorecard 安全分数 |

| 工具 | 描述 | |------|------| | badge_project | 通过 ID 获取项目的 OpenSSF Best Practices badge 状态和标准 | | badge_search | 搜索 OpenSSF Best Practices badge 项目 | | badge_by_repo | 通过 GitHub 仓库 URL 查找 OpenSSF Best Practices badge |

| 工具 | 描述 | |------|------| | libraries_package | 从 Libraries.io 获取包元数据,包括仓库信息、版本和受欢迎度指标 | | libraries_deps | 从 Libraries.io 获取特定包版本的依赖 | | libraries_dependents | 获取依赖于 Libraries.io 上特定包的包 | | libraries_sourcerank | 从 Libraries.io 获取包的 SourceRank 质量分数明细 |

| 工具 | 描述 | |------|------| | license_lookup | 从 ClearlyDefined 获取软件组件的策展许可证数据 | | license_batch | 通过 ClearlyDefined 批量许可证查询多个组件 | | license_search | 在 ClearlyDefined 中按模式搜索组件 |

| 工具 | 描述 | |------|------| | rekor_search | 通过邮箱、SHA256 哈希或公钥指纹搜索 Rekor 透明日志 | | rekor_entry | 通过 UUID 检索特定 Rekor 透明日志条目,包括正文、证明和包含证明 | | rekor_log_info | 获取当前 Rekor 透明日志状态,包括 rootHash、treeSize 和 signedTreeHead | | rekor_entries_search | 通过 UUID 或日志索引在单次请求中检索多个 Rekor 日志条目 | | rekor_verify | 验证 SHA256 artifact hash 是否已记录在 Rekor 透明日志中 |

| 工具 | 描述 | |------|------| | repology_project | 从 Repology 获取跨所有 Linux 发行版的包版本 | | repology_problems | 查找 Repology 上仓库的打包问题 | | repology_search | 在 Repology 中按名称搜索项目 |

| 工具 | 描述 | |------|------| | typosquat_check | 检查包名是否与热门包可疑地相似(潜在仿冒)— 返回编辑距离 <= 2 的匹配 | | typosquat_compare | 直接比较两个包名以评估仿冒风险,显示编辑距离、相似度百分比、字符级差异和易混淆字符警告 |

| 工具 | 描述 | |------|------| | supplychain_list_sources | 列出所有 21 个供应链安全数据源及配置状态、API 密钥状态和工具计数 |


CLI 使用

# 列出 7 个复合工具
npx supply-chain-mcp-server --list

# 列出所有 90 种个体技术
npx supply-chain-mcp-server --list-all

# 运行复合工具
npx supply-chain-mcp-server --tool vuln_scan '{"mode":"cve","cve_id":"CVE-2024-3094"}'
npx supply-chain-mcp-server --tool vuln_scan '{"mode":"package","ecosystem":"npm","name":"express"}'
npx supply-chain-mcp-server --tool package_info '{"ecosystem":"npm","name":"express","version":"4.21.2"}'
npx supply-chain-mcp-server --tool security_check '{"mode":"typosquat","name":"reqeusts","ecosystem":"pypi"}'
npx supply-chain-mcp-server --tool quality '{"mode":"scorecard","owner":"expressjs","repo":"express"}'
npx supply-chain-mcp-server --tool dep_tree '{"mode":"dependencies","ecosystem":"npm","name":"express","version":"4.21.2"}'

# 个体技术也可使用(向后兼容)
npx supply-chain-mcp-server --tool osv_query '{"ecosystem":"npm","name":"express"}'
npx supply-chain-mcp-server --tool epss_score '{"cve_id":"CVE-2024-3094"}'

数据源(21)

| 来源 | 认证 | 速率限制 | 提供的数据 | |------|------|---------|-----------| | OSV.dev | 无 | 1 请求/秒 | 跨生态系统漏洞数据库(npm、PyPI、Go、Rust 等) | | GitHub Advisory Database | 可选 | 1 请求/秒 | GitHub 跟踪的包的安全公告 | | NIST NVD | 可选 | 5 请求/30秒(有密钥 50) | CVE 详情、CVSS 分数、CPE 匹配、关键词搜索 | | FIRST EPSS | 无 | 2 请求/秒 | 漏洞利用预测评分系统 — CVE 被利用概率 | | CISA KEV | 无 | 0.5 请求/秒 | 已知被利用漏洞目录及修复截止日期 | | npm Registry | 无 | 2 请求/秒 | 包元数据、版本、脚本、来源、证明、公告 | | PyPI | 无 | 2 请求/秒 | Python 包元数据、版本、发布、维护者信息 | | crates.io | 无 | 1 请求/秒 | Rust crate 元数据、版本、依赖、所有者 | | RubyGems | 无 | 1 请求/秒 | Ruby gem 元数据、版本、反向依赖 | | NuGet | 无 | 2 请求/秒 | .NET 包元数据、版本、依赖组 | | Packagist | 无 | 1 请求/秒 | PHP/Composer 包、下载统计、安全公告 | | Go Module Proxy | 无 | 2 请求/秒 | Go 模块版本、go.mod 内容、校验和验证 | | Go Vulnerability Database | 无 | 2 请求/秒 | Go 特有的按模块漏洞公告 | | Google deps.dev | 无 | 5 请求/秒 | 跨生态系统依赖图、公告、项目信息、purl 查询 | | OpenSSF Scorecard | 可选 | 1 请求/秒 | 仓库安全评分,涵盖 18 项检查 | | OpenSSF Best Practices | 无 | 1 请求/秒 | Best Practices badge 状态和标准 | | Libraries.io | LIBRARIES_API_KEY | 1 请求/秒 | 包受欢迎度、SourceRank、跨平台依赖数据 | | ClearlyDefined | 无 | 2 请求/秒 | 跨生态系统策展许可证数据 | | Sigstore Rekor | 无 | 2 请求/秒 | 软件签名透明日志 — 来源验证 | | Repology | 无 | 1 请求/秒 | 跨 Linux 发行版的包版本 | | Typosquatting Detection | 无 | N/A | 内置 Levenshtein 距离 + 易混淆字符分析 |


架构

src/
  index.ts                # CLI 入口(--help、--list、--list-all、--tool、stdio 服务器)
  composite/              # 7 个复合工具(MCP 注册)
    helpers.ts            # callTool()、callToolsParallel()、buildCompositeResponse()、TOOL_REGISTRY
    vuln-scan.ts          # vuln_scan — 24 种技术(5 种模式)
    package-info.ts       # package_info — 33 种技术(7 个生态系统)
    dep-tree.ts           # dep_tree — 14 种技术(6 种模式)
    security-check.ts     # security_check — 7 种技术(5 种模式)
    quality.ts            # quality — 8 种技术(5 种模式)
    license.ts            # license — 3 种技术(3 种模式)
    meta.ts               # meta — 1 种技术
    index.ts              # compositeTools 统一导出
  protocol/
    mcp-server.ts         # MCP 服务器设置(stdio 传输)
    tools.ts              # 工具注册表 — 导入 compositeTools
  types/
    index.ts              # 共享类型(ToolDef、ToolContext、ToolResult)
  utils/
    rate-limiter.ts       # 按提供者的速率限制器
    cache.ts              # API 响应的 TTL 缓存
    http.ts               # 原生 fetch() 封装及错误处理
    require-key.ts        # API 密钥验证辅助
  osv/                    # 5 种技术    govuln/        # 4 种技术
  ghsa/                   # 4 种技术    depsdev/       # 10 种技术
  nvd/                    # 3 种技术    scorecard/     # 2 种技术
  epss/                   # 4 种技术    badge/         # 3 种技术
  kev/                    # 4 种技术    libraries/     # 4 种技术
  npm/                    # 10 种技术   clearlydefined/# 3 种技术
  pypi/                   # 4 种技术    rekor/         # 5 种技术
  crates/                 # 4 种技术    repology/      # 3 种技术
  rubygems/               # 4 种技术    typosquat/     # 2 种技术
  nuget/                  # 4 种技术    meta/          # 1 种技术
  packagist/              # 4 种技术
  go/                     # 3 种技术

设计决策:

  • 复合架构 — 7 个复合工具在 MCP 注册,每个编排多种个体技术。LLM 上下文从约 12K tokens(90 个工具定义)减少到约 1K tokens(7 个复合工具)。
  • 22 个提供者,1 个服务器 — 每个数据源都是独立模块。复合工具根据模式/生态系统分发到正确的提供者技术。
  • 按提供者速率限制 — 每个数据源都有自己的 RateLimiter 实例,针对该 API 的限制进行校准。无共享瓶颈。
  • TTL 缓存 — 漏洞数据(5-30分钟)、包元数据(5-15分钟)、KEV 目录(60分钟)、scorecard 数据(30分钟)被缓存,以避免多工具工作流中的冗余 API 调用。
  • 优雅降级 — 缺少 API 密钥不会导致服务器崩溃。工具返回描述性错误消息:"Set LIBRARIES_API_KEY to enable Libraries.io tools."
  • 2 个依赖@modelcontextprotocol/sdkzod。所有 HTTP 通过原生 fetch()。无需外部 HTTP 库。
  • 向后兼容--tool CLI 接受复合和个体技术名称。--list-all 显示所有 90 种技术。

限制

  • Libraries.io 工具需要来自 libraries.io 的(免费)API 密钥
  • NVD 免费层限制为 5 请求/30秒(有 API 密钥为 50)
  • GHSA 和 Scorecard 使用 GITHUB_TOKEN 可获得更高速率限制
  • CISA KEV 作为单个 JSON 文件(约 2MB)获取,缓存 60 分钟
  • 仿冒检测与热门 npm/PyPI 包的策展列表进行比较(非详尽)
  • Go 校验和数据库 (sum.golang.org) 对于非常旧的或仅供 vendor 使用的模块可能返回 404
  • Repology API 有严格的速率限制,可能会节流激进的查询
  • ClearlyDefined 覆盖范围因生态系统而异 — npm 和 Maven 覆盖最好
  • macOS / Linux 已测试(Windows 未测试)

MCP 安全套件

| 项目 | 领域 | 工具 | |------|------|------| | hackbrowser-mcp | 基于浏览器的安全测试 | 39 工具,Firefox,注入测试 | | cloud-audit-mcp | 云安全(AWS/Azure/GCP) | 38 工具,60+ 检查 | | github-security-mcp | GitHub 安全态势 | 39 工具,45 检查 | | cve-mcp | 漏洞情报 | 23 工具,5 来源 | | osint-mcp-server | OSINT 与侦察 | 37 工具,12 来源 | | darknet-mcp-server | 暗网与威胁情报 | 66 工具,16 来源 | | fingerprint-mcp | 数字指纹 | 13 工具,103 技术 | | supply-chain-mcp-server | 软件供应链安全 | 7 工具,90 技术,21 来源 |