Skip to main content
Glama

認可済みペネトレーションテストとバグバウンティのためのMCPコントロールプレーン

Python License MCP PyPI Registry Version

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

仕組み

  1. 接続 — クライアントが stdio サーバーを起動します: keel-pentest (PyPI) または python3 scripts/keel_mcp.py (クローン)。HTTP サイドカーはありません。

  2. 開始begin_engagement がスコープ、RPS、プルーフの許可有無を記録します。

  3. ドラフトして実行draft_wavesprobe_alivetemplate_scan を提案します。execute_wave は、許可された1つのウェーブをホストごとのバケットの背後で実行します。

  4. トリアージquery_cards がハンター関連のカードを返します。state_impactimpact_class を記録します。second_look が1つのURLを再スキャンします。

  5. 証明draft_proof が許可リスト化されたプレイブックを説明します。execute_proofallow_safe_proofoperator_confirmed が設定されている場合にのみ実行されます。


Related MCP server: BountyProof MCP

インストール

ロール

名前

pip / PyPI

keel-pentest

MCP stdio コマンド

keel-pentest

import / python -m

keel

クライアントでの MCP サーバー ID

keel

レジストリ

io.github.lutfizp/keel

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 コマンド

PyPI

リリース済みパッケージ、クローン不要

keel-pentest への絶対パス、またはその venv での python -m keel

ローカルクローン

開発用、リポジトリ内 MCP 設定

python3 scripts/keel_mcp.py

編集可能インストール

src/keel のハック用

ランチャー、または .venv/bin/keel-pentest

MCP レジストリ

クライアントが io.github.lutfizp/keel をインストール

PyPI と同じ (keel-pentest レジストリパッケージから)

どのパスでも、ProjectDiscovery の httpxnucleiPATH に含まれている必要があります。ホイールにはこれらのバイナリは含まれていません。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-pentest

uv: uv pip install keel-pentestpipx: pipx install keel-pentest (keel-pentest が PATH に追加されます)。

確認:

python -c "import keel; print('keel ok')"
which keel-pentest

python -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 を設定してください。httpxnuclei は別途インストールしてください (上記参照)。

PyPI のパッケージ名は keel-pentest です。インポート名は keel です。

ローカルクローンから

git clone https://github.com/lutfizp/keel.git
cd keel
sh scripts/bootstrap.sh

Windows:

powershell -ExecutionPolicy Bypass -File scripts\bootstrap.ps1

このスクリプトは Python 3.10+ で .venv を作成し、このプロジェクト (pip install -e ".[dev]" による keel-pentest) をインストールしてから、ProjectDiscovery の httpxnuclei をインストールします。

部分実行:

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_PYTHONKEEL_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

opencode.json

Claude Code

.mcp.json

Cursor

.cursor/mcp.json

VS Code / Copilot

.vscode/mcp.json

Codex

.codex/config.toml

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.py

Claude 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.py

PyPI / グローバル venv

Claude Code:

claude mcp add --scope user --transport stdio keel -- /ABS/path/to/.venv/bin/keel-pentest

Codex:

codex mcp add keel -- /ABS/path/to/.venv/bin/python -m keel

OpenCode (PyPI): "command": ["/ABS/path/to/.venv/bin/keel-pentest"]。例: opencode.pypi.json.example

keel-pentest または venv の python への絶対パスを使用してください。Apple の python3 3.9 を継承するクライアントは mcp のインポートに失敗します。

インストール後、クライアントを再起動してください。


機能

コントロールプレーン (150 ツールのダンプではない)

モデルは nucleihttpx を直接シェル実行することはありません。Keel ツールのみを呼び出します。ウェーブは一度に1つだけ許可されます。各ホストには requests_per_second からのトークンバケットがあります。

カードの発見

パーサーが httpx JSON と nuclei JSONL を SQLite カードストアに変換します。フィンガープリントは重複をマージします。情報提供とハードニングの検出結果はデフォルトで非表示になります (include_noise が false の query_cards)。

ハンタートリアージ

impact_class の値: nonehardeningsensitive_accessaccount_takeoverrcedata_other_users。CVSS スタイルのスキャナースコアはハンターのゲートではありません。

境界を定めたプルーフ

許可リスト化されたプレイブックのみ:

プレイブック

意図

cross_account_read

別のテスト用アカウントがリソースを読み取れることを示す

own_session_marker

オペレーター自身のセッションがマーカーを仕込んだり読み取ったりできることを示す

execute_proof には allow_safe_proofoperator_confirmed が必要です。テスト用セッションのみ。DoS はなく、他のユーザーのデータもなく、エクスプロイトの生成もありません。

レイアウト

ポリシー、スケジューラ、アダプタ、パーサー、ストア、トリアージ、プルーフは、src/keel/ の下の個別のパッケージにあります。エンゲージメントデータ: リポジトリ内の .data/engagements (データベースは ~/.keel ではありません)。


MCP ツール

ツール

ロール

begin_engagement

スコープ、RPS、プルーフフラグ、テスト用アカウント ID

draft_waves

probe_alivetemplate_scan を提案

execute_wave

許可された1つのウェーブを実行

query_cards

デフォルトで情報提供/ハードニングを除いたカード

second_look

1つのカード URL の境界を定めた再スキャン

state_impact

ハンターの impact_class

draft_proof

許可リスト化されたプルーフプラン (トラフィックなし)

execute_proof

フラグが設定されている場合のみプルーフ

engagement_health

クールダウン、一時停止されたホスト、保留中のウェーブ

begin_engagement の引数

引数

メモ

engagement_id

安定した ID (bb-2026-01)

scope_hosts

スコープ内のホスト名

exclude_hosts

オプション

requests_per_second

デフォルト 3.0

allow_safe_proof

デフォルト false

operator_confirmed

デフォルト false

tester_account_a / tester_account_b

オプションのラベル


プロンプト例

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 clone

mcp>=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クライアントがhttpxnucleiを通じてスコープ内のホストを調査し、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

Install Server
A
license - permissive license
B
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    B
    quality
    C
    maintenance
    An MCP server for authorized bug bounty work that enforces an evidence-driven workflow with session management, preflight checks, surface discovery, and verified scanning.
    12
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables authorized penetration testing through MCP, providing parallel reconnaissance, vulnerability scanning, attack path analysis, and self-contained HTML reporting with compliance tagging.
    MIT

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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