mcpField
P
palanit-core

palanit-core

ローカル
github.com/stasxrセキュリティ01 週間前に更新

palanit-core について

Palanit Coreは、MCPサーバー設定とAIエージェントのツールマニフェストをローカルで検査するスキャナーです。不正な説明文や秘密情報、定義の変更などを検出し、CIやMCPサーバーとしても利用できます。

主な機能

  1. 01MCP設定とツールマニフェストをスキャン
  2. 02指示の注入やデータ流出を検出
  3. 03秘密情報、シェル実行、バージョン固定を確認
  4. 04ツール定義を固定し後の変更を検出
  5. 05CI向けの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 エージェントのための監視塔。

MCP サーバーと AI エージェントのツールマニフェストをスキャンし、攻撃者に見つかる前に隠れたリスクを検出します。

ウェブサイト · ドキュメント · Palanit OS(ホスト版)

PyPI Python License CI


AI エージェントは、自分で作成していないツール、MCP サーバー、スキルを信頼しています。ツールの 説明はモデルのコンテキストにそのまま挿入されるため、汚染された 説明によって、エージェントにひそかにキーを漏えいさせたり、攻撃者の サーバーを呼び出させたり、シェルコマンドを実行させたりできます。Palanit Core は、エージェントと 同じようにすべてのツールを読み、エージェントを裏切る可能性のあるものにフラグを立てます。

  • 依存関係ゼロ。 純粋な 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)

ラグプルを検出する(ツール定義のピン留め)

インストール時のスキャンでは、承認したツールのテキストしか確認できません。悪意のあるサーバーは その承認後にツールの説明や入力スキーマを差し替えることができ、 標準のクライアントは再確認しません。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高ツールやスキーマの説明に隠された、または挿入された指示
PL-EXFIL-001中〜重大エージェントに外部 URL へのデータ送信を促すツールテキスト
PL-SECRET-001高ハードコードされた API キー、トークン、秘密鍵
PL-UNICODE-001中〜高指示を隠すために使われる不可視文字、または双方向 Unicode
PL-SUPPLY-001中ピン留めされていない、または浮動するパッケージバージョン(@latest、名前のみの指定)
PL-SHELL-001中〜高シェルを起動するツール(bash -c、cmd /c、…)
PL-TLS-001低〜中TLS を使わない http:// / ws:// のエンドポイント
PL-COLLIDE-001中別のツールをシャドーイングできる重複したツール名
PL-ENV-001高サーバーの env ブロック内の平文シークレット
PL-DRIFT-001高承認後に変更されたツール定義――インストール後の「ラグプル」(--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 サーバーとして実行できるため、エージェントまたは 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" }
  }
}

バッジを追加する

MCP サーバーを Palanit Core でスキャンしましたか?そのことを表示しましょう。

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)は、実環境にテストトラフィックを送信します。**ご自身が所有するシステム、またはテストの 許可を得ているシステムのみをスキャンまたはテストしてください。**スキャンで問題が見つからなくても、 リスクが軽減されるだけで、安全性が証明されるわけではありません。

CLI のその先へ

  • Palanit OS — 同じエンジンをブラウザーで利用できるほか、継続的な監視、変更アラート、共有可能なレポートにも対応しています。
  • Palanit Bot Killer — 悪意のある AI クローラーをブロックし、botprobe でご自身のチャットボットをレッドチームテストできます。

ライセンス

Apache-2.0 © Stanislav Miziyev。コントリビューションを歓迎します。CONTRIBUTINGをご覧ください。

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。