palanit-core について
Palanit Coreは、MCPサーバー設定とAIエージェントのツールマニフェストをローカルで検査するスキャナーです。不正な説明文や秘密情報、定義の変更などを検出し、CIやMCPサーバーとしても利用できます。
主な機能
- 01MCP設定とツールマニフェストをスキャン
- 02指示の注入やデータ流出を検出
- 03秘密情報、シェル実行、バージョン固定を確認
- 04ツール定義を固定し後の変更を検出
- 05CI向けのJSON出力
活用シーン
- 01デプロイ前にMCP設定を検査
- 02重大なリスクの検出時にCIビルドを失敗させる
- 03承認後にツール定義が変わっていないか確認
MCP 対応
Palanit CoreはMCP設定をスキャンでき、自身もMCPサーバーとして動作します。stdio経由でscan_mcp_config、list_rules、versionを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Palanit Core
AI エージェントのための監視塔。
MCP サーバーと AI エージェントのツールマニフェストをスキャンし、攻撃者に見つかる前に隠れたリスクを検出します。
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 でスキャンしましたか?そのことを表示しましょう。
[](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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。