mcpField
P
pkgdiet

pkgdiet

本地服务
github.com/om-tajne开发工具51 天前更新

关于 pkgdiet

pkgdiet 是面向使用 AI 编码 Agent 的 JavaScript 和 TypeScript 项目的依赖策略 CLI 与本地 MCP 服务。它依据共享的仓库策略评估包,并可拦截安装命令或在 CI 中执行策略。

主要功能

  1. 01npm 包策略检查
  2. 02通过 Agent 钩子拦截安装
  3. 03依赖健康与体积审计
  4. 04GitHub Actions 策略门禁
  5. 05替代包建议

适用场景

  1. 01阻止安装已弃用或有漏洞的包
  2. 02审核编码 Agent 提议的依赖
  3. 03合并 PR 前检查新增包

MCP 相关

本地 MCP 服务提供 `check_dependency`,返回策略判定,并通过 `suggest_alternative` 提供包替代方案。

配置

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

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

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

安装包
npmpkgdiet1.2.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🥗 PkgDiet

面向 AI 辅助 JavaScript 和 TypeScript 开发的依赖策略。
给你的 node_modules 减减负。

npm 版本 npm 下载量 经 PkgDiet 审计

CI 状态 Node.js TypeScript GitHub 问题 欢迎提交 PR 许可证

由 MCP 提供支持 Glama MCP 服务 已在 mcpservers.org 收录

GitHub 星标

问题: AI 编码 Agent(Claude Code、Codex、Cursor、Windsurf、Cline)会推荐不存在、已弃用、存在漏洞或名称仿冒的包。没有内置机制可以阻止它们执行安装操作。

解决方案: PkgDiet 使用原生 Agent 钩子 API,拦截 AI Agent 生成的每条 npm install / pnpm add / yarn add 命令,并在执行前阻止未经批准的安装。


🔒 实测演示

运行以下命令,查看 PkgDiet 如何在终端中拦截真实且有风险的 AI 生成依赖:

npx [email protected] demo

输出示例:

🔒 PkgDiet — Live AI Dependency Enforcement Demo
   Simulating what happens when an AI agent tries to install these packages.

🟡  WARNING — moment
   Context:   AI suggested this for date formatting
   Score:     100/100
   Reason:    Efficiency Flag: Better alternatives exist for moment.
   Use this:  dayjs, date-fns

🔴  BLOCKED — request
   Context:   AI suggested this for HTTP requests
   Score:     15/100
   Reason:    Health score 15 is below minimum allowed (60).
   Use this:  undici, native fetch
   CVEs:      GHSA-p8p7-x288-28g6

   🔒 PkgDiet blocked this risky AI-generated dependency before install.

🔴  BLOCKED — node-uuid
   Context:   AI suggested this for UUID generation
   Score:     15/100
   Reason:    Health score 15 is below minimum allowed (60).
   Use this:  crypto.randomUUID(), uuid

   🔒 PkgDiet blocked this risky AI-generated dependency before install.

🟡  WARNING — lodash
   Context:   AI suggested this for array utilities
   Score:     80/100
   Reason:    Efficiency Flag: Better alternatives exist for lodash.
   Use this:  lodash-es, native JS

📊 Demo Summary: 2 blocked, 2 warned
   These checks run automatically before every npm install in your AI agent.
   Setup: npx [email protected] init

查看机器可读的 CI 证明:

npx [email protected] demo --json

🚀 一条命令完成设置

npx [email protected] init

这条命令会创建以下文件:

文件用途
.pkgdietrc.json仓库依赖策略
.github/workflows/pkgdiet.ymlGitHub Actions CI 门禁
.cursor/mcp.jsonCursor MCP 服务
.cursor/rules/pkgdiet.mdcCursor 始终应用的强制执行规则
.cursorrulesCursor 提示性规则(旧版)
.windsurfrulesWindsurf 提示性规则
cline_mcp_settings.jsonCline MCP 服务
.github/mcp.jsonGitHub Copilot MCP
CLAUDE.mdClaude Code 提示性规则
.claude/settings.jsonClaude Code PreToolUse 钩子注册
.claude/hooks/pkgdiet-install-guard.shClaude Code bash 安装防护
.codex/hooks.jsonCodex PreToolUse 钩子注册
.codex/hooks/pkgdiet-install-guard.mjsCodex Node.js 安装防护

🛡️ Agent 强制执行

