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 整合