mcpField
P
palanit-core

palanit-core

本地服务
github.com/stasxr安全01 周前更新

关于 palanit-core

Palanit Core 是本地扫描器,用于检查 MCP 服务配置和 AI Agent 工具清单。它可标记恶意描述、泄露的密钥和定义变更等风险,也可用于 CI 或作为 MCP 服务运行。

主要功能

  1. 01扫描 MCP 配置和工具清单
  2. 02检测注入指令与数据外传风险
  3. 03检查密钥、Shell 调用和版本固定
  4. 04固定工具定义并检测后续变更
  5. 05为 CI 检查提供 JSON 输出

适用场景

  1. 01部署前检查 MCP 配置
  2. 02发现高危风险时让 CI 构建失败
  3. 03验证工具定义是否在批准后发生变化

MCP 相关

Palanit Core 可扫描 MCP 配置,也可自身作为 MCP 服务运行。它通过 stdio 提供 scan_mcp_config、list_rules 和 version。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"stasxr-palanit-core": {
"command": "uvx",
"args": [
"palanit-core"
]
}
}
}
启动命令uvx palanit-core

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

安装包
pypipalanit-core0.1.3

工具

还没有获取到工具列表

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

详细介绍

Palanit Core

AI Agent 的瞭望塔。

扫描 MCP 服务和 AI Agent 工具清单中的隐藏风险——赶在攻击者发现之前。

网站 · 文档 · Palanit OS(托管版)

PyPI Python License CI


你的 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-001HIGH工具和 schema 描述中的隐藏/注入指令
PL-EXFIL-001MED–CRIT引导 Agent 向外部 URL 发送数据的工具文本
PL-SECRET-001HIGH硬编码的 API 密钥、令牌和私钥
PL-UNICODE-001MED–HIGH用于隐藏指令的不可见/双向 Unicode 字符
PL-SUPPLY-001MEDIUM未固定/浮动的软件包版本(@latest、裸名称)
PL-SHELL-001MED–HIGH启动 shell 的工具(bash -c、cmd /c、…)
PL-TLS-001LOW–MED未使用 TLS 的 http:///ws:// 端点
PL-COLLIDE-001MEDIUM允许一个工具遮蔽另一个工具的重复名称
PL-ENV-001HIGH服务 env 块中的明文密钥
PL-DRIFT-001HIGH工具定义自你批准后发生更改——安装后的“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 服务?添加徽章展示:

使用 Palanit Core 扫描

[![Scanned with Palanit Core](https://img.shields.io/badge/scanned%20with-Palanit%20Core-5b8def)](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

评论

支持 Markdown

第一次接触 MCP?

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

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