Skip to main content
Glama

面向授权渗透测试与漏洞赏金的 MCP 控制平面

Python License MCP PyPI Registry Version

九个 MCP 工具。一次只放行一个波次。按主机限速。猎人级卡片,而非扫描器倾倒。

架构 · 安装 · MCP 客户端 · 功能 · 工具 · 提示词示例 · 安全 · 许可证


Keel 是一个 MCP 服务器,可接入 Claude Code、Codex、Cursor、OpenCode、Hermes、Copilot 以及任何其他 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_waves 先提议 probe_alive 再提议 template_scanexecute_wave 在每主机令牌桶后面运行一个已放行的波次。

  4. 分诊query_cards 返回与猎人相关的卡片。state_impact 记录 impact_classsecond_look 重新扫描一个 URL。

  5. 验证draft_proof 描述一个白名单剧本。execute_proof 仅在设置了 allow_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。完整操作系统说明: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 中。wheel 包不包含这些二进制文件。Python 库 httpx 不是那个 CLI。

macOS 探测工具:brew install nuclei httpx 然后 nuclei -update-templates。克隆仓库:sh scripts/bootstrap.sh tools。其他操作系统: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

uvuv pip install keel-pentestpipxpipx install keel-pentest(将 keel-pentest 放入 PATH)。

检查:

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

不要在终端里让 python -m keel 一直运行来“测试”它:该进程就是 MCP stdio 服务器,会等待 stdin。只能把它用作客户端的 command

python -m keel 和控制台脚本 keel-pentest 都会启动 stdio MCP 服务器(它们驻留在 stdin/stdout 上;不是 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 示例。

操作系统特定的 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.servers 而不是扁平的 mcp 映射。保持相同的 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 工具。波次一次只放行一个。每个主机都有一个来自 requests_per_second 的令牌桶。

发现卡片

解析器将 httpx JSON 和 nuclei JSONL 转换为 SQLite 卡片存储。指纹合并重复项。信息类和加固类发现默认隐藏(query_cardsinclude_noise 为 false)。

猎人分诊

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_alive 然后 template_scan

execute_wave

运行一个已放行的波次

query_cards

默认排除信息类/加固类卡片

second_look

对一张卡片 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,而不是 shell 中的 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 服务器失败 / 导入错误

使用 Python 3.10+(实际装有 keel-pentest 或克隆安装的 venv),而不是 Apple 3.9:

python3 --version
python3 -m keel          # PyPI / venv
python3 scripts/keel_mcp.py   # local clone

如果 mcp>=1.9 无法安装,用 3.12/3.11/3.10 重新创建 .venvsh scripts/bootstrap.sh python 或新建 venv 然后 pip install keel-pentest)。

找不到 httpx / nuclei

which httpx nuclei
sh scripts/bootstrap.sh tools
nuclei -update-templates

波次后卡片为空

检查 engagement_health 中是否有暂停的主机(限速 / 429)。降低 RPS。确认主机在 scope_hosts 中且种子 URL 可访问。

execute_proof 被拒绝

allow_safe_proof 为 true 和 operator_confirmed 为 true 重新调用 begin_engagement。只使用白名单中的 playbook_id 值。


安全注意事项

Keel 让 AI 客户端能够通过 httpxnuclei 探测范围内的主机,并运行两个窄范围的验证剧本。请只在你获准测试的系统上运行它。留意 engagement_health,并在赏金计划中保持 RPS 保守。

合法与道德使用

  • 获得书面授权的渗透测试

  • 在计划范围和规则之内进行的漏洞赏金项目

  • 在你自己拥有或获准测试的系统上开展安全研究

  • 经组织批准进行的红队演练

  • 未经授权,绝不测试任何系统

  • 不进行非法访问、数据窃取或破坏

  • 验证:仅使用测试者账户;不涉及其他用户的数据


贡献

git clone https://github.com/lutfizp/keel.git
cd keel
sh scripts/bootstrap.sh python
source .venv/bin/activate
pytest

有用的领域:解析器、分类(triage)、额外的白名单验证剧本、客户端代码片段。不要将无限制的漏洞生成器或一堆无关的扫描器 CLI 堆加到 MCP 表面上。


许可证

Keel 基于 MIT License 发布。参见 LICENSE

Copyright (c) 2026 Lutfi Z.P.

PyPI:keel-pentest。MCP Registry: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