Token导航 LogoToken导航TokenDH.com
Safe Pkgs logo
安全风控stdio官方级别未说明来源级核验

Safe Pkgs

MCP Server

safe-pkgs是一个用于AI代理在安装前检查包安全性的工具,提供允许/拒绝决策、风险评分和审计日志功能。

工具数

2

提示词数

0

GitHub Stars

6

资源数

0
RustClaude风险管理Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

math280h

提供方

math280h

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install zensical

详细介绍

安全包装

Package safety checks for AI agents before install.

Rust MCP server + CLI with allow/deny decisions, risk scoring, and audit logs.

Documentation · GitHub Action

Without safe-pkgs With safe-pkgs

它是什么

safe-pkgs 在依赖操作之前检查包风险,并返回一个机器可执行的决策。

决策有效载荷包括:

  • allow: truefalse
  • risk: low | medium | high | critical
  • reasons:人类可读的发现
  • evidence:结构化调查结果(kind,稳定 id, severity, message, facts)
  • metadata:包上下文(最新、发布日期、下载、公告)
  • fingerprints:确定性哈希(config, policy)

60秒内安装+运行

安装一次:

cargo install --path . --locked

运行MCP服务器:

safe-pkgs serve

执行一次性审核:

safe-pkgs audit /path/to/project-or-lockfile
safe-pkgs audit /path/to/requirements.txt --registry pypi

Windows MCP主机(Claude Desktop等)应使用:

safe-pkgs-mcp.exe

无需订阅

safe-pkgs 不需要付费计划、托管帐户或API密钥进行内置检查。

  • 作为Rust二进制文件(MCP服务器或CLI)在本地运行。
  • 默认情况下使用公共包/咨询端点:

- npm注册表+npm下载API+npm流行指数 - crates.io API - PyPI JSON API+pypistats+top-PyPI索引 - API OSV咨询

  • 在您的计算机上本地存储缓存和审核日志。

注册和检查支持

支持的注册表:

  • npm (默认)
  • cargo (crates.io)
  • pypi (Python包)

查看支持图:

  • 命令: safe-pkgs support-map

配置

全局文件:

  • ~/.config/safe-pkgs/config.toml

项目覆盖:

  • .safe-pkgs.toml (合并到全局之上)

最小示例:

min_version_age_days = 7
min_weekly_downloads = 50
max_risk = "medium"

[cache]
ttl_minutes = 30

[allowlist]
packages = ["my-internal-pkg"]

[denylist]
packages = ["event-stream@3.3.6"]

完整配置架构:

  • docs/configuration-spec.md

MCP配置示例

macOS/Linux:

{
  "servers": {
    "safe-pkgs": {
      "type": "stdio",
      "command": "/path/to/safe-pkgs",
      "args": ["serve"]
    }
  },
  "inputs": []
}

Windows(无控制台窗口):

{
  "servers": {
    "safe-pkgs": {
      "type": "stdio",
      "command": "safe-pkgs-mcp.exe"
    }
  },
  "inputs": []
}

决策输出示例

{
  "allow": true,
  "risk": "low",
  "reasons": [
    "lodash@3.10.1 is 1 major version behind latest (4.17.21)"
  ],
  "evidence": [
    {
      "kind": "check",
      "id": "staleness.behind_latest",
      "severity": "low",
      "message": "lodash@3.10.1 is 1 major version behind latest (4.17.21)",
      "facts": {
        "package_name": "lodash",
        "resolved_version": "3.10.1",
        "latest_version": "4.17.21",
        "major_gap": 1
      }
    }
  ],
  "fingerprints": {
    "config": "c7d9f5b8b9a8f2a9f6b1f42f0e8e8c8a63f2b2ef8fdde1f3cd9ea4f5a2c08a0b",
    "policy": "fca103ee4fd5b86595a6a6e933f8a5f87db0ce087f80744dc1ea9cdbf58f7a6f"
  },
  "metadata": {
    "latest": "4.17.21",
    "requested": "3.10.1",
    "published": "2015-08-31T00:00:00Z",
    "weekly_downloads": 45000000
  }
}

锁文件审核输出示例(dependency_ancestry)

输入锁文件(package-lock.json)用于此示例:

{
  "name": "demo",
  "lockfileVersion": 2,
  "dependencies": {
    "react": {
      "version": "18.2.0",
      "dependencies": {
        "loose-envify": {
          "version": "1.4.0"
        }
      }
    }
  }
}

