mcpField
D
dependency-fitness-mcp

dependency-fitness-mcp

本地服务
github.com/TweedBeetle开发工具020 周前更新

关于 dependency-fitness-mcp

dependency-fitness-mcp 是为编码 Agent 提供 npm 依赖健康状况判定的 MCP 服务端。它交叉核对多个数据源,检查弃用、撤回、恶意与过时风险,并在有依据时验证迁移目标。

主要功能

  1. 01判定依赖弃用与撤回状态
  2. 02交叉核对多个数据源
  3. 03推断并验证迁移目标
  4. 04批量审计 package.json 依赖
  5. 05标记恶意或不存在的包

适用场景

  1. 01编码前检查 npm 包是否适用
  2. 02升级依赖前评估迁移风险
  3. 03在 CI 或合并前批量审计依赖

MCP 相关

通过 MCP 暴露单包检查和批量依赖审计工具,向编码 Agent 返回结构化判定及可读摘要。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"tweedbeetle-dependency-fitness": {
"command": "npx",
"args": [
"-y",
"dependency-fitness-mcp"
]
}
}
}
启动命令npx -y dependency-fitness-mcp

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

安装包
npmdependency-fitness-mcp0.1.1

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
packagestring是npm 包名,例如 'request' 或 '@babel/core'
versionstring否确切版本、semver 范围或 dist-tag。不填写则检查当前的 'latest'。

详细介绍

dependency-fitness-mcp — 面向编码 Agent 的 npm 依赖项 适用性评估

这个 npm 包适合作为依赖项吗?如果不适合,我该换用什么?

一个 MCP 服务,可在编码 Agent 编写或升级依赖项之前,为 npm 包提供经交叉验证的适用性评估:

{
  "deprecated": true,
  "yanked": false,
  "malicious": false,
  "superseded_by": { "latest": "14.0.0", "majors_behind": 13, "breaking_boundary": true },
  "safe_migration_target": {
    "package": "uuid",
    "version": "14.0.0",
    "rationale": "Maintainer's deprecation notice recommends 'uuid' (verified present and not deprecated).",
    "confidence": "high"
  },
  "confidence": "high",
  "last_verified": "2026-06-05T18:10:31Z"
}

它整合了四个免费且获准使用的数据源——npm 注册表、Google 的 deps.dev、OSV.dev 和 GitHub——给出一个带置信度评分的答案,并在包已弃用或被取代时推断安全的迁移目标。

为什么要做这个工具(以及它有意不做什么)

“这个包已弃用吗?”已经可以免费查询——deps.dev 会提供该标记,也有一些免费的 MCP 服务可以回答“最新版本是什么?”。这个工具处理的是其他服务都不提供的数据:

  • 推断迁移目标。 当某个包已弃用时,它会解析维护者自己的弃用通知,查找其中提到的后继包,随后验证该后继包确实存在且本身未被弃用,再进行推荐。
  • 交叉验证,而非猜测。 它会综合 npm 注册表和 deps.dev 的弃用信息,发现“误导性弃用”(注册表显示仍在维护,但 GitHub 仓库已归档),并且在信息不一致时标明置信度,而不是捏造答案。
  • 拒绝猜测。 如果某个包已弃用,但无法确认其后继包,它会明确说明这一点(置信度较低),而不是推荐一个看似合理却错误的替代品。错误地建议“改用 X”会导致代码无法正常运行。
  • 防范恶意抢注包名。 对于不存在或凭空捏造的包名,工具会返回明确的“未找到”评估(并检查 OSV 恶意记录),避免 Agent 在不知情的情况下安装虚构的依赖项。

这是一个刻意保持精简的工具:专注于弃用、撤回、取代和迁移的中间环节。免费的现有工具分别覆盖了它的两侧,却留下了这个空缺。

工具

check_package_fitness

评估单个包。输入:package(例如 request、@babel/core),可选的 version(确切版本、semver 范围或 dist-tag;省略时使用 latest)。输出:完整的 Verdict(结构化数据)和易读的摘要。

audit_dependencies

为 CI / 合并前检查提供批量评估。输入:packages(例如 ["[email protected]", "request"]),和/或 package.json 的原始内容。输出: 逐包评估数组及摘要(已弃用 / 恶意 / 存在漏洞 / 落后的包数量)。每次调用最多处理 50 个包。

安装 / 连接

需要 Node ≥ 18。可通过 npx 运行(无需安装),也可全局安装。

Claude Code:

claude mcp add dependency-fitness -- npx -y dependency-fitness-mcp

Claude Desktop / Cursor / 任意 MCP 客户端(mcp.json / claude_desktop_config.json):

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

可选环境变量:GITHUB_TOKEN 可提高 GitHub 速率限制(仅用于交叉检查仓库是否已归档);其他功能均无需密钥。

本地运行 / 开发

npm install
npm run build        # tsc -> dist/
npm test             # vitest (offline, deterministic synthesis tests)
npm run smoke        # live: hits the real registries, prints verdicts
npm run dev          # run the server from source over stdio

如何生成评估结果

        ┌─ npm registry ── per-version `deprecated` string, dist-tags, repo URL  (authoritative)
query ──┼─ deps.dev ────── isDeprecated / deprecatedReason / advisoryKeys        (corroborator)
        ├─ OSV.dev ─────── advisories + MAL-* malicious markers + "fixed in"      (corroborator)
        └─ GitHub ──────── archived flag + last-push recency                       (deceptive-deprecation check)
                    │
                    ▼
   cross-validate deprecation ─→ infer + verify migration target ─→ confidence + warnings ─→ Verdict

npm 是权威数据源;其他数据源用于佐证。如果某个佐证数据源无法访问,confidence 会降低并添加一条 warning——工具绝不会捏造信号。

状态

v0.1 — 轻量、可用,仅支持 npm。这是一次快速的公开验证,旨在确认“通过 MCP 目录提供 Agent 数据端点”这一细分方向能否自然获得用户。 路线图和明确的终止标准见 KILL_CRITERION.md。后续计划(已有文档,尚未实现):支持 PyPI,并通过挖掘高信任度包当前实际依赖的对象,推断事实上的后继包。

许可证

MIT © Christo Wilken / 9592 Solutions UG。公开开发。

评论

支持 Markdown

第一次接触 MCP?

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

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