Skip to main content
Glama

승인된 펜테스트 및 버그 바운티를 위한 MCP 컨트롤 플레인

Python License MCP PyPI Registry Version

아홉 개의 MCP 도구. 한 번에 하나의 웨이브. 호스트별 속도 제한. 스캐너 덤프가 아닌 헌터급 카드.

아키텍처 · 설치 · MCP 클라이언트 · 기능 · 도구 · 프롬프트 예시 · 보안 · 라이선스


Keel은 Claude Code, Codex, Cursor, OpenCode, Hermes, Copilot 및 기타 모든 MCP 클라이언트에 연결하는 MCP 서버입니다. **범위가 제한된 정찰(recon)**을 실행하고, 대상이 과부하되지 않도록 보호하며, 스캐너 출력을 중복 제거된 카드로 변환합니다. 정보성(informational) 및 누락 헤더 관련 노이즈는 요청하지 않는 한 숨겨집니다. 제한된 증명(proof)은 테스터 계정과 고유 마커를 사용합니다 — 자유 형식 익스플로잇 생성기가 아닙니다.

다음 용도로 사용하세요:

  • 외부 및 웹 펜테스트 정찰

  • 버그 바운티 (범위 안으로, 노이즈 밖으로)

  • 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는 호스트별 버킷 뒤에서 하나의 승인된 웨이브를 실행합니다.

  4. 트리아지query_cards가 헌터 관련 카드를 반환합니다. state_impactimpact_class를 기록합니다. second_look이 하나의 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 httpx**nuclei**PATH에 있어야 합니다. 휠에는 해당 바이너리가 포함되지 않습니다. Python 라이브러리 httpx는 CLI가 아닙니다.

macOS 프로브: brew install nuclei httpxnuclei -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-pentest. pipx: pipx 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를 생성하고, 이 프로젝트(keel-pentestpip install -e ".[dev]"로)를 설치한 다음, 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_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

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 도구만 호출합니다. 웨이브는 한 번에 하나씩 승인됩니다. 각 호스트에는 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 스타일 스캐너 점수는 헌터 게이트가 아닙니다.

제한된 증명

허용 목록 플레이북만:

플레이북

의도

cross_account_read

다른 테스터 계정이 리소스를 읽을 수 있음을 보여줌

own_session_marker

운영자 자신의 세션이 마커를 심거나 읽을 수 있음을 보여줌

execute_proofallow_safe_proofoperator_confirmed가 필요합니다. 테스터 세션만. DoS 없음, 다른 사용자의 데이터 없음, 익스플로잇 생성 없음.

구조

정책, 스케줄러, 어댑터, 파서, 저장소, 트리아지, 증명은 src/keel/ 아래 별도 패키지에 있습니다. 엔게이지먼트 데이터: 저장소의 .data/engagements (데이터베이스는 ~/.keel이 아님).


MCP 도구

도구

역할

begin_engagement

범위, RPS, 증명 플래그, 테스터 계정 ID

draft_waves

probe_alivetemplate_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로 시작하세요. 클라이언트는 nuclei / httpx를 셸로 실행하지 말고 Keel MCP를 호출해야 합니다.

권한이 있음을 명시하세요 (소유자, 고용주, 또는 범위 내 바운티). 모호한 "이 사이트 해킹해줘" 프롬프트는 대부분의 모델에서 거부됩니다.

엔드투엔드 버그 바운티

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를 통해 범위 내 호스트를 탐지하고, 두 가지 좁은 범위의 증명 플레이북을 실행할 수 있게 해줍니다. 테스트가 허용된 시스템에서만 실행하세요. 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로 배포됩니다. 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