Palanit Core

io.github.stasxr由 GitHub 账号 stasxr 发布v0.1.3更新于 Oct 28, 2026

Scan MCP servers and agent tool manifests for poisoning, exfiltration, secrets and supply-chain risk

发布方自己的服务:core.blue

已验证STDIO仅桌面开发者工具安全与监控

概览

AI 生成的概览

以本地 MCP 服务器形式运行,扫描 MCP 配置与智能体工具清单中的投毒、外泄、密钥泄露和供应链风险。

可以做什么
  • 扫描 MCP 配置与工具清单,检查隐藏指令、诱导外泄、硬编码密钥、隐形 Unicode、未固定版本、启动 shell、明文端点与重名工具
  • 列出内置检测规则及其严重级别
  • 返回工具版本信息
  • 也可通过命令行运行同样的检查,支持 JSON 输出与 CI 失败阈值,并可固定已批准的工具定义以发现后续改动
适用场景
适合在安装或审查第三方 MCP 服务器与智能体工具时,让助手先检查其定义是否可信;也适合把检查放进 CI 或 pre-commit 钩子中重复执行。
运行要求
需要本地 Python 环境,安装带 mcp 附加组件的 palanit-core 包,并以 palanit-mcp 通过 stdio 启动。未声明账号、API 密钥或环境变量。只读取你指定的配置或清单文件。
安装前请注意
它会读取你提供的配置与清单文件,其中 env 块可能含有明文密钥;检测结果基于规则,扫描通过只能降低风险,不能证明安全。仅扫描你拥有或获授权测试的系统。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Palanit Core,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Palanit Core

A watchtower for AI agents.

Scan MCP servers and AI-agent tool manifests for hidden risk — before an attacker finds it.

Website · Docs · Palanit OS (hosted)

[PyPI] [Python] [License] [CI]


Your AI agent trusts tools, MCP servers and skills it didn't write. A tool's description is injected straight into the model's context — so a poisoned description can quietly tell your agent to leak a key, call an attacker's server, or run a shell command. Palanit Core reads every tool the way your agent will, and flags the ones that would betray it.

  • Zero dependencies. Pure Python standard library. Nothing to audit but the rules.
  • Fast & local. Runs on your machine. Sends nothing anywhere.
  • CI-ready. Exits 1 on HIGH+ findings, so a poisoned tool fails the build.
  • Open & honest. Every rule is readable. Severities reflect real impact, not upsell.

Install

bash
pip install palanit-core

Use

bash
# Scan an MCP config or tool manifestpalanit scan mcp.config.json
# See it in action on the bundled malicious samplepalanit scan --sample
# Machine-readable output, fail CI on HIGH or abovepalanit 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.jsonpalanit scan mcp.config.json --baseline .palanit.lock.json

Example (trimmed):

 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)

Catch rug-pulls (tool-definition pinning)

A scan at install time only sees the tool text you approved. A hostile server can swap a tool's description or input schema after that approval — and standard clients never re-check. palanit pin records a hash of each tool's declared definition; a later scan --baseline fails closed on any change, so a swap costs the attacker the tool instead of silently succeeding.

bash
palanit pin mcp.config.json                                  # approve current definitionspalanit scan mcp.config.json --baseline .palanit.lock.json   # HIGH + exit 1 on any drift

What it detects

RuleSeverityWhat it catches
PL-POISON-001HIGHHidden / injected instructions in tool & schema descriptions
PL-EXFIL-001MED–CRITTool text that steers the agent to send data to external URLs
PL-SECRET-001HIGHHardcoded API keys, tokens and private keys
PL-UNICODE-001MED–HIGHInvisible / bidirectional Unicode used to hide instructions
PL-SUPPLY-001MEDIUMUnpinned / floating package versions (@latest, bare names)
PL-SHELL-001MED–HIGHTools that launch a shell (bash -c, cmd /c, …)
PL-TLS-001LOW–MEDEndpoints over http:// / ws:// without TLS
PL-COLLIDE-001MEDIUMDuplicate tool names that let one shadow another
PL-ENV-001HIGHLiteral secrets in a server's env block
PL-DRIFT-001HIGHA tool's definition changed since you approved it — a post-install "rug pull" (only with --baseline)

Run palanit rules to list them. Inputs understood: Claude-style mcpServers configs, servers configs, tools manifests, a bare list of tools, or a single tool object. Unknown JSON still gets string-level checks.

Use it as a GitHub Action

yaml
# .github/workflows/palanit.ymlname: palaniton: [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

Prefer plain steps? That works too:

yaml
      - uses: actions/setup-python@v5        with: { python-version: "3.12" }      - run: pip install palanit-core      - run: palanit scan mcp.config.json --fail-on HIGH

Use it as a pre-commit hook

yaml
# .pre-commit-config.yamlrepos:  - repo: https://github.com/stasxr/palanit-core    rev: v0.1.2    hooks:      - id: palanit            # scans mcp*.json / claude_desktop_config.json by default

Use it as an MCP server

Palanit Core can itself run as an MCP server, so an agent or MCP client (Claude Desktop, Cursor, Cline, …) can scan a config on demand:

bash
pip install "palanit-core[mcp]"palanit-mcp          # stdio transport

Exposes the tools scan_mcp_config, list_rules and version. Example client entry:

json
{  "mcpServers": {    "palanit": { "command": "palanit-mcp" }  }}

Add the badge

Scanned your MCP server with Palanit Core? Show it:

[Scanned with Palanit Core]

markdown
[![Scanned with Palanit Core](https://img.shields.io/badge/scanned%20with-Palanit%20Core-5b8def)](https://github.com/stasxr/palanit-core)

Responsible use

Palanit Core only reads files you give it — but the broader PALANIT suite (botprobe) sends live test traffic. Only scan or test systems you own or are authorized to test. A clean scan reduces risk; it does not prove safety.

Beyond the CLI

  • Palanit OS — the same engine in your browser, plus continuous monitoring, change alerts and shareable reports.
  • Palanit Bot Killer — block hostile AI crawlers and red-team your own chatbot with botprobe.

License

Apache-2.0 © Stanislav Miziyev. Contributions welcome — see CONTRIBUTING.

mcp-name: io.github.stasxr/palanit-core

来源:README.md,提交 bec464a

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:该软件包类型无法在沙箱中运行。

版本历史

2
  1. v0.1.3最新Oct 21, 2026
  2. v0.1.2Oct 17, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Core 集成