PkgDiet 使用各 Agent 的原生钩子 API来阻止安装,而不只是提供建议规则:

Agent强制执行机制阻止的操作
Claude CodePreToolUse bash hook (.claude/hooks/)执行前阻止 npm/pnpm/yarn install
Codex (OpenAI)PreToolUse Node.js hook (.codex/hooks/)执行前阻止 npm/pnpm/yarn install
CursorMDC alwaysApply 规则 + MCP check_dependency阻止 AI 编写安装命令
Windsurf.windsurfrules + MCP check_dependency阻止 AI 编写安装命令
ClineMCP check_dependency通过工具调用在安装前阻止
GitHub CopilotMCP check_dependency通过工具调用在安装前阻止
CI (GitHub Actions)pkgdiet ci 门禁如果任何新增软件包违反策略,则阻止合并 PR

PreToolUse 钩子的工作原理: 当 Claude Code 或 Codex 生成包含 npm install 的 Bash 工具调用时,注册的钩子脚本会先运行。如果 PkgDiet 返回非零退出代码,Agent 会看到拒绝原因并中止安装——该命令不会运行。


🔄 3 阶段策略循环

PkgDiet 使用共享核心引擎(@pkgdiet/core),确保所有接口都应用相同的评估逻辑。

  1. 仓库策略: 单个 .pkgdietrc.json 文件决定项目中允许、警告或阻止哪些操作。
  2. Agent 钩子(强制执行): Claude Code 和 Codex 的原生 PreToolUse 钩子会在安装命令执行前拦截命令。MCP check_dependency 会在其他 Agent 编写命令前向其发出指示。
  3. CI 门禁(回退机制): npx pkgdiet ci 在 GitHub Actions 中运行,将 package.json 与基准提交进行比较;如果任何新增软件包违反策略,就会使 PR 检查失败。

🛠️ CLI 命令

Commands:
  audit           Audit existing dependencies for policy, health, size, and unused-package signals
  check           Evaluate npm packages against this repository's dependency policy
  demo            Show live proof that PkgDiet blocks risky AI-generated dependencies before install
  mcp             Start the MCP JSON-RPC server over stdio for MCP-compatible AI coding agents
  ci              Enforce policy for dependency changes introduced by this branch
  init            Set up PkgDiet — creates policy, CI workflow, and all AI agent configs
  agent-setup     Configure PkgDiet for AI coding agents (codex, cursor, claude-code, ...)
  alternatives    Browse the PkgDiet alternatives dataset
  drift           Scan project for dependency health drift over time
  policy-check    Validate the repository's .pkgdietrc.json policy

⚙️ 配置(.pkgdietrc.json)

{
  "minHealthScore": 70,
  "warnHealthScore": 80,
  "blockDeprecated": true,
  "blockKnownVulnerabilities": true,
  "blockTyposquats": false,
  "requirePinnedVersions": true,
  "maxPackageSizeBytes": 15728640,
  "failOn": "BLOCK",
  "securityMode": "fail-open",
  "blockedPackages": ["moment", "request"],
  "internalNamePrefixes": [],
  "environments": {
    "ci": { "minHealthScore": 80, "failOn": "BLOCK", "securityMode": "fail-closed" },
    "dev": { "minHealthScore": 60, "failOn": "BLOCK", "securityMode": "fail-open" }
  }
}

🤖 MCP 集成

PkgDiet 可作为本地模型上下文协议(MCP)服务运行。

AI 编码 Agent 连接到 PkgDiet 后,即可使用以下功能:

  • check_dependency:根据本地 .pkgdietrc.json 策略评估 npm 软件包,并返回包含证据的结构化 ALLOW、WARN 或 BLOCK 判定。
  • suggest_alternative:查询 PkgDiet 精选的数据集,为被阻止的软件包寻找现代、更轻量且仍在维护的替代方案。

包含的智能功能(全部免费,无需付费服务):

  • OSV 漏洞数据库——检查软件包版本是否存在已知 CVE
  • npm 注册表来源验证——验证已签名的 npm 证明
  • Typosquat 检测——与 15 个以上热门软件包名称进行编辑距离比对
  • Lockfile 固定版本验证——要求 CI 中使用精确的版本固定
  • 依赖混淆检测——阻止在公共注册表中发现的内部前缀软件包

🔗 文档与支持

评论

支持 Markdown

第一次接触 MCP?

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

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