审计输出:

{
  "allow": true,
  "risk": "low",
  "total": 2,
  "denied": 0,
  "packages": [
    {
      "name": "react",
      "requested": "18.2.0",
      "allow": true,
      "risk": "low",
      "reasons": [],
      "evidence": []
    },
    {
      "name": "loose-envify",
      "requested": "1.4.0",
      "allow": true,
      "risk": "low",
      "reasons": [],
      "evidence": [],
      "dependency_ancestry": {
        "paths": [
          { "ancestors": ["react"] }
        ]
      }
    }
  ],
  "fingerprints": {
    "config": "",
    "policy": ""
  }
}

paths[].ancestors 仅列出祖先(根到直接父级),不包括包本身。 对于直接依赖性, dependency_ancestry 省略。

evidence.id 稳定且面向机器:

  • 内置检查: . (例如: staleness.behind_latest)
  • 自定义规则: custom_rule. (例如: custom_rule.low-downloads)
  • 策略/运行时项:显式ID(例如: denylist.package, risk.medium_pair_escalation)

信任和安全态势

  • 故障关闭行为:出现检查/运行时故障,不允许静默安装。
  • 本地审计跟踪:仅附加审计日志以供决策审查。
  • 确定性政策背景:应对措施包括 policy_snapshot_version,配置和策略指纹,以及启用的检查集。
  • 本地缓存:SQLite缓存由策略指纹+TTL到期的包元组键控。

免责声明

safe-pkgs 作为一个MCP工具,AI代理可以在安装软件包之前调用它。然而, 我们不能保证AI代理总是选择调用此工具 --自主选择工具的代理模型可以继续进行软件包安装,而无需调用 check_packagecheck_lockfile 首先,取决于模型、提示上下文和系统提示配置。

如果你的AI代理跳过了 safe-pkgs 当它应该叫它的时候,请 打开一个问题 通过提示和响应,我们可以改进工具描述和使用指导。

路线图

优先计划工作:

现在

  • \[\]内部/私有包名称的依赖性混淆防御
  • \[\]政策模拟模式(what-if)不强制执行
  • \[\]延迟、缓存命中率和注册表错误率的度量/日志模式
  • \[\]支持远程审计存储后端
  • \[\]支持远程配置源(GitHub仓库、HTTP端点等)
  • \[\]对私人登记处的支持

下一步

  • \[\]保单到期豁免
  • \[\]包来源检查(生态系统元数据支持的情况下)
  • \[\]发布商信任信号(帐户年龄、维护者流失、所有权变更)
  • \[x\] 大型锁文件的性能/规模改进:

- \[x\] 可配置的有界并发(默认:5个并行计算) - \[x\] 阻止API速率限制的批间延迟(默认值:100ms) - \[x\] 缓存命中跟踪以提高可见性

  • \[\]其他性能改进(请求合并重复包)

稍后

  • \[\]NVD咨询丰富
  • \[\]可选Snyk咨询提供商
  • \[\]Socket.dev集成
  • \[\]用于CI审计的GitHub Actions集成
  • \[\]注册表驱动的MCP模式和文档生成(单一事实来源)
  • \[\]HTTP流式MCP服务器选项
  • \[\]更多经过验证的编辑器配置示例
  • \[\]用于预提交检查的Git挂钩集成

发展

cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test

覆盖

安装:

rustup component add llvm-tools-preview
cargo install cargo-llvm-cov

摘要:

cargo llvm-cov --workspace --all-features --summary-only

HTML报告:

cargo llvm-cov --workspace --all-features --html

报告路径:

  • target/llvm-cov/html/index.html

本地文档

pip install zensical
zensical serve
注: 此项目现在使用 森西卡尔 而不是MkDocs。 MkDocs 2.0放弃了插件系统,破坏了向后兼容性,没有迁移路径(公告).

确定性评估时钟(可选)

SAFE_PKGS_EVALUATION_TIME 使用RFC3339时间戳强制固定策略评估时间(对重播/调试运行有用):

SAFE_PKGS_EVALUATION_TIME=2026-01-01T00:00:00Z safe-pkgs audit /path/to/project
$env:SAFE_PKGS_EVALUATION_TIME = "2026-01-01T00:00:00Z"
safe-pkgs audit C:\path\to\project

目录标签

目录标签

RustClaude风险管理包安全检查本地部署AI代理工具依赖审计安全决策

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP