keel
認可済みペネトレーションテストとバグバウンティのためのMCPコントロールプレーン
9つのMCPツール。一度に1ウェーブずつ。ホストごとのレート制限。スキャナのダンプではなく、ハンター向けのカードを提供します。
アーキテクチャ · インストール · MCPクライアント · 機能 · ツール · プロンプト例 · セキュリティ · ライセンス
Keel は、Claude Code、Codex、Cursor、OpenCode、Hermes、Copilot、その他の MCP クライアントにプラグインする MCP サーバーです。スコープを絞ったリコンの実行、ターゲットへの過剰な負荷の防止、スキャナ出力の重複排除されたカードへの変換を行います。情報提供目的のノイズやヘッダー欠落のノイズは、明示的に要求しない限り非表示になります。境界を定めたプルーフはお客様のテスト用アカウントと一意のマーカーを使用し、自由形式のエクスプロイトジェネレータにはなりません。
次の用途に使用します:
外部・Webペネトレーションテストのリコン
バグバウンティ(スコープを入れて、ノイズを出す)
AIコパイロットによるレッドチーム形式の評価
一時停止・照会・証明が可能な反復可能なエンゲージメント
アーキテクチャの概要
モデルは Keel とのみ通信します。Keel はウェーブを許可し、ホストごとにレート制限し、httpx / nuclei の出力をカードストアに解析し、オペレーターフラグの背後でプルーフを制限します。
%%{init: {"themeVariables": {
"primaryColor": "#1a2744",
"secondaryColor": "#3d7ea6",
"tertiaryColor": "#6ec8e8",
"background": "#0a0a0a",
"edgeLabelBackground":"#1a2744",
"fontFamily": "monospace",
"fontSize": "15px",
"fontColor": "#e8f4fc",
"nodeTextColor": "#e8f4fc"
}}}%%
graph TD
A[MCP client - Claude / Codex / Cursor / OpenCode] -->|stdio MCP| B[Keel MCP server]
B --> C[Engagement policy]
B --> D[Wave scheduler]
B --> E[Card store]
C --> F[Scope hosts]
C --> G[Per-host RPS]
C --> H[Proof flags]
D --> I[probe_alive]
D --> J[template_scan]
D --> K[Token bucket]
I --> L[ProjectDiscovery httpx]
J --> M[ProjectDiscovery nuclei]
L --> E
M --> E
E --> N[query_cards]
E --> O[Triage / impact_class]
O --> P[draft_proof]
P --> Q[execute_proof - gated]
B --> R[engagement_health]
style A fill:#1a2744,stroke:#6ec8e8,stroke-width:2px,color:#e8f4fc
style B fill:#3d7ea6,stroke:#6ec8e8,stroke-width:3px,color:#e8f4fc
style E fill:#1a2744,stroke:#3d7ea6,stroke-width:2px,color:#e8f4fc
style Q fill:#0d3d4d,stroke:#6ec8e8,stroke-width:2px,color:#e8f4fc仕組み
接続 — クライアントが stdio サーバーを起動します:
keel-pentest(PyPI) またはpython3 scripts/keel_mcp.py(クローン)。HTTP サイドカーはありません。開始 —
begin_engagementがスコープ、RPS、プルーフの許可有無を記録します。ドラフトして実行 —
draft_wavesがprobe_aliveとtemplate_scanを提案します。execute_waveは、許可された1つのウェーブをホストごとのバケットの背後で実行します。トリアージ —
query_cardsがハンター関連のカードを返します。state_impactがimpact_classを記録します。second_lookが1つのURLを再スキャンします。証明 —
draft_proofが許可リスト化されたプレイブックを説明します。execute_proofはallow_safe_proofとoperator_confirmedが設定されている場合にのみ実行されます。
Related MCP server: BountyProof MCP
インストール
ロール | 名前 |
pip / PyPI |
|
MCP stdio コマンド |
|
|
|
クライアントでの MCP サーバー ID |
|
レジストリ |
|
pip install keel は実行しないでください。OS 別の完全なメモ: INSTALL.md。クライアントスニペット (PyPI とクローン): clients/README.md。
Python 3.10 以降。Apple の /usr/bin/python3 は 3.9 であることがよくあります (No matching distribution found for mcp>=1.9 が発生します)。
いずれかのパスを選択してください:
パス | 使用するタイミング | MCP コマンド |
リリース済みパッケージ、クローン不要 |
| |
開発用、リポジトリ内 MCP 設定 |
| |
| ランチャー、または | |
クライアントが | PyPI と同じ ( |
どのパスでも、ProjectDiscovery の httpx と nuclei が PATH に含まれている必要があります。ホイールにはこれらのバイナリは含まれていません。Python ライブラリの httpx は CLI ではありません。
macOS のプローブ: brew install nuclei httpx を実行してから nuclei -update-templates を実行します。クローン: sh scripts/bootstrap.sh tools。他の OS: INSTALL.md。
PyPI から
python3.12 -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install keel-pentestuv: uv pip install keel-pentest。pipx: pipx install keel-pentest (keel-pentest が PATH に追加されます)。
確認:
python -c "import keel; print('keel ok')"
which keel-pentestpython -m keel を「テスト」のためにターミナルで実行したままにしないでください。そのプロセスは MCP stdio サーバーであり、標準入力を待機します。クライアントの command としてのみ使用してください。
python -m keel とコンソールスクリプト keel-pentest はどちらも stdio MCP サーバーを起動します (標準入出力上にあり、HTTP デーモンではありません)。MCP クライアントがパッケージのあるインタープリターを指すようにしてください:
{
"mcpServers": {
"keel": {
"command": "/ABS/path/to/.venv/bin/keel-pentest"
}
}
}または:
{
"mcpServers": {
"keel": {
"command": "/ABS/path/to/.venv/bin/python",
"args": ["-m", "keel"]
}
}
}JSON-RPC が停止しているように見える場合は、クライアント環境で PYTHONUNBUFFERED=1 を設定してください。httpx と nuclei は別途インストールしてください (上記参照)。
PyPI のパッケージ名は keel-pentest です。インポート名は keel です。
ローカルクローンから
git clone https://github.com/lutfizp/keel.git
cd keel
sh scripts/bootstrap.shWindows:
powershell -ExecutionPolicy Bypass -File scripts\bootstrap.ps1このスクリプトは Python 3.10+ で .venv を作成し、このプロジェクト (pip install -e ".[dev]" による keel-pentest) をインストールしてから、ProjectDiscovery の httpx と nuclei をインストールします。
部分実行:
sh scripts/bootstrap.sh python # venv + Keel only
sh scripts/bootstrap.sh tools # nuclei + httpx only確認:
source .venv/bin/activate
python -c "import mcp, keel; print('keel ok')"
httpx -version
nuclei -versionリポジトリ内の MCP 設定はランチャーを使用します:
python3 scripts/keel_mcp.pyこのスクリプトは、リポジトリの隣にある 3.10+ の .venv を見つけて python -m keel (keel-pentest と同じ) を実行します。オプションの環境変数: KEEL_PYTHON、KEEL_ROOT。
ソースからの編集可能インストール
クローンから (3.10+ の venv を作成した後):
source .venv/bin/activate
python -m pip install -e ".[dev]"
pytestローカルと同じ: python3 scripts/keel_mcp.py、または /path/to/keel/.venv/bin/keel-pentest。
MCP レジストリから
レジストリ名: io.github.lutfizp/keel。公開されている server.json は PyPI の keel-pentest を指しています。レジストリを話すクライアントはそのパッケージをインストールします。Python 3.10+ とプローブ CLI が引き続き必要です。
クライアントが設定ファイルのみを書き込む場合は、上記の PyPI の command の例を使用してください。
OS 固有の Python とツールのインストール: INSTALL.md。
MCP クライアントのセットアップ
ローカルクローン (このリポジトリをワークスペースとして使用)
ツリー内の設定:
ホスト | ファイル |
OpenCode |
|
Claude Code |
|
Cursor |
|
VS Code / Copilot |
|
Codex |
|
Claude Desktop、Hermes、Gemini CLI、Antigravity (agy)、Windsurf、Cline、Roo のスニペット: clients/README.md。
OpenCode:
{
"mcp": {
"servers": {
"keel": {
"type": "local",
"command": ["python3", "scripts/keel_mcp.py"]
}
}
}
}OpenCode v2 はフラットな mcp マップの代わりに mcp.servers を使用します。同じ command 配列を維持してください。
Claude Code (クローンから):
cd /path/to/keel
claude mcp add --scope project --transport stdio keel -- python3 scripts/keel_mcp.pyClaude Desktop / Cursor スタイルの mcpServers (ローカルランチャー):
{
"mcpServers": {
"keel": {
"command": "python3",
"args": ["/ABS/path/to/keel/scripts/keel_mcp.py"]
}
}
}Codex (ローカル):
codex mcp add keel -- python3 /ABS/path/to/keel/scripts/keel_mcp.pyPyPI / グローバル venv
Claude Code:
claude mcp add --scope user --transport stdio keel -- /ABS/path/to/.venv/bin/keel-pentestCodex:
codex mcp add keel -- /ABS/path/to/.venv/bin/python -m keelOpenCode (PyPI): "command": ["/ABS/path/to/.venv/bin/keel-pentest"]。例: opencode.pypi.json.example。
keel-pentest または venv の python への絶対パスを使用してください。Apple の python3 3.9 を継承するクライアントは mcp のインポートに失敗します。
インストール後、クライアントを再起動してください。
機能
コントロールプレーン (150 ツールのダンプではない)
モデルは nuclei や httpx を直接シェル実行することはありません。Keel ツールのみを呼び出します。ウェーブは一度に1つだけ許可されます。各ホストには requests_per_second からのトークンバケットがあります。
カードの発見
パーサーが httpx JSON と nuclei JSONL を SQLite カードストアに変換します。フィンガープリントは重複をマージします。情報提供とハードニングの検出結果はデフォルトで非表示になります (include_noise が false の query_cards)。
ハンタートリアージ
impact_class の値: none、hardening、sensitive_access、account_takeover、rce、data_other_users。CVSS スタイルのスキャナースコアはハンターのゲートではありません。
境界を定めたプルーフ
許可リスト化されたプレイブックのみ:
プレイブック | 意図 |
| 別のテスト用アカウントがリソースを読み取れることを示す |
| オペレーター自身のセッションがマーカーを仕込んだり読み取ったりできることを示す |
execute_proof には allow_safe_proof と operator_confirmed が必要です。テスト用セッションのみ。DoS はなく、他のユーザーのデータもなく、エクスプロイトの生成もありません。
レイアウト
ポリシー、スケジューラ、アダプタ、パーサー、ストア、トリアージ、プルーフは、src/keel/ の下の個別のパッケージにあります。エンゲージメントデータ: リポジトリ内の .data/engagements (データベースは ~/.keel ではありません)。
MCP ツール
ツール | ロール |
| スコープ、RPS、プルーフフラグ、テスト用アカウント ID |
|
|
| 許可された1つのウェーブを実行 |
| デフォルトで情報提供/ハードニングを除いたカード |
| 1つのカード URL の境界を定めた再スキャン |
| ハンターの |
| 許可リスト化されたプルーフプラン (トラフィックなし) |
| フラグが設定されている場合のみプルーフ |
| クールダウン、一時停止されたホスト、保留中のウェーブ |
begin_engagement の引数
引数 | メモ |
| 安定した ID ( |
| スコープ内のホスト名 |
| オプション |
| デフォルト |
| デフォルト |
| デフォルト |
| オプションのラベル |
プロンプト例
target.example をスコープ内のホストに置き換えてください。エンゲージメントがすでに存在しない限り、常に begin_engagement から始めてください。クライアントは Keel MCP を呼び出す必要があり、シェルの nuclei / httpx を呼び出してはいけません。
あなたが許可を得ていること (所有者、雇用主、またはスコープ内のバウンティ) を明記してください。あいまいな「このサイトをハックして」というプロンプトは、ほとんどのモデルで拒否されます。
エンドツーエンドのバグバウンティ
You are a bug bounty hunter. Use only the Keel MCP tools. Do not run nmap, nuclei, or httpx yourself.
1. begin_engagement:
- engagement_id: bb-2026-01
- scope_hosts: ["target.example"]
- exclude_hosts: []
- requests_per_second: 3
- allow_safe_proof: false
- operator_confirmed: false
2. draft_waves with seed_url https://target.example
3. execute_wave once per wave_id, wait for each to finish
4. query_cards (include_noise false)
5. For each remaining card, state_impact with a hunter impact_class
(none / hardening / sensitive_access / account_takeover / rce / data_other_users)
and why a hunter would care. Drop informational and missing-header noise.
6. For cards that still look like real impact, draft_proof only
(playbook_id: cross_account_read or own_session_marker).
Do not call execute_proof until I say the word CONFIRM.
Stop after draft_proof. Summarize cards, impact, and the proof plan in English.境界を定めたプルーフ (テスト用アカウントのみ) を実行する準備ができたら:
CONFIRM. Call begin_engagement again on bb-2026-01 with allow_safe_proof true
and operator_confirmed true, then execute_proof on card <card_id>
playbook_id cross_account_read. session_a and session_b are my tester
Authorization headers. One request pair. No DoS, no other users' data.リコンのみ
Keel MCP only. begin_engagement id recon-1, scope_hosts ["target.example"],
RPS 2, allow_safe_proof false. draft_waves for https://target.example.
execute_wave only the probe_alive wave. Do not run template_scan.
Then engagement_health. Tell me which hosts answered. Stop.テンプレートのみ (リコン後)
Engagement recon-1 is already open. draft_waves is done. execute_wave only
the template_scan wave_id. Then query_cards. Do not draft_proof. Stop.カード / トリアージのみ
query_cards for engagement_id bb-2026-01. If empty, query_cards with
include_noise true and list what you would drop as hardening. No new waves.インパクトのみ
state_impact on card <card_id>, engagement bb-2026-01.
impact_class data_other_users if IDOR-like, else none.
preconditions: two tester accounts. hunter_why: one sentence.
Do not scan and do not prove.プルーフプランのみ (トラフィックなし)
draft_proof engagement bb-2026-01 card <card_id> playbook_id own_session_marker.
Do not execute_proof.ステータス
engagement_health for bb-2026-01. If unknown, engagement_health with no id.トラブルシューティング
MCP サーバーが失敗する / インポートエラー
Apple の 3.9 ではなく、Python 3.10+ (実際に keel-pentest またはクローンインストールがある venv) を使用してください:
python3 --version
python3 -m keel # PyPI / venv
python3 scripts/keel_mcp.py # local clonemcp>=1.9 をインストールできない場合は、3.12/3.11/3.10 で .venv を再作成してください (sh scripts/bootstrap.sh python または新しい venv を作成してから pip install keel-pentest)。
httpx / nuclei が見つからない
which httpx nuclei
sh scripts/bootstrap.sh tools
nuclei -update-templatesウェーブ後にカードが空
一時停止されたホスト (レート制限 / 429) がないか engagement_health を確認してください。RPS を下げてください。ホストが scope_hosts にあり、シード URL に到達可能であることを確認してください。
execute_proof が拒否された
allow_safe_proof を true に、operator_confirmed を true にして begin_engagement を再度呼び出してください。許可リスト化された playbook_id 値のみを使用してください。
セキュリティに関する考慮事項
Keelは、AIクライアントがhttpxとnucleiを通じてスコープ内のホストを調査し、2つの限定された証明プレイブックを実行することを可能にします。テストを許可されたシステムでのみ実行してください。engagement_healthを監視し、バウンティプログラムではRPSを控えめに保ってください。
法的および倫理的な使用
書面による許可を得た認可済みペネトレーションテスト
バグバウンティプログラム(プログラムのスコープとルール内)
所有またはテストを許可されたシステムに対するセキュリティ研究
組織の承認を得たレッドチーム演習
許可なくシステムをテストしないこと
不正アクセス、データ窃取、または損害を与えないこと
証明: テスト担当者アカウントのみを使用し、他のユーザーのデータにはアクセスしないこと
コントリビューション
git clone https://github.com/lutfizp/keel.git
cd keel
sh scripts/bootstrap.sh python
source .venv/bin/activate
pytest有用な領域: パーサー、トリアージ、追加の許可リスト登録済み証明プレイブック、クライアントスニペット。無制限のエクスプロイトジェネレーターや、無関係なスキャナーCLIのダンプをMCPサーフェスに追加しないでください。
ライセンス
KeelはMITライセンスの下でリリースされています。LICENSEを参照してください。
Copyright (c) 2026 Lutfi Z.P.
PyPI: keel-pentest。MCPレジストリ: io.github.lutfizp/keel。ソース: github.com/lutfizp/keel。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAutonomous pentests from one command: real security tools, working PoCs, and audit-ready reports, all driven via MCP.1,614MIT
- AlicenseBqualityCmaintenanceAn MCP server for authorized bug bounty work that enforces an evidence-driven workflow with session management, preflight checks, surface discovery, and verified scanning.12MIT
- AlicenseNot gradedqualityCmaintenanceEnables automated bug bounty hunting and security research with tools for reconnaissance, web vulnerability scanning, API testing, binary analysis, and mobile app analysis through an MCP interface.MIT
- AlicenseNot gradedqualityCmaintenanceEnables authorized penetration testing through MCP, providing parallel reconnaissance, vulnerability scanning, attack path analysis, and self-contained HTML reporting with compliance tagging.MIT
Related MCP Connectors
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Offline methodology engine for authorized penetration testing, CTF, and security research.
A paid remote MCP for developer endpoint scanner MCP, built to return verdicts, receipts, usage logs
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lutfizp/keel'
If you have feedback or need assistance with the MCP directory API, please join our Discord server