关于 palanit-core
Palanit Core 是本地扫描器,用于检查 MCP 服务配置和 AI Agent 工具清单。它可标记恶意描述、泄露的密钥和定义变更等风险,也可用于 CI 或作为 MCP 服务运行。
主要功能
- 01扫描 MCP 配置和工具清单
- 02检测注入指令与数据外传风险
- 03检查密钥、Shell 调用和版本固定
- 04固定工具定义并检测后续变更
- 05为 CI 检查提供 JSON 输出
适用场景
- 01部署前检查 MCP 配置
- 02发现高危风险时让 CI 构建失败
- 03验证工具定义是否在批准后发生变化
MCP 相关
Palanit Core 可扫描 MCP 配置,也可自身作为 MCP 服务运行。它通过 stdio 提供 scan_mcp_config、list_rules 和 version。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
你的 AI Agent 信任它没有编写过的工具、MCP 服务和技能。工具的 描述会直接注入模型的上下文——因此,被投毒的描述可以悄悄指使你的 Agent 泄露密钥、调用攻击者的服务,或运行 shell 命令。Palanit Core 会像你的 Agent 一样读取每个工具,并标记出可能背叛它的工具。
- 零依赖。 纯 Python 标准库。除了规则,无需审计其他内容。
- 快速且本地运行。 在你的机器上运行。不会向任何地方发送数据。
- 适用于 CI。 发现
HIGH及以上级别的问题时退出代码为1,让被投毒的工具导致构建失败。 - 开放透明。 每条规则都清晰可读。严重级别反映实际影响,而不是为了推销。
安装
pip install palanit-core
使用
# Scan an MCP config or tool manifest
palanit scan mcp.config.json
# See it in action on the bundled malicious sample
palanit scan --sample
# Machine-readable output, fail CI on HIGH or above
palanit scan mcp.config.json --json --fail-on HIGH
# Pin the tool definitions you approved, then fail closed if a server later
# swaps a description or schema after install (a "rug pull")
palanit pin mcp.config.json
palanit scan mcp.config.json --baseline .palanit.lock.json
示例(已精简):
CRITICAL Possible data exfiltration [PL-EXFIL-001]
Instructs the agent to send sensitive data to an external URL (collector.evil.example).
↳ mcp.config.json#/mcpServers/invoicing/tools/0/description
fix: Remove external URLs and exfiltration verbs from tool text.
HIGH Hidden instructions in tool text [PL-POISON-001]
HIGH Invisible or deceptive Unicode [PL-UNICODE-001]
MEDIUM Unpinned package / runner [PL-SUPPLY-001]
...
9 finding(s) (1 critical · 5 high · 3 medium)
捕捉 rug-pull(工具定义固定)
安装时扫描只能检查你批准的工具文本。恶意服务可以在你批准后
替换工具的描述或输入 schema——而标准客户端不会重新检查。palanit pin 会记录每个工具
声明定义的哈希;之后运行 scan --baseline 时,只要发现任何更改就会默认拒绝,
让攻击者得不偿失:工具会失效,而不是悄无声息地攻击成功。
palanit pin mcp.config.json # approve current definitions
palanit scan mcp.config.json --baseline .palanit.lock.json # HIGH + exit 1 on any drift
检测内容
| 规则 | 严重级别 | 检测内容 |
|---|---|---|
PL-POISON-001 | HIGH | 工具和 schema 描述中的隐藏/注入指令 |
PL-EXFIL-001 | MED–CRIT | 引导 Agent 向外部 URL 发送数据的工具文本 |
PL-SECRET-001 | HIGH | 硬编码的 API 密钥、令牌和私钥 |
PL-UNICODE-001 | MED–HIGH | 用于隐藏指令的不可见/双向 Unicode 字符 |
PL-SUPPLY-001 | MEDIUM | 未固定/浮动的软件包版本(@latest、裸名称) |
PL-SHELL-001 | MED–HIGH | 启动 shell 的工具(bash -c、cmd /c、…) |
PL-TLS-001 | LOW–MED | 未使用 TLS 的 http:///ws:// 端点 |
PL-COLLIDE-001 | MEDIUM | 允许一个工具遮蔽另一个工具的重复名称 |
PL-ENV-001 | HIGH | 服务 env 块中的明文密钥 |
PL-DRIFT-001 | HIGH | 工具定义自你批准后发生更改——安装后的“rug-pull”(仅在使用 --baseline 时) |
运行 palanit rules 查看规则列表。支持的输入:Claude 风格的 mcpServers
配置、servers 配置、tools 清单、工具列表,或单个
工具对象。对于无法识别的 JSON,仍会进行字符串级检查。
将其用作 GitHub Action
# .github/workflows/palanit.yml
name: palanit
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: stasxr/[email protected]
with:
files: "mcp.config.json" # files or globs, space-separated
fail-on: "HIGH" # INFO | LOW | MEDIUM | HIGH | CRITICAL
更喜欢使用普通步骤?也可以:
- uses: actions/setup-python@v5
with: { python-version: "3.12" }
- run: pip install palanit-core
- run: palanit scan mcp.config.json --fail-on HIGH
将其用作 pre-commit 钩子
# .pre-commit-config.yaml
repos:
- repo: https://github.com/stasxr/palanit-core
rev: v0.1.2
hooks:
- id: palanit # scans mcp*.json / claude_desktop_config.json by default
将其用作 MCP 服务
Palanit Core 本身也可以作为 MCP 服务运行,让 Agent 或 MCP 客户端 (Claude Desktop、Cursor、Cline、…)按需扫描配置:
pip install "palanit-core[mcp]"
palanit-mcp # stdio transport
提供 scan_mcp_config、list_rules 和 version 工具。客户端配置示例:
{
"mcpServers": {
"palanit": { "command": "palanit-mcp" }
}
}
添加徽章
使用 Palanit Core 扫描了你的 MCP 服务?添加徽章展示:
[](https://github.com/stasxr/palanit-core)
负责任地使用
Palanit Core 只会读取你提供给它的文件,但 PALANIT 套件中的其他工具(botprobe)会发送实时测试流量。**仅扫描或测试你拥有或获准测试的系统。**扫描结果干净可以降低风险,但不能证明系统安全。
不止命令行
- Palanit OS — 在浏览器中使用同一引擎,并提供持续监控、更改提醒和可分享的报告。
- Palanit Bot Killer — 拦截恶意 AI 爬虫,并使用 botprobe 对你自己的聊天机器人进行红队测试。
许可证
Apache-2.0 © Stanislav Miziyev。欢迎贡献 — 请参阅 CONTRIBUTING。
mcp-name: io.github.stasxr/palanit-core
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。