Cybersec Toolkit
/\ /\ ______ __ _____
(o ) ( o) / ____/_ __/ /_ ___ _____/ ___/___ _____
\ \_/ / / / / / / / __ \/ _ \/ ___/\__ \/ _ \/ ___/
<==\ /==> / /___/ /_/ / /_/ / __/ / ___/ / __/ /__
\ V / \____/\__, /_.___/\___/_/ /____/\___/\___/
/_ _\ /____/ by 26zl
|_| ToolkitAI 통합 기능이 내장된 사이버보안 툴킷입니다. 내장된 MCP(Model Context Protocol) 서버를 통해 MCP 지원 클라이언트는 도구 레지스트리를 조회하고, 설치 상태를 확인하고, CTF 카테고리나 버그 바운티 대상에 맞는 도구를 추천받거나, 관리되는 실행 경로를 통해 설치된 도구를 실행할 수 있습니다. MCP 서버(AI 통합)로 이동하세요.
Linux 및 Termux(Android)용 모듈형 설치 프로그램이 함께 제공되며, 670+ 도구, 18개 모듈, 14개 프로필, 12가지 설치 방법을 다룹니다.
차별점: 대부분의 툴킷은 도구를 설치하는 데서 그칩니다. 하지만 여기서는 AI가 도구를 구동할 수도 있습니다. — 문제 유형을 추론하고, 모든 모듈/프로필에서 적절한 도구를 선택하며, 대화형 동반자로서 사용자와 함께 작업합니다. 사용자가 명시적으로 권한을 부여하면 동일한 MCP 도구 체인이 자율 해결 루프에 들어갈 수 있습니다. 기본은 동반자 모드이며, 요청할 때만 자율 모드로 전환됩니다.
호환 클라이언트
클라이언트 | 통합 방식 | 라벨 |
Claude Code |
| 네이티브 구성 포함 |
Claude Desktop |
| 구성 예제 문서화됨 |
OpenCode |
| 라이브로 테스트 완료 |
Codex |
| 네이티브 구성 포함 |
Gemini CLI |
| 네이티브 구성 포함 |
GitHub Copilot |
| CLI 라이브 테스트 완료; VS Code 문서화됨 |
Hermes Agent | 사용자 | 라이브로 테스트 완료 |
OpenClaw | 사용자 | 라이브로 테스트 완료 |
Cursor / Cline / Goose | 클라이언트 MCP 설정 + Agent Skills | MCP 호환; 스킬 지원됨 |
Continue | 클라이언트 MCP 설정; 컨텍스트용 규칙/프롬프트 | MCP를 통해 호환 |
LM Studio (>=0.3.17) |
| MCP를 통해 호환 |
Ollama | Ollama 앞의 MCP 호스트 | MCP 호스트를 통해 호환 |
Aider | — | 해당 없음 |
Open WebUI | MCP-to-OpenAPI 브리지 | MCP 호스트 또는 브리지를 통해 호환 |
각 클라이언트별 상세 구성은 docs/AI_CLIENTS.md를, 모든 MCP 클라이언트에서 여러 에이전트를 조율하는 방법은 docs/ORCHESTRATION.md를 참조하세요.
작동 방식
두 진입점이 하나의 도구 레지스트리를 공유합니다. 운영자는 bash 설치 프로그램을 실행하여 도구를 디스크에 설치합니다. AI 에이전트는 MCP 서버와 대화하여 동일한 도구를 발견·추천하고, 관리되는 도구 경로를 통해 실행합니다. tools_config.json은 모듈이 정의하고 MCP 어드바이저가 읽는 단일 진실 원천이며, CI 검증기가 Python과 bash 양쪽의 동기화를 유지합니다.

Mermaid 소스: assets/how-it-works.mmd.
다이어그램 읽는 법: 실선 화살표는 런타임 또는 설치 작업이고, 점선 화살표는 검증 및 컨텍스트 관계입니다. 클라이언트 구성은 루트 인식 런처를 거쳐 FastMCP에 도달합니다. security.py는 허용 목록, 인자 검증, 네트워크 정책을 통해 셸을 실행하지 않고 run_tool과 run_pipeline을 제어합니다. run_script는 별도의, 기본적으로 비활성화된 전체 코드 실행 기능으로 남습니다. Agent Skills는 실행 경로 밖에 있습니다. .claude/skills/가 정식이며, scripts/sync-skills.sh는 이식 가능한 미러를 사용하는 클라이언트를 위해 .agents/skills/를 생성합니다.
Related MCP server: toolgovern
왜 그냥 Kali(또는 다른 설치 프로그램)를 쓰지 않나요?
Kali/Parrot/BlackArch는 도구를 담아 제공합니다. 이것은 대체재가 아닌 보완재입니다. 이미 보유한 머신(Termux 포함)에서 실행되며, 설치된 도구를 하나의 관리 인터페이스로 발견·추천·체이닝·실행할 수 있는 AI 제어 평면을 추가합니다. 모든 도구를 원하시나요? 그냥 디스트로를 쓰면 됩니다. 명시적 정책 하에 도구를 선택하고 실행할 수 있는 MCP 클라이언트를 원하시나요? 그게 바로 이 프로젝트가 채우는 공백입니다.
신뢰와 안전
보안 사용자는 의심해야 합니다. 아래에 실제로 실행되는 것과 차단되는 것이 무엇인지 정확히 설명합니다:
기본적으로 안전한 MCP.
CYBERSEC_MCP_ALLOW_EXTERNAL=0이 기본값이며 private/loopback 범위로 확인되지 않는 네트워크 대상을 거부합니다.CYBERSEC_MCP_ALLOW_SCRIPTS=0은run_script를 비활성화합니다. 외부 범위나 스크립팅은 명시적으로 선택해야 합니다.관리되는 도구 실행은 하나의 게이트를 통과합니다(
mcp_server/security.py): 레지스트리 허용 목록, 셸 미사용(create_subprocess_exec, 절대shell=True안 함), 인자 정화, 도구별 차단 플래그 목록(예:sqlmap --os-shell,nmap -iL, 파일 목록/대상 주입 플래그), 대상/네트워크 정책, 속도 제한, 출력 상한, 타임아웃.실행 정책은 OS 샌드백스가 아닙니다. 허용된 도구는 MCP 프로세스 사용자의 권한으로 실행되며, 일부 보안 도구는 자식 프로세스를 시작하거나 플러그인을 로드할 수 있습니다.
run_script를 비활성화한 것은 그 엔드포인트만 끄는 것입니다. MCP 서버는 필요한 최소 권한의 사용자로 실행하거나, 신뢰할 수 없는 대상을 처리할 수 있는 격리 경계 안에서 실행하세요.도구 인식 정책은 솔버 하드코딩이 아닙니다. 솔버가 도구를 레지스트리/어드바이저에서 선택할 뿐, 정책 계층은 실제 대상과 헤더, 워드리스트, 출력 경로, 설정 파일 또는 대상 목록 플래그를 구분할 수 있을 만큼만 CLI 문법을 이해합니다. 덕분에 파일 목록/설정 플래그가 범위 검사를 우회하지 못하면서 정상 명령은 계속 사용할 수 있습니다.
누출이 아닌 감사 추적입니다. 작업은 사용자 상태 디렉터리(
~/.local/state/cybersec-toolkit/mcp/audit.log기본값) 아래의 소유자 전용(0600) 로테이팅 로그에 JSON으로 기록됩니다. 스크립트 본문은 절대 저장하지 않으며, 대신 되돌릴 수 없는 SHA256 해시 + 길이만 상관관계 파악을 위해 기록합니다. 인자 값은 자격 증명 형태 문자열이면 왕시됩니다.설치 프로그램의 최소 권한. 이 설치는 root로 실행되지만, 클론된 저장소 빌드와
pip/cargo.gem설치에서는 실행한 사용자($SUDO_USER)로 권한을 낮춥니다. 바이너리 릴리즈는 체크섬이 배포될 때 SHA256 검증을 거칩니다.이중 용도 도구는 차단됩니다. C2 및 피싱 프레임워크(Sliver, Caldera, gophish, evilginx 등)는 기본적으로 비활성이며,
--include-c2(redteam/full프로파일)를 통해서만 설치됩니다. MCP 계층도 이를 반영하여 절대 자동 실행하지 않습니다.인가된 사용만 허용됩니다.
SECURITY.md와 공급망 모델, 고지 사항을 참조하세요.
설치
필요한 모든 런타임(Python, Go, Ruby, Java, Rust, Node.js), 개발 라이브러리, pipx, 빌드 도구가 자동 설치됩니다. 유일한 선행 조건은 지원되는 Linux 배포판입니다. Windows와 macOS는 지원되지 않습니다(WSL이나 Docker 사용).
Docker는 유일한 예외입니다. C2 프레임워크, MobSF, BeEF, BloodHound, TheHive 또는 Cortex를 원한다면(
--enable-docker) 직접 설치하세요. Docker 설치 문서를 참조하세요. GitHub 인증이 권장됩니다. 설치 프로그램은 ~30개의 바이너리 릴리스와 ~30번이 넘는 GitHub API 호출이 필요합니다. 인증이 없으면 시간당 60회 요청으로 제한되어 일부 다운로드가 실패할 수 있습니다. 인증이 있으면 시간당 5,000회까지 가능합니다. 가장 쉬운 방법:# Install gh CLI and log in (one-time) — the installer auto-detects it sudo apt install gh && gh auth login또는 개인용 토큰(권한 필요 없음)을 내보낸:
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
최신 릴리스에서 고정되고 안정적인 버전 — 권장:
# Newest tag is on the Releases page: https://github.com/26zl/cybersec-toolkit/releases
git clone --depth 1 --branch v1.1.0 https://github.com/26zl/cybersec-toolkit.git && cd cybersec-toolkit && sudo ./install.shmain에서는 최신 도구, 수정, 변경 사항이 있으며, 다음 파일 나오지 않은 작업이 포함될 수도 있습니다:
git clone https://github.com/26zl/cybersec-toolkit.git && cd cybersec-toolkit && sudo ./install.sh그러면 18개 모듈의 표준 도구가 설치됩니다. 게시/피싱 도구와 Docker 이미지는 여전히 선택 사항이며, 현재 플랫폼이 지원하는 전체 레지스트리를 명시적으로 원할 때만 --profile full --enable-docker을 사용합니다. 일부분만 설치하려면:
sudo ./install.sh --profile ctf # CTF tools only
sudo ./install.sh --profile redteam --enable-docker # Red team + Docker C2
sudo ./install.sh --module web --module recon # Specific modules
sudo ./install.sh --tool sqlmap --tool nmap # Individual tools
sudo ./install.sh --dry-run --profile ctf # Preview without installing머신이 준비되었는지 확실하지 않나요? 먼저 읽기 전용 사전 점검을 실행해 보세요. root 없이, 아무것도 설치하지 않습니다:
./install.sh --doctor # Distro, prerequisites, MCP server, tool registryDocker에서 시도해 보기
빌드된 이미지를 가져오기(로컬 빌드 불필요):
docker run --rm ghcr.io/26zl/cybersec-toolkit --profile ctf또는 직접 빌드:
docker build -t cybersec-toolkit .
docker run --rm cybersec-toolkit --profile ctfPodman은 대체 사용 가능한 도구입니다.
docker를podman으로 바꾸거나(또는alias docker=podman) 사용하면 됧니다. 루트리스 빌드와 실행도 지원됩니다. 아래의 Compose 예시(default)에서는podman compose를 사용하세요(compose provider 설치 필요).
또는 함께 포함된 Compose 파일을 사용하세요 (installer 서비스 빌드하하고 실행):
docker compose run --rm installer --profile ctf이미지는
toolkit사용자에게 비밀번호 없는 sudo를 허용하여 설치 프로그램이 시스템 패키지를 관리할 수 있게 합니다. 컨테이너 안의 코드는 root 권한을 가지는 것으로 다루세요. 이미지는 보안 샌드백스가 아닙니다.
macOS(Apple Silicon): 2개 명령 모두에 --linux/amd64를 추가해 x86 에뮬레이션으로 실행하세요:
docker build --platform linux/amd64 -t cybersec-toolkit .
docker run --rm --platform linux/amd64 cybersec-toolkit --profile ctfTermux(Android):
pkg install git
git clone https://github.com/26zl/cybersec-toolkit.git
cd cybersec-toolkit
./install.sh --profile lightweightsudo ./install.sh --help # Full help
sudo ./install.sh --list-profiles # Show profiles
sudo ./install.sh --list-modules # Show modules
sudo ./install.sh --skip-heavy # Skip large/slow packages
sudo ./install.sh --skip-pipx # Skip all pipx (Python) installs
sudo ./install.sh --skip-go # Skip all Go tool installs
sudo ./install.sh --skip-cargo # Skip all Cargo (Rust) installs
sudo ./install.sh --skip-gems # Skip all Ruby gem installs
sudo ./install.sh --skip-git # Skip all git clone installs
sudo ./install.sh --skip-binary # Skip all binary release downloads
sudo ./install.sh --skip-source # Skip build-from-source, snap, npm, and curl-pipe installs
sudo ./install.sh --fast # Skip checksum verification (see Security note below)
sudo ./install.sh --require-checksums # Fail if binary release has no checksum file
sudo ./install.sh --production # Strict checksum preset for release downloads
sudo ./install.sh --upgrade-system # Upgrade system packages before installing
sudo ./install.sh --list-sessions # List install sessions and exit
sudo ./install.sh --rollback <id|last> # Rollback tools installed in a session
sudo ./install.sh --version # Show installer version and exit
sudo ./install.sh --enable-docker # Pull Docker images
sudo ./install.sh --include-c2 # Include C2 frameworks (needs --enable-docker)
sudo ./install.sh -j 8 # 8 parallel install jobs (default: 4)
sudo ./install.sh -v # Verbose / debug output--tool은 전체 의존성 설정을 실행하지 않고 특정 도구만 설치합니다. 드라이런(dry-run) 시간 추정은 모든 방법의 항목을 계산한 것이므로, 중복을 제거한 670+ 도구 레지스트리보다 추정치가 높을 수 있습니다.
설치 프로그램은 12가지 서로 다른 설치 방법으로 670+ 도구를 오케스트레이션합니다. 이 시간은 어떤 스크립트 언어로도 단축할 수 없는 I/O 중심의 작업에 쓰입니다:
소요 시간 | 이유 |
시스템 패키지 (apt/dnf) |
|
Go 도구 | 모듈 다운로드 및 각 바이너리 컴파일 |
pipx (Python) | 도구별 격리된 venv 생성 및 wheel 다운로드 |
Cargo (Rust) 크레이트 | 소스에서 컴파일 — Rust는 사전 빌드된 레지스트리 바이너리가 없음 |
Git 클론 | 각 저장소 클로닝 |
바이너리 릴리스 | GitHub에서 사전 빌드된 바이너리 다운로드 |
Bash 오버헤드 | 배열 반복, 로깅, 진행률 표시 (무시할 수준) |
현재 방법별 도구 수를 확인하려면 ./install.sh --dry-run을 실행하세요. 실시간 분석 결과를 출력하므로 여기서 숫자가 낡을 일은 없습니다. 가장 느린 단계는 가장 많이 컴파일하거나 압축을 푸는 단계(apt/dnf 및 Go)이며, 원시 도구 수와는 무관합니다. Cargo는 소스에서 컴파일하지만 소수의 도구만 다룹니다.
설치 프로그램은 가능한 곳에서 이미 병렬화를 수행합니다(기본값 -j 4). 공유 잠금이 있는 방법(apt, pipx, cargo)은 순차적으로 실행해야 합니다. 설치 시간을 줄이려면:
--profile lightweight또는--module <name>을 사용하여 필요한 것만 설치--skip-cargo를 사용하여 Rust 컴파일(도구당 가장 느린 방법) 건너뛰기-j 8로 병렬 처리 수준을 높여 Go/git/binary 다운로드 속도 향상반복 설치를 위해 apt-cacher-ng 프록시 설정
프로필
프로필 | 모듈 | 설명 |
| 전체 18개 | 완전한 보안 툴킷 |
| misc, crypto, pwn, reversing, stego, forensics, cracking, web, mobile, blockchain | CTF 대회 |
| misc, networking, recon, web, enterprise, pwn, mobile, cracking, cloud, wireless, reversing, crypto | 공격 보안 |
| misc, networking, recon, web, llm | 웹 애플리케이션 테스트 |
| misc, recon | OSINT 정보 수집 |
| misc, forensics, blueteam, reversing, stego, cracking | 디지털 포렌식 및 침해 대응 |
| misc, pwn, reversing, crypto | 바이너리 익스플로잇 및 리버스 엔지니어링 |
| misc, mobile, web, reversing | 모바일 애플리케이션 보안 테스트 |
| misc, cloud, containers, networking, recon | 클라우드 및 컨테이너 보안 감사 |
| misc, blockchain, web, crypto | 스마트 계약 감사 및 블록체인 보안 |
| misc, wireless, networking | WiFi, Bluetooth, SDR 보안 |
| misc, networking, recon, web, cracking | 취미 윤리적 해킹 필수 도구 (HTB, THM, 버그 바운티) |
| misc, cracking, crypto | 해시 크래킹 |
| misc, blueteam, forensics, reversing, mobile, containers, networking, cloud, recon | 방어 보안, IR, 악성코드 분석 |
모듈
모듈 | 도구 수 | 설명 |
| 41 | 포스트 익스플로잇, 사회공학, 워드리스트, 리소스, C2 (Docker + Loki) |
| 57 | 포트 스캐닝, 패킷 캡처, 터널링, MITM, 프로토콜 도구 |
| 84 | 서브도메인 열거, OSINT, DNS, 자동화된 정찰 프레임워크 |
| 60 | 취약점 스캐닝, 퍼징, SQLi, XSS, CMS 스캐너, API 테스트 |
| 14 | RSA 공격, 암호 분석, 해시 공격, 제약 조건 해결 |
| 36 | 익스플로잇 프레임워크, 바이너리 익스플로잇, 퍼징, 페이로드 생성 |
| 33 | 디스어셈블러, 디버거, 에뮬레이션, Java/Python 리버싱 |
| 57 | 디스크/메모리 포렌식, 파일 캐빙, 타임라인 분석, 로그 분석, 하드웨어/시리얼 |
| 80 | Active Directory, Kerberos, Azure AD, 자격 증명 수집, 횡적 이동 |
| 41 | WiFi 크래킹, Bluetooth, SDR, rogue AP |
| 34 | 해시 크래킹 (john, hashcat), 무차별 대입, 워드리스트 생성 |
| 15 | 이미지/오디오 스테가노그래피, 탐지, StegCracker |
| 22 | AWS/Azure/GCP 보안 감사, Checkov |
| 15 | Docker/Kubernetes 보안 (Grype, Syft, Kubescape, kubeaudit) |
| 36 | IDS/IPS, SIEM, 침해 대응, 위협 인텔리전스, 하드닝, 악성코드 분석 (YARA, ClamAV, FLOSS, Capa, Loki) |
| 18 | Android/iOS 앱 테스트, APK 분석, MobSF (Docker) |
| 15 | 스마트 계약 감사 (Slither, Mythril, Foundry, Aderyn), 블록체인 포렌식, Echidna (Docker) |
| 14 | LLM 레드팀, 프롬프트 인젝션, 젤브레이크 테스트, AI 취약점 스캐닝 |
설치 방법
방법 | 수 | 예시 |
Git 클론 | ~197 | 자동 설정이 포함된 GitHub 저장소, 리소스, 워드리스트 |
시스템 패키지 (apt/dnf/pacman/zypper) | ~166 | nmap, wireshark, john, hashcat |
pipx | ~137 | sqlmap, impacket, bloodhound, volatility3 |
Go install | ~62 | nuclei, subfinder, ffuf, httpx |
바이너리 릴리스 | ~51 | gitleaks, chainsaw, findomain, FLOSS, Capa, Loki, Syft, Kubescape |
소스에서 빌드 | ~23 | massdns, duplicut, AFLplusplus, honggfuzz |
Docker | ~12 | Empire, MobSF, BeEF, BloodHound, TheHive, Cortex, PentAGI |
Ruby gem | 6 | wpscan, evil-winrm, brakeman |
Cargo (Rust) | 8 | feroxbuster, RustScan, pwninit, yara-x-cli |
특수 (curl-pipe) | 4 | Metasploit, Foundry, Steampipe, patator |
Snap | 1 | zaproxy |
npm | 5 | promptfoo, apk-mitm, surya, solgraph |
설치 후 스크립트
모든 스크립트는 Linux에서 root 권한(sudo)이 필요하며 --help를 지원합니다. Termux에서는 root가 필요 없습니다.
스크립트 | 용도 | 예시 |
| 설치된 도구 확인 |
|
| 설치된 모든 도구 업데이트 |
|
| 모듈별 도구 제거 |
|
| 모든 캐시 및 빌드 산출물 제거 |
|
| 도구 설정 백업/복원 |
|
--deep-clean은 Go 모듈/빌드 캐시, Cargo 레지스트리, pip/pipx/npm/gem 캐시, 고아가 된 pipx venv, 오래된 심볼릭 링크, 로그 파일을 제거합니다. --remove-deps를 추가하면 Rustup 툴체인도 제거합니다.
MCP 서버 (AI 통합)
MCP (Model Context Protocol)는 AI 어시스턴트가 외부 도구를 사용할 수 있게 해주는 개방형 표준입니다. 이 프로젝트에는 MCP 지원 AI(Claude Code, Claude Desktop, Cursor 등)에 670개 이상의 도구 레지스트리에 대한 전체 읽기 권한을 제공하는 MCP 서버가 포함되어 있습니다. 또한 설치 확인, 프로필 추천, 도구 실행 기능도 제공합니다. AI는 윤리적 해킹을 위한 대화형 파트너가 됩니다. 모든 도구를 알고, 어떤 도구가 설치되어 있는지 알며, 사용자를 대신해 실행할 수 있습니다.
AI가 할 수 있는 작업
도구 | 기능 |
| 모듈, 메서드 또는 설치 상태별로 670개 이상의 도구를 나열/필터링합니다(URL 포함). |
| 도구 설치 여부를 확인합니다(탐지 전략 5가지). |
| 전체 세부 정보: 메서드, 모듈, URL, 설치/업데이트/제거 명령. |
| 모듈 심층 분석: 모든 도구, 설치 상태, 사용 중인 프로필. |
| 프로필이 설치하는 모든 도구를 모듈별로 확인합니다. |
| 14개 CTF 챌린지 카테고리에 대한 선별된 도구 추천. |
| 7가지 대상 유형에 대한 버그 바운티 도구 추천(방법론 및 일반적인 취약점 포함). |
| 승인된 대상을 위한 컴패니언 우선 해결 도우미 — 대상/결과를 분류하고, 트리아지 게이트를 반환하며, 스킬을 추천하고, 모든 모듈/프로필에서 도구를 선택하여 단계별로 안내합니다. 옵트인 |
| CVE ID 또는 별칭(예: |
| 자연어 → 프로필/모듈/도구 추천. |
| 도구 수와 설치 명령이 포함된 14개 프로필 전체. |
| 설치된 도구를 안전하게 실행합니다(인수 삭제, 네트워크 정책, 속도 제한, 감사 로깅). SSH를 통한 원격 실행을 지원합니다. |
| 셸 없이 도구를 안전하게 파이프로 연결합니다( |
| 명시적이고 샌드박스가 없는 Python/Bash 실행 옵트인. 스크립트별 venv 선택을 지원합니다. |
| 원격 도구 실행을 위한 SSH 원격 호스트를 추가, 제거, 나열 및 테스트합니다. |
MCP 클라이언트는 모든 도구와 설치 상태를 쿼리하고, 관리되는 도구 호출을 연결하고, 출력을 구문 분석하고, 발견한 내용을 기반으로 방향을 전환할 수 있습니다. 스크립트 실행에는 별도의 옵트인이 필요합니다.
외부 정찰 → 공격 표면(CYBERSEC_MCP_ALLOW_EXTERNAL=1 필요, 승인된 범위만)
"target.com의 공격 표면을 열거하고 악용 가능한 항목을 플래그 지정하세요" —
amass/subfinder로 분산 →httpx로 확인 및 프로브 →whatweb으로 핑거프린팅 →nuclei템플릿 실행 →ffuf로 콘텐츠 검색 후 노출도별로 호스트 순위를 매기고 다음 단계를 제안합니다."
/go?url=에서 오픈 리다이렉트를 발견했습니다 — 악용하세요" —curl로 확인한 다음 SSRF/OAuth 토큰 탈취 PoC를 구축하고 악용 가능한 콜백을 탐색합니다.
웹 익스플로잇
"로그인 엔드포인트에서 SQLi를 확인하고 악용하세요" —
sqlmap으로 확인 및 덤프(파괴적인--os-shell/--os-cmd는 정책상 차단됨)한 다음run_script로 인증 우회를 자동화하고 PoC에 충분한 정보만 가져옵니다."GraphQL 인트로스펙션이 켜져 있습니다 — 매핑하고 IDOR를 찾으세요" — 스키마를 가져오고, 쿼리를 생성하고, 객체 ID를 퍼징하고, 인증된 응답과 인증되지 않은 응답을 비교합니다.
Active Directory / 내부
"10.10.0.0/24의 낮은 권한 자격 증명 — Domain Admin으로 가는 경로를 찾으세요" —
bloodhound로 수집하고,impacket(GetUserSPNs.py)으로 커베로스팅하고,hashcat으로 TGS를 크래킹한 다음,netexec로 측면 이동을 검증합니다 — 모두 SSH를 통한 Kali VM에서."DCSync 권한을 확인하고 경로가 있으면 덤프하세요" — 복제 ACL을 열거한 다음 DC에 대해
secretsdump.py를 실행합니다.
바이너리 익스플로잇 및 리버싱
"이 64비트 바이너리에 대한 ret2libc 익스플로잇을 구축하세요" —
checksec/readelf로 분류하고,ROPgadget으로 가젯을 찾고,puts@plt호출로 libc를 누출한 다음venv="pwntools"에서 전체pwntools체인을 작성하고 로컬에서 셸을 획득합니다."스트리핑된 이 바이너리에서 알고리즘을 복구하세요" —
objdump/radare2디스어셈블리를 대상 분석에 파이프한 다음run_script재구현으로 동작을 검증합니다.
암호
"이 RSA를 깨세요 — 작은
e, 여러 개의 암호문" — 공격(Håstad / common-modulus / Wiener)을 감지하고 venv에서pycryptodome+sympy로 해결하여 평문을 반환합니다."이 JWT는 약한 키를 사용하는 HS256입니다" — 서명 비밀을 크래킹하고 관리자 토큰을 위조합니다.
블루 팀 · 탐지 엔지니어링
"이 기술에 대한 Sigma 규칙을 작성하고 내 SIEM으로 변환하세요" — 규칙을 작성하고
sigma-cli를 통해 대상 백엔드(Splunk / Elastic)용으로 렌더링합니다."이 Windows 이벤트 로그에서 측면 이동을 탐지하세요" — Sigma 규칙으로 EVTX에 대해
chainsaw를 실행한 다음 호스트 및 타임라인별로 적중 항목을 요약합니다."이 샘플에서 YARA 규칙을 만들고 트리를 스캔하세요" —
yara시그니처를 생성하고 재귀적으로 실행합니다.
DFIR · 악성코드 트라이어지
"이 메모리 덤프의 타임라인을 만드세요" —
volatility3플러그인(pslist,netscan,malfind)을 훑고 하나의 내러티브로 연결합니다."이 pcap에서 C2 비콘을 탐지하세요" —
tshark/tcpdump추출 →suricata규칙 → 주기적 콜백 플래그 지정"이 의심스러운 파일을 정적으로 분류하세요" —
file→strings→capa/yara후 강화를 위한 IOC를 추출합니다.
클라우드 · 컨테이너 · 운영
"퍼블릭 S3 및 위험한 IAM에 대해 이 AWS 계정을 감사하세요" —
prowler/scoutsuite를 실행하고 심각도가 높은 결과만 표시합니다."배포 전에 이 이미지와 k8s 매니페스트를 스캔하세요" —
grype이미지 스캔 및kubescape구성 검사"내 레드팀 적용 범위는 무엇이며 격차를 해소하세요" —
get_profile_tools("redteam")을 설치 상태와 비교하고 정확한 설치 명령을 출력합니다.
모바일 · 무선 · 블록체인
"비밀 및 안전하지 않은 저장소에 대해 이 APK를 정적 분석하세요" —
apktool/jadx디컴파일 → MobSF 스타일 검사 후 키와 엔드포인트를 검색합니다."이 Wi-Fi 캡처를 감사하세요" — 핸드셰이크를 구문 분석하고
aircrack-ng/hashcat을 실행합니다."재진입 취약점이 있는지 이 Solidity 계약을 검토하세요" —
slither/mythril을 실행하고 결과를 설명합니다.
run_tool과 run_pipeline은 인수가 삭제되고, 네트워크 정책이 적용되며, 속도가 제한되고, 감사 로깅됩니다. run_script는 기본적으로 꺼져 있습니다. 활성화하면 MCP 서버 사용자의 파일 시스템 및 네트워크 권한으로 전체 코드 실행 옵트인이 되기 때문입니다. 외부 대상 정책은 스크립트를 샌드박스 처리하지 않습니다. 파괴적인 플래그(--os-shell, -rf, --exploit, …)는 관리되는 도구 경로에서 차단됩니다. 승인된 시스템에서만 사용하세요.
빠른 시작
uv가 필요합니다. Claude Code는 추적된 프로젝트 .mcp.json을 직접 사용할 수 있습니다. 기본적으로 스크립트와 외부 네트워크 대상을 비활성화한 상태로 stdio를 통해 MCP 서버를 실행합니다:
{
"mcpServers": {
"cybersec-tools": {
"command": "uv",
"args": ["run", "--directory", "mcp_server", "fastmcp", "run", "server.py", "--transport", "stdio", "--no-banner"],
"env": {
"CYBERSEC_MCP_ALLOW_EXTERNAL": "0",
"CYBERSEC_MCP_ALLOW_SCRIPTS": "0"
}
}
}
}Claude Code를 다시 시작하세요. 15개의 도구가 /mcp에 나타납니다.
기타 MCP 클라이언트(Codex, Cursor, 로컬 LLM)
MCP는 개방형 표준이므로 동일한 stdio 서버가 MCP를 지원하는 모든 클라이언트에서 작동합니다. 리포지토리 루트에서 실행 명령은 다음과 같습니다:
uv run --directory mcp_server fastmcp run server.py --transport stdio --no-banner--directory mcp_server는 작업 디렉터리를 기준으로 합니다. 클라이언트가 하위 디렉터리에서 서버를 시작할 수 있는 경우 리포지토리 루트에서 루트 인식 실행 프로그램을 사용하세요:
bash scripts/mcp-launch.sh리포지토리 외부에서 실행 프로그램의 절대 경로를 사용하세요:
bash /path/to/cybersec-toolkit/scripts/mcp-launch.shCodex — 프로젝트
.codex/config.toml이 포함되어 있습니다 (Git 루트를 먼저 해석하므로 하위 디렉터리에서도 작동합니다). Codex의 기본 구성은~/.codex/config.toml입니다. 프로젝트 파일이 인식되지 않으면[mcp_servers.cybersec-tools]블록을 홈 구성에 복사하세요.Cursor / Continue / Cline / Goose — 클라이언트의 MCP 설정 UI 또는 구성 파일에 동일한 실행 명령을 추가하세요 (클라이언트의 작업 디렉터리가 저장소 루트가 아닌 경우 절대 경로를 사용하세요).
LM Studio (≥0.3.17) — LM Studio 자체가 MCP 호스트이므로 브리지가 필요 없습니다. LM Studio의 작업 디렉터리가 저장소 루트가 아니므로 절대 경로 또는 git-root 래퍼를 사용하여
mcp.json(Cursor 표기법,.mcp.json과 동일한mcpServers형태)에 서버를 추가하세요. LM Studio의 API를 통한 MCP 사용은 ≥0.4.0 및/api/v1/chat또는/v1/responses와 같은 MCP 지원 엔드포인트가 필요합니다.Ollama — Ollama는 모델 런타임이지 MCP 호스트가 아닙니다. 그 앞에 MCP 지원 에이전트(예: Kit)를 두고 위의 실행 명령을 가리키게 하세요.
기타 로컬 LLM — 순수 모델은 자체적으로 MCP를 지원하지 않습니다. MCP 지원 호스트(LM Studio, Cline, Continue, Goose, Kit, 또는
mcpo와 같은 MCP→OpenAPI 브리지를 통한 Open WebUI) 뒤에서 실행하고 해당 호스트가 위의 실행 명령을 가리키게 하세요.
보안 참고: 이 서버 하나만으로 시작하세요. 이미 인수 정리, 네트워크 허용 목록, 속도 제한, 감사 로깅을 적용하며, 기본적으로 스크립트 실행과 외부 대상이 비활성화된 상태로 제공됩니다. 승인된 범위가 없으면 해당 기능을 계속 비활성화하고, 인간 개입 도구 승인을 지원하는 호스트를 선호하세요.
공급업체 중립 저장소 지침은 AGENTS.md에 있습니다 (Codex 및 많은 에이전트 도구가 기본적으로 읽음). Claude Code는 CLAUDE.md를 읽습니다.
WSL에서 연결 (예: Kali Linux)
MCP 서버는 stdio를 통해 실행되므로 Claude Code가 생성할 수 있는 모든 환경에서 작동합니다. WSL 내부에 설치된 도구를 사용하려면:
{
"mcpServers": {
"cybersec-tools": {
"command": "wsl",
"args": [
"-d", "kali-linux",
"bash", "-lc",
"cd /path/to/cybersec-toolkit/mcp_server && uv run fastmcp run server.py --transport stdio --no-banner"
]
}
}
}Docker에서 연결
{
"mcpServers": {
"cybersec-tools": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "CYBERSEC_MCP_ALLOW_EXTERNAL=0", "-e", "CYBERSEC_MCP_ALLOW_SCRIPTS=0",
"--entrypoint", "bash", "cybersec-toolkit",
"-c",
"cd /opt/cybersec-toolkit/mcp_server && uv run fastmcp run server.py --transport stdio --no-banner"
]
}
}
}스크립트 실행
run_script는 AI가 Python 또는 Bash 스크립트를 작성하고 실행할 수 있게 합니다. CYBERSEC_MCP_ALLOW_SCRIPTS=1이 필요하며, OS 샌드박스가 적용되지 않고 CYBERSEC_MCP_ALLOW_EXTERNAL의 제약을 받지 않습니다. 활성화하면 스크립트에 MCP 서버 프로세스와 동일한 파일 시스템 및 네트워크 권한이 부여됩니다. 옵트인하기 전에 생성된 코드와 범위를 검토하세요:
{
"mcpServers": {
"cybersec-tools": {
"command": "uv",
"args": ["run", "--directory", "mcp_server", "fastmcp", "run", "server.py", "--transport", "stdio", "--no-banner"],
"env": {
"CYBERSEC_MCP_ALLOW_SCRIPTS": "1",
"CYBERSEC_MCP_ALLOW_EXTERNAL": "0"
}
}
}
}Venv 지원
일부 패키지(예: pwntools)는 이전 버전의 Python이 필요합니다. venv 매개변수를 사용하면 AI가 스크립트별로 올바른 인터프리터를 선택할 수 있습니다:
# One-time setup: create a venv with pwntools
python3.12 -m venv ~/.ctf-venvs/pwntools
~/.ctf-venvs/pwntools/bin/pip install pwntools z3-solver그러면 AI는 자동으로 run_script("from pwn import *; ...", venv="pwntools")를 사용합니다.
기본 MCP 환경에는 FastMCP와 Python 표준 라이브러리가 포함되어 있습니다. 명명된 venv 없이 requests, pycryptodome, beautifulsoup4, Pillow 또는 NumPy를 사용하기 전에 cd mcp_server && uv sync --extra ctf-core로 선택적 헬퍼 세트를 설치하세요.
CYBERSEC_MCP_VENVS_DIR를 설정하여 기본 ~/.ctf-venvs/ 위치를 재정의할 수 있습니다.
수동 스크립트
manual_scripts/ 디렉터리는 AI가 사용자를 위해 생성한 영구 스크립트를 저장합니다 — 복잡한 익스플로잇, 다단계 솔버, 파서, 프로토콜 헬퍼, 그리고 한 번 실행 후 사라지지 않아야 하는 재사용 가능한 도구입니다. 동반 모드에서 AI는 스크립트를 제안한 후 승인 또는 명확한 "계속" 후에만 작성하고 실행합니다. 옵트인 autonomous 모드에서는 일반 도구와 파이프라인이 더 이상 진행되지 않고 프로그래밍 로직이 가장 작은 신뢰할 수 있는 경로일 때 AI가 run_script를 통해 범위가 제한된 헬퍼를 작성, 저장, 실행할 수 있습니다. curl과 같은 간단한 정찰/HTTP 명령은 run_tool 호출로 유지됩니다. 스크립트는 도구가 깔끔하게 표현할 수 없는 로직을 위한 것입니다.
서버 테스트
cd mcp_server && uv run fastmcp dev server.py이렇게 하면 각 도구를 대화형으로 테스트할 수 있는 웹 기반 MCP Inspector가 열립니다.
Claude Desktop 설정 및 전체 문서는 mcp_server/README.md를 참조하세요.
도움 요청
이 프로젝트는 의도적으로 규모가 크며, 커뮤니티의 도움을 환영합니다.
유용한 기여로는 다양한 배포판에서 설치 테스트, 누락된 도구 추가, 패키지 매핑 수정, MCP 워크플로 개선, 예제 사용 사례 작성, 문서 정리, 실제 CTF, 랩, 버그 바운티, 펜테스트, DFIR 또는 방어 워크플로에서의 불편한 점 보고 등이 있습니다.
큰 변경 사항은 이슈를 열고, 작은 수정은 집중된 PR을 보내세요. 검증 체크리스트는 CONTRIBUTING.md를 참조하세요.
개발
공개 기여자 문서는 CONTRIBUTING.md에 있습니다. 빠른 시작은 다음과 같습니다:
git clone https://github.com/26zl/cybersec-toolkit.git && cd cybersec-toolkit
make setup # submodules + MCP deps + skill mirror (Codex-ready)
make check # core local checks — shellcheck, validators, bats, ruff, pytestmake help는 모든 단축키(lint, test, validate, curate, sync-skills, check-skills, mcp, docker, …)를 나열합니다. 각 대상이 실행하는 원시 명령은 CLAUDE.md / AGENTS.md에 있습니다.
MCP Python 프로젝트는 [tool.uv] exclude-newer = "3 days"와 함께 uv를 사용합니다. 새 종속성 해석은 의도적으로 지난 72시간 내에 업로드된 패키지를 무시하여 종속성 혼동 및 손상된 릴리스의 폭발 반경을 줄입니다. Dependabot은 동일한 3일 쿨다운을 사용하며, 주간 uv 업데이트 워크플로도 동일한 정책을 상속합니다.
이 릴리스 연령 정책은 프로젝트 부트스트랩/런타임 종속성에만 적용됩니다: MCP Python 패키지, CI 작업, 프로젝트 실행에 필요한 Docker 빌드 입력. 레지스트리에서 설치된 사이버 보안 도구를 지연시키거나 고정하지 않습니다. 해당 도구는 의도적으로 모듈 설치 프로그램 및 업데이트 흐름을 따르므로 운영자가 최신 스캐너, 익스플로잇, 시그니처 및 연구 유틸리티를 얻을 수 있습니다.
셸 테스트는 Linux 또는 WSL에서 실행하세요. 네이티브 Windows 체크아웃은 벤더링된 Bats 하위 모듈을 CRLF로 다시 작성하여 $'\r' 오류를 유발할 수 있습니다.
에이전트 스킬
이 저장소는 표준 .claude/skills/ 소스 트리 아래에 872개의 에이전트 스킬을 제공합니다. Claude Code는 해당 트리를 직접 발견합니다. scripts/sync-skills.sh는 호환 클라이언트를 위한 이식 가능한 .agents/skills/ 미러를 생성합니다. 스킬은 작업에 따라 온디맨드로 활성화되며 컨텍스트를 영구적으로 소비하지 않습니다. 이 중 31개는 프로젝트 작성이고 841개는 오픈 소스 프로젝트에서 선별되었습니다 — 각각 아래와 THIRD_PARTY_NOTICES.md에 출처가 표시됩니다.
10개의 프로젝트별 개발자 스킬 (
add-tool,validate-all,module-scaffold,writeup-template,mcp-sync-check,security-wordlists,security-payloads,guided-assessment,skill-dependency-audit,skill-curation-router)4개의 교차 스킬 코디네이터 (
finding-triage,security-comms,authorization-gate,evidence-hygiene) — 다른 스킬이 발견 사항, 커뮤니케이션, 권한 검사, 증거 정리를 라우팅하는 역할7개의 커버리지 갭 앵커 스킬 (GRC/프라이버시, AI/LLM 보안, IoT/임베디드/하드웨어, 메인프레임, 통신/5G, SAP/ERP, 공급망/제품 보안)
multica-ai/andrej-karpathy-skills에서 가져온 1개의 코딩 에이전트 워크플로 스킬 (MIT)
6개의 CTF 방법론 스킬 (
ctf-crypto,ctf-pwn,ctf-web,ctf-rev,ctf-forensics,ctf-stego)4개의 버그 바운티 방법론 스킬 (
bounty-recon,bounty-web,bounty-api,bounty-mobile)BugHunter (claude-bug-bounty)에서 가져온 10개의 버그 바운티 워크플로 스킬 (MIT)
SnailSploit Claude-Red에서 가져온 58개의 공격 방법론 스킬 (MIT)
Trail of Bits에서 가져온 14개의 코드 감사 스킬 (CC-BY-SA 4.0)
커뮤니티 프로젝트 mukul975/Anthropic-Cybersecurity-Skills에서 가져온 754개의 운영 방법 (Apache 2.0)
Transilience에서 가져온 4개의 고수준 워크플로 (MIT)
소스 및 카테고리 인덱스는 .claude/skills/SKILLS.md에 있습니다.
Claude Code 플러그인으로 설치
이 저장소는 플러그인 마켓플레이스 (.claude-plugin/) 역할도 하므로 수동으로 클론하지 않고 전체 스킬 라이브러리를 모든 프로젝트에 가져올 수 있습니다:
/plugin marketplace add 26zl/cybersec-toolkit
/plugin install cybersec-toolkit@cybersec-toolkit플러그인은 .claude/skills/ 아래의 스킬을 노출합니다 (.claude-plugin/plugin.json의 skills 필드로 선언됨). MCP 서버는 .mcp.json을 통해 별도로 구성됩니다 — MCP 서버를 참조하세요.
지원되는 클라이언트에서 이러한 스킬 사용
에이전트 스킬은 Markdown과 선택적 헬퍼 파일로 구성되지만, 발견 및 활성화는 MCP 기능이 아닌 클라이언트 기능입니다. Claude Code, OpenCode, Codex, Gemini CLI, GitHub Copilot, Cursor, Cline, Goose, Hermes 및 OpenClaw는 서로 다른 경로 또는 설정을 통해 에이전트 스킬을 지원합니다. scripts/sync-skills.sh는 저장소의 .claude/skills/ 소스를 해당 위치를 사용하는 클라이언트를 위해 .agents/skills/로 미러링합니다:
scripts/sync-skills.sh # mirror .claude/skills/ -> .agents/skills/
scripts/sync-skills.sh --check # report drift without writing (exit 1 if out of date)make setup (개발 참조)이 이 미러 단계를 실행합니다.
.claude/skills/는 단일 소스로 유지됩니다. .agents/skills/는 생성되고 git-ignored되므로 스킬을 편집한 후 동기화를 다시 실행하세요. Continue와 LM Studio는 MCP 서버를 사용할 수 있지만, 두 클라이언트 모두 현재 이 저장소의 SKILL.md 파일 자동 발견을 문서화하지 않습니다. 독립형 SKILLS.md 인덱스는 수동 컨텍스트일 뿐이며 온디맨드 활성화를 추가하지 않습니다. 해당 클라이언트에서는 Continue 규칙/프롬프트를 사용하거나 선택한 스킬 콘텐츠를 컨텍스트로 제공하세요. 클라이언트별 경로 및 제한 사항은 docs/AI_CLIENTS.md를 참조하세요.
scripts/validate_claude_skills.py는 스킬 메타데이터, 인덱스 수, 큐레이션 신선도, Python 및 PowerShell용 헬퍼 스크립트 구문을 확인합니다. 벤더링된 스킬 헬퍼 스크립트에는 선택적 작업별 Python 가져오기도 있을 수 있습니다. 해당 가져오기는 헬퍼 스크립트 가져오기 인벤토리에서 생성된 .claude/skills/requirements.txt에 선언됩니다:
python3 scripts/audit_skill_dependencies.py --check-declared
python3 scripts/audit_skill_dependencies.py --write-requirements
python3 -m pip install -r .claude/skills/requirements.txt스킬 순위/큐레이션은 .claude/skills/CURATION.md 및 .claude/skills/curation.json에 있습니다. 다음으로 다시 생성하세요:
python3 scripts/curate_claude_skills.py --write도구 위치
비시스템 도구(pipx, Go, Cargo, git, 바이너리 릴리스)는 Linux에서 /usr/local/bin/에, Termux에서 $PREFIX/bin에 설치됩니다. 시스템 패키지는 기본 위치(/usr/bin/)에 설치됩니다.
방법 | 바이너리 위치 (Linux) | 바이너리 위치 (Termux) | 데이터 위치 |
pipx |
|
|
|
Go |
|
|
|
Cargo |
|
|
|
Git 저장소 |
|
|
|
바이너리 릴리스 |
| 건너뜀 (glibc가 Bionic과 호환되지 않음) | -- |
Docker 이미지 (선택 사항)
--enable-docker와 함께만 사용됩니다. Docker가 설치되지 않았고 --enable-docker가 설정된 경우 설치 프로그램은 먼저 Docker를 설치하라는 오류와 함께 종료됩니다.
Image | Module | Flag | Description |
| misc |
| Empire C2 |
| misc |
| SpiderFoot OSINT |
| web |
| BeEF 브라우저 익스플로잇 |
| mobile |
| MobSF |
| enterprise |
| BloodHound CE |
| blockchain |
| Echidna 스마트 계약 퍼저 |
| blueteam |
| TheHive IR 플랫폼 |
| blueteam |
| Cortex 분석 |
| blueteam |
| Zeek 네트워크 분석 |
| blueteam |
| Zircolite EVTX 탐지 |
| llm |
| PentAGI 자율 침투 테스트 |
배포판 지원
Debian/Ubuntu/Kali가 기본 대상입니다 -- 전체 670+ 레지스트리가 여기에서 사용 가능하며, 테스트 커버리지가 가장 강력합니다. Fedora/Arch/openSUSE는 ~10-20개의 패키지가 자동으로 건너뛰어지며(배포판별), 통합 워크플로우로 커버됩니다. WSL과 ARM은 실질적으로 지원되지만, 아직 전용 CI 작업이 없습니다. Windows와 macOS는 감지되어 명확한 오류 메시지와 함께 차단됩니다.
플랫폼 | 상태 |
WSL | 설치 및 MCP 사용에 지원됩니다. 무선 모듈은 자동으로 건너뛰어지며(하드웨어 접근 불가) 커널 수준 패키지는 필터링됩니다. 전용 CI 작업이 아직 없으므로 릴리스에 중요한 변경 사항은 로컬 WSL 배포판에서 검증하세요. Windows 마운트 경로에 저장소를 두는 경우 아래의 Windows Defender 참고를 확인하세요. |
ARM (aarch64/armv7) | x86 전용 바이너리 릴리스 및 소스 빌드 도구에 대해 자동 건너뛰기와 함께 지원됩니다. 아직 전용 CI 작업이 없습니다. |
Termux (Android) | 지원됩니다. 아직 전용 CI 작업이 없습니다. sudo가 필요 없습니다. Docker/snap/바이너리 릴리스/소스 빌드는 건너뛰어집니다(Bionic 비호환). |
Windows (네이티브) | 지원되지 않습니다. WSL을 사용하세요. |
macOS | 지원되지 않습니다. Docker 컨테이너를 사용하세요. |
기타 Linux 배포판 | 지원되는 패키지 관리자( |
공급망 모델
이 설치 프로그램은 인터넷에서 코드를 다운로드하여 실행합니다. Linux에서는 root(sudo)로 실행되고, Termux에서는 앱의 사용자 샌드박스에서 실행됩니다(root 없음).
시스템 패키지: 배포판 저장소(apt, dnf, pacman, zypper, pkg)에서 GPG 서명됨
pipx/Go/Cargo/Gem/npm: 레지스트리에서 다운로드(서명 검증 없음, pipx는 venv에서 격리됨)
바이너리 릴리스: 체크섬 파일이 제공되는 경우 SHA256 검증, 불일치 시 하드 실패.
--require-checksums또는--production프리셋을 사용하면 체크섬 파일이 게시되지 않은 경우에도 실패합니다. 경고:--fast는 체크섬을 게시하는 릴리스에 대한 검증을 포함하여 모든 체크섬 검증을 비활성화합니다 -- 프로덕션 또는 CI 환경에서 사용하지 마세요MCP Python 의존성: 3일
exclude-newer창으로uv에 의해 해결됨; Dependabot도 의존성 PR을 제안하기 전에 3일을 기다립니다. 이는 설치된 보안 도구에는 적용되지 않습니다Go SDK: 사용 가능한 경우 go.dev에 게시된 해시에 대해 SHA256 검증; API 실패 시 경고,
--require-checksums로 하드 실패Git 저장소: HEAD에서 클론, 의존성은 격리된 venv에 설치됨(setup.py는 실행되지 않음)
소스 빌드:
make를 실행합니다(Linux에서 root로) -- 빌드하는 내용을 검토하세요Toolkit Docker 빌드: Ubuntu 및 uv 소스는 다이제스트로 고정되지만, apt 패키지는 현재 서명된 Ubuntu 저장소에서 해결됩니다; 재빌드는 비트 단위로 재현 가능하지 않습니다
선택적 도구 이미지: 다이제스트가 아닌 변경 가능한 태그로 가져오며, 여러 명시적
latest태그를 포함합니다.--production은 이러한 이미지를 고정하거나 검증하지 않습니다
.versions 파일은 설치된 항목과 시점을 기록합니다.
알려진 제한 사항
체크섬 검증은 기본적으로 최선의 노력(best-effort)입니다. 일부 업스트림 릴리스는 체크섬이나 서명을 게시하지 않으므로, 이러한 경우 다운로드가 암호화 검증 없이 진행될 수 있습니다. --production(또는 --require-checksums)을 사용하여 체크섬 파일이 없을 때 실패로 처리하세요. 이 프리셋은 Git 클론, 언어 패키지 레지스트리 또는 소스 빌드 도구를 고정하지 않습니다; 이러한 항목은 여전히 업스트림 릴리스 채널을 추적합니다. Go SDK 다운로드는 API에 접근 가능할 때 go.dev에 대해 SHA256 검증됩니다; 엄격한 체크섬 모드는 접근 불가 시 하드 실패합니다.
--fast는 바이너리 릴리스에 대한 모든 체크섬 검증(SHA256 검사 및 누락 체크섬 경고 모두)을 건너뜁니다. 여기에는 체크섬을 게시하는 릴리스도 포함됩니다. 이는 무결성 검증을 속도와 맞바꿉니다. --require-checksums 및 --production과 상호 배타적입니다. CI 파이프라인이나 공급망 무결성이 중요한 환경에서는 --fast를 사용하지 마세요.
Windows Defender 오탐지
이 저장소를 Windows 마운트 경로(예: C:\Users\<you>\... 또는 WSL에서 작업하는 동안 Windows에서 보이는 모든 폴더)에 클론하면 Microsoft Defender 및 기타 AV 제품이 개별 파일을 격리할 수 있습니다. 방어적 콘텐츠 -- IOC 참조 테이블, 난독화된 PowerShell 샘플, 악성코드 분석 스니펫, .claude/skills/, writeups/ 내의 익스플로잇 PoC 문자열 및 mcp_server/의 일부 -- 실제 공격자가 사용하는 것과 동일한 바이트 문자열을 포함하므로 시그니처 및 ML 기반 엔진이 이를 플래그할 수 있습니다. 일반적인 탐지에는 Trojan:Script/Wacatac.B!ml, HackTool:* 및 일반적인 Heur.* 판정이 포함됩니다.
이는 보안 툴킷의 맥락에서 오탐지입니다. Windows에서 저장소로 작업하려면 세 가지 옵션이 있습니다:
저장소 폴더에 대한 Defender 제외 추가(개인 개발 머신에 권장). 관리자 PowerShell에서 실행:
Add-MpPreference -ExclusionPath "C:\path\to\cybersec-toolkit"격리에서 개별 파일 복원 -- Windows 보안 -> 바이러스 및 위협 방지 -> 보호 기록 -> "디바이스에서 허용"을 통해. 파일별로 수행되지만 업데이트 시 재탐지를 방지하지는 않습니다.
저장소를 WSL 파일시스템 안에 유지(예: 배포판의
~/cybersec-toolkit). Defender는 기본적으로 WSL2의 vhdx를 스캔하지 않으므로 탐지가 발생하지 않습니다.scripts/sync-wsl.sh는 MCP 서버 하위 디렉터리에 대해 이미 이 작업을 수행합니다.
Defender가 제거한 파일은 git status에서 D로 표시됩니다. 콘텐츠는 git 기록에 보존됩니다. 제외가 설정된 후 git checkout -- <path>로 복원하세요.
라이선스
MIT 라이선스 -- 자세한 내용은 LICENSE를 참조하세요.
이 저장소는 자체 조건에 따라 타사 구성 요소도 재배포하며,
CC-BY-SA-4.0(ShareAlike, MIT로 재라이선스 불가)에 따른 일부를 포함합니다. 번들 콘텐츠를
재배포하거나 수정하는 경우 해당 조건을 따르세요 --
THIRD_PARTY_NOTICES.md를 참조하세요.
기여 워크플로우 및 리뷰 기대사항은 CONTRIBUTING.md를 참조하세요.
커뮤니티 행동 기대사항은 CODE_OF_CONDUCT.md를 참조하세요.
취약점 신고는 SECURITY.md를 참조하세요.
면책 조항
이 프로젝트는 교육, 방어 및 명시적으로 승인된 보안 테스트 목적으로만 제공됩니다. 소유하거나 평가할 서면 허가를 받은 시스템에서만 사용하고, 모든 관련 법률, 참여 규칙, 타사 도구 라이선스 및 서비스 약관을 준수하세요.
이 툴킷은 이중 용도의 공격 및 방어 도구를 포함합니다. 일부 명령은 네트워크를 스캔하거나, 익스플로잇을 실행하거나, 시스템을 수정하거나, 보안 경고를 트리거할 수 있습니다. MCP/AI 통합은 안전 정책으로 보호되지만, 사용자는 작업을 실행하기 전에 범위, 프롬프트, 명령 및 출력을 검토할 책임이 있습니다.
이 저장소는 보안 도구 자체를 재배포하지 않습니다. 설치 시점에 공개적으로 사용 가능한 오픈소스 프로젝트를 공식 업스트림 소스에서 설치합니다. 합법적이고 승인된 사용만을 위한 것입니다.
이 프로젝트는 보증 없이 "있는 그대로" 제공됩니다. 유지관리자는 이 툴킷 사용으로 인한 오용, 손상, 데이터 손실, 서비스 중단 또는 법적 결과에 대해 책임을 지지 않습니다.
타사 콘텐츠는 원래 라이선스에 따라 번들로 제공됩니다 --
THIRD_PARTY_NOTICES.md를 참조하세요.
Available Tools
15 toolscheck_installedARead-onlyIdempotent
Check if a specific cybersecurity tool is installed on the system.
Uses multiple detection strategies: .versions tracking, PATH lookup, pipx binary name fallback, /opt directory check, and docker image check.
When host is provided, checks installation on the remote host via SSH using 'which '.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Optional remote host name (as configured via manage_remote_hosts). | |
| tool_name | Yes | Name of the tool to check (as listed in tools_config.json). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds real value beyond that by enumerating the five detection strategies and disclosing that a host argument switches to an SSH-based 'which <binary>' check. Only the absence of failure-mode or return-behavior detail keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by the detection strategies and the remote-host behavior. Three short paragraphs, every sentence carrying information, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be recounted, and annotations cover the safety profile. Between purpose, detection strategies, and remote-host semantics, an agent has everything needed to call this correctly in either local or remote mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented and the baseline is 3. The description still adds meaning by explaining what host actually causes (remote SSH installation check) and anchoring tool_name to tools_config.json, going beyond the schema's phrasing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Check if a specific cybersecurity tool is installed on the system.' This is clearly distinct from run_tool, list_tools, or get_tool_info. It does not explicitly name or route away from those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining that supplying host triggers a remote SSH check, which hints at the local-vs-remote decision. However, it never says when to use this versus list_tools or get_tool_info, and offers no exclusions or prerequisites. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cve_infoARead-onlyIdempotent
Map a CVE to the toolkit's tools, skills, and modules, plus live-lookup commands.
Local-first and deterministic: accepts a CVE id (e.g. "CVE-2021-44228") or a common nickname (e.g. "log4shell", "eternalblue", "zerologon", "printnightmare") and returns the curated exploitation skills, mapped registry tools with install status, and relevant modules.
For live CVSS / CISA KEV / EPSS data it returns ready-to-run run_tool("curl", ...) commands rather than fetching itself — those hit external hosts and are subject to the CYBERSEC_MCP_ALLOW_EXTERNAL policy. Always clear the authorization-gate skill before testing.
| Name | Required | Description | Default |
|---|---|---|---|
| cve | Yes | A CVE id (CVE-YYYY-NNNN) or a known vulnerability nickname. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: local-first/deterministic behavior, that it returns ready-to-run run_tool("curl", ...) commands rather than performing network fetches, that external lookups are gated by CYBERSEC_MCP_ALLOW_EXTERNAL, and that an authorization-gate skill must be cleared first. This explains the openWorldHint=false annotation and the safety profile rather than merely restating it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the one-line purpose, then groups the input contract, return behavior, and safety prerequisite into distinct, information-dense paragraphs. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be enumerated, and the description still previews the return shape (skills, tools with install status, modules). It is complete for normal use, though it omits edge-case behavior such as an unknown or ambiguous CVE id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by listing concrete nickname examples ('log4shell', 'eternalblue', 'zerologon', 'printnightmare') and the CVE-YYYY-NNNN form, which helps the agent normalize input beyond the schema's brief wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('map a CVE to the toolkit's tools, skills, and modules') and specifies the accepted input forms (CVE id or nickname). It is readily distinguishable from siblings like get_tool_info and get_module_info, which operate on the toolkit's own inventory rather than mapping an external CVE.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains when it acts locally versus when it defers to curl commands, and names a hard prerequisite ('always clear the authorization-gate skill before testing'). It gives clear operating context but does not name an alternative tool for cases the caller might prefer instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_module_infoBRead-onlyIdempotent
Get full details about a module: description, all tools, and management commands.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes | Module name (e.g. "web", "pwn", "forensics"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds that it returns the module description, its tools, and management commands, but says nothing about unknown-module behavior or result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource first and enumerates the payload; nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one documented parameter, read-only annotations, and an output schema that carries the return structure, the description covers everything needed to invoke the tool correctly. Only the installed/prerequisite condition is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, including examples ('web', 'pwn', 'forensics'). The description adds no meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('module') plus the shape of what comes back (description, tools, management commands). It is distinguishable from sibling get_tool_info by operating on a module rather than a tool, though it never explicitly names that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g. must the module be installed first?), and no routing toward alternatives like get_tool_info or list_tools. The agent must infer the context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_toolsARead-onlyIdempotent
List every tool that a specific profile would install.
Given a profile name, returns the complete list of tools grouped by module, with install status for each. This lets you see exactly what you get before running the install command.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes | Profile name (e.g. "ctf", "redteam", "web", "full"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is fully covered. The description adds that results are grouped by module with per-tool install status, which is useful, but does not disclose anything about auth or rate limits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and efficiently sized at two short sentences. There is mild redundancy, since 'List every tool that a specific profile would install' and 'returns the complete list of tools' carry nearly the same information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a one-parameter, read-only tool with an output schema present and annotations covering safety, the description supplies everything needed to invoke it correctly. Return-value details are appropriately left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'profile' parameter already documents example values ('ctf', 'redteam', 'web', 'full'). The description only restates 'Given a profile name,' adding no format or validation detail beyond the schema — the baseline 3 for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'List every tool that a specific profile would install' — and adds scope detail, returning tools grouped by module. This clearly separates it from siblings like list_tools (all tools) and get_tool_info (single tool).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a concrete use context: 'This lets you see exactly what you get before running the install command,' which implies previewing before install. It stops short of naming explicit alternatives (e.g., list_profiles for discovering valid names), so it is clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_infoBRead-onlyIdempotent
Get detailed information about a cybersecurity tool.
Returns the tool's install method, module, URL, installation status, module description, and management commands (install, update, remove).
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes | Name of the tool to look up. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the result includes install method, module, URL, install status and management commands, which is useful behavioral context, but it says nothing about what happens for an unknown tool_name or any rate limits. Given annotations carry the main burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, no filler. The second sentence enumerating return fields is slightly redundant given an output schema exists, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since an output schema exists, the description need not explain return values, so its core obligation is purpose plus routing. Purpose is covered; what's missing is any signal about when to prefer this over list_tools, check_installed, or get_module_info, and what happens on a bad tool name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single documented parameter, so the baseline 3 applies. The description adds no format, casing, or matching-rule detail (e.g., exact name vs alias) beyond the schema's 'Name of the tool to look up.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get detailed information about a cybersecurity tool') and even enumerates the fields returned, so an agent knows exactly what comes back. It does not, however, differentiate itself from nearby siblings like get_module_info or check_installed, which also return tool/module metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use statement. The description never mentions list_tools (browse the catalog) or check_installed (installation state), even though this tool overlaps heavily with both, leaving the agent to infer routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guided_assessmentADestructive
Plan, guide, or autonomously solve a security task over the MCP toolchain.
An orchestrator on top of the registry, advisors, install checks, audit logging, and execution policy. Bootstrap commands use the governed execute_tool() path, so target scope, external-network, shell-injection, and blocked-flag checks apply.
By DEFAULT it auto-detects the right workflow + tools for the problem (workflow/ target_type="auto") and acts as a companion: it returns classification, triage gates, recommended skills, reporting next steps, a plan, tool install status, next actions, and the full MCP toolchain surface WITHOUT auto-running commands in this initial call. The agent can then run tools step by step as the user approves. The heaviest mode (autonomous) starts the auto-solver contract: it bootstraps triage, then the client agent continues with the full MCP toolchain (registry/advisors/install checks/run_tool/run_pipeline and separately gated run_script). When registry tools and pipelines are not enough, autonomous mode may create, save, and run scoped helper scripts for the user, persisting reusable ones under manual_scripts/. Simple recon/HTTP commands such as curl remain run_tool calls.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "companion" (default) or "autonomous" (opt-in). | companion |
| target | Yes | URL, hostname/IP, or local file path to assess. | |
| finding | No | Optional short finding summary to classify for triage/report routing. Raw finding text is used locally but not echoed in the result. | |
| workflow | No | "auto" (default — inferred), "bounty", "ctf", or "generic". | auto |
| intensity | No | "low" (default) or "medium". Medium may include low-volume nmap. | low |
| max_steps | No | Maximum number of bootstrap steps autonomous mode auto-executes. | |
| target_type | No | "auto" (default — inferred from the target) or an explicit type: bounty type (web_app/api/cloud/network/iot/mobile_app) or CTF category. | auto |
| authorization_confirmed | No | Required before any network step executes. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, openWorldHint=true), the description discloses governed execution checks ('target scope, external-network, shell-injection, and blocked-flag checks'), confirms no auto-run in the default call, and explains that autonomous mode may create, save, and run scoped helper scripts, persisting reusable ones under manual_scripts/. It also states that authorization_confirmed is required before any network step executes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and is dense with useful operational detail. It is a bit paragraph-heavy and could be more scannable, but given the complexity of the orchestration behavior, most sentences earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be fully explained, yet the description still summarizes what companion mode returns and what autonomous mode bootstraps. Combined with the annotations and 100% schema coverage, the definition gives an agent enough context to choose and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter semantics already live in the input schema. The description largely repeats default values and enum-like options (mode companion/autonomous, workflow auto, target_type auto) without adding substantial syntax or format guidance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific compound verb+resource: 'Plan, guide, or autonomously solve a security task over the MCP toolchain.' It immediately positions the tool as an 'orchestrator on top of the registry, advisors, install checks, audit logging, and execution policy,' which cleanly distinguishes it from sibling tools like run_tool, run_pipeline, and suggest_for_*.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the default companion mode versus opt-in autonomous mode, and explicitly routes simple recon/HTTP commands to run_tool instead. It does not, however, give a full when-not-to-use rule or spell out the exact conditions under which autonomous mode should be preferred over companion mode, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profilesARead-onlyIdempotent
List all 14 available installation profiles with details.
Each profile is a curated set of modules targeting a specific use case. Shows module count, tool count, and install command for each profile. Profiles range from 'osint' (2 modules) to 'full' (18 modules, 670+ tools).
Returns: All profiles with descriptions, module lists, tool counts, and install commands.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and closed-world behavior, so the safety profile is covered. The description adds genuine context beyond that: exactly 14 profiles, the osint-to-full size range, and that each is a curated module set. The 'Returns' sentence overlaps the output schema and is somewhat redundant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and size, and the supporting sentences are short. The trailing 'Returns:' block restates what the earlier sentence ('Shows module count, tool count, and install command') already established, which is mild duplication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not strictly required, and the description supplies scope, size, and content shape. It is essentially complete for a zero-param read tool, with the only gap being guidance on when to prefer it over adjacent discovery tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Schema coverage is 100% and the description correctly implies no filtering options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all 14 available installation profiles') with explicit scope and quantitative detail. Clear enough to distinguish from siblings like get_profile_tools or recommend_install, which deal with a single profile or a recommendation rather than the full catalog.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the discovery framing but never stated: it does not say when to call this versus get_profile_tools, recommend_install, or check_installed. No exclusions or prerequisites are given, though the context is reasonably inferable for a list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_toolsARead-onlyIdempotent
List and filter the 670+ cybersecurity tools in the registry.
Returns the tools drawn from tools_config.json — the same registry the installer and the advisors share — with the total count, the filters still available to narrow the results, and one entry per tool. Combine the filters to scope the list: module="web" for web tools, method="pipx" for Python-packaged tools, installed_only=True for only what is on this host. Start here to discover what exists before check_installed or get_tool_info.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | Filter by install method. One of apt, pipx, go, cargo, gem, git, binary, docker, snap, special, source, npm. | |
| module | No | Filter by module (e.g. "web", "pwn", "forensics"). 18 modules available. | |
| installed_only | No | If true, only return tools that are currently installed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world behavior, so the safety profile is covered. The description adds valuable context about data provenance (drawn from tools_config.json, shared with installer/advisors) and return shape (total count, available filters, one entry per tool), which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then provides provenance, filter examples, and entry-point guidance. Efficient and well-ordered, though the provenance sentence is slightly verbose for a list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description fills remaining gaps: data source, filter combinations, and the tool's role in the workflow relative to siblings. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3, but the description adds semantic value by giving concrete examples of the three filters and showing combinations, which helps an agent reason about filter interaction beyond the schema's individual parameter docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list/filter) and resource (670+ cybersecurity tools in the registry), and grounds it in the shared tools_config.json registry. Distinguishes from siblings by naming check_installed and get_tool_info as downstream steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Start here to discover what exists before check_installed or get_tool_info,' giving a clear entry-point role, and offers concrete filter combinations (module="web", method="pipx", installed_only=True) to guide use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_remote_hostsADestructive
Add, list, test, or remove the SSH hosts that run_tool can target remotely.
Manages the remote-host registry that lets run_tool (and check_installed) run a tool on a remote Kali/Linux box over SSH instead of locally, so the tool only has to be installed on the remote. The action selects the operation: "list" shows every configured host; "add" registers or updates a host (needs name and hostname, plus optional user, port, ssh_key, and a tool_allowlist that restricts which tools may run there); "remove" deletes a host by name; "test" opens an SSH connection to confirm the host is reachable.
Connections use StrictHostKeyChecking=accept-new, so the key presented on the first connection is pinned in ~/.ssh/known_hosts and any later change is rejected. Verify that first fingerprint out-of-band for a host you do not control, or add the key to known_hosts before "test".
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Host name (required for add/remove/test). | |
| port | No | SSH port (default 22). | |
| user | No | SSH username (default "kali"). | kali |
| action | Yes | Operation to perform: "list", "add", "remove", or "test". | |
| ssh_key | No | Path to SSH private key (e.g. "~/.ssh/id_kali"). | |
| hostname | No | IP address or hostname of the remote machine (required for add). | |
| description | No | Human-readable description of the host. | |
| tool_allowlist | No | Comma-separated list of allowed tool names (e.g. "nmap,gobuster,sqlmap"). None means all tools allowed. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/openWorld/non-idempotent, and the description adds genuinely new behavioral context: the StrictHostKeyChecking=accept-new policy, that the first-seen key is pinned in ~/.ssh/known_hosts and later changes are rejected, and the out-of-band fingerprint verification advice. That is security-relevant disclosure beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then enumerates actions, then ends with the SSH key-pinning caveat. Every paragraph adds information, though the per-action enumeration is dense and slightly overlaps the schema's own descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action mutation tool with side effects, an output schema present (so returns need no explanation), and full annotation coverage, the description supplies the missing pieces: action semantics, credential requirements, and the connection-security caveat. An agent has enough to select actions and call them correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds real meaning: which parameters each action requires (name for add/remove/test, hostname for add) and what tool_allowlist actually does (restricts which tools may run on that host, with None meaning all). It stops short of restating defaults like user='kali' or port=22.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb set (add/list/test/remove) and a concrete resource (SSH remote hosts), and names the dependent sibling tools run_tool and check_installed. An agent can immediately distinguish this registry-management tool from the execution tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that the action parameter selects the operation and gives per-action conditions (add needs name+hostname, remove takes a name, test opens a connection), plus the prerequisite context that hosts enable remote execution via run_tool. It does not, however, state explicit when-not-to-use cases or an ordering rule such as 'add before test before run_tool'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_installARead-onlyIdempotent
Recommend which profile, modules, or individual tools to install.
Analyzes a natural-language description of what the user wants to do and recommends the best installation approach — from a full profile down to just a few individual tools. Avoids installing everything when only a subset is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Natural-language description of what the user wants to do. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds useful context by clarifying this is an advisory recommendation engine rather than an installer, despite the 'install' in the name, and explains the over-install avoidance behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first sentence, followed by scope and rationale. All sentences are relevant, though the second sentence could be slightly trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a present output schema, full parameter documentation, and complete annotations, the description covers everything an agent needs to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'task' parameter, so the schema already explains it. The description's reference to a 'natural-language description of what the user wants to do' merely restates the schema, adding no syntax or format detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (recommend) and resource (profile, modules, or individual tools to install), and scopes the output range from a full profile down to a few tools. It does not explicitly name or contrast with siblings like list_profiles or get_profile_tools, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('Analyzes a natural-language description of what the user wants to do') and gives a rationale ('Avoids installing everything when only a subset is needed'), but provides no explicit when-to-use guidance or alternatives among the many sibling tools (list_profiles, get_profile_tools, check_installed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pipelineADestructive
Execute a pipeline of tools, piping stdout from each step into stdin of the next.
Replaces shell piping (e.g. strings binary | grep flag) with a safe,
no-shell alternative. Each step is validated individually (allowlist,
argument sanitization, policy checks) before any process starts.
Each step's stdout and stderr are bounded to 200KB as they are read, and an
intermediate step's bounded stdout is what gets piped into the next step. If
any step hits that cap, the returned truncated flag is set and the final
stdout carries a truncation marker.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Reserved for future use. Currently only local execution is supported. | |
| steps | Yes | List of dicts, each with 'tool' (required) and 'args' (optional) keys. Max 10 steps per pipeline. | |
| timeout | No | Global timeout for entire pipeline in seconds (default 120, max 300). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and readOnlyHint=false, but the description still adds real value: per-step validation before any process starts, a 200KB per-step stdout/stderr cap, a truncation marker, and the returned `truncated` flag. It omits what happens to earlier steps if a later step fails, which matters for a destructive pipeline, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by the motivating example, then the safety/bounding guarantees. Every sentence carries concrete information (validation order, 200KB cap, truncation marker) with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-described, and the description covers the semantics an agent needs: step structure, validation, bounding, and truncation signaling. The main residual gap is failure/partial-execution behavior across steps in a destructive multi-step run.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema itself documents `host` (reserved), the step-list shape with the max-10 constraint, and the timeout default/max. The description adds no further parameter-level syntax or semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Execute a pipeline of tools') plus the precise mechanism (stdout piped to stdin of the next step), which implicitly separates it from the single-invocation siblings run_tool and run_script. It does not explicitly name those alternatives, so an agent still has to infer the routing, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to reach for it: replacing shell piping such as `strings binary | grep flag` with a safe, no-shell alternative. That is a concrete usage trigger, though it stops short of explicitly contrasting with run_tool/run_script or stating when not to use a pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_scriptADestructive
Write and execute a Python or Bash script, returning its output.
Writes the code to a temporary file, executes it via python3/bash, and returns stdout/stderr. The temp file is deleted after execution. Requires CYBERSEC_MCP_ALLOW_SCRIPTS=1. This is an explicit full-code execution opt-in: scripts are not OS-sandboxed and are not constrained by CYBERSEC_MCP_ALLOW_EXTERNAL.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The script source code to execute. | |
| venv | No | Optional Python venv name from ~/.ctf-venvs/ (e.g. "pwntools"). Allows using a different Python with specific packages installed. Ignored for language="bash". If not set, uses the MCP server's Python. | |
| timeout | No | Maximum execution time in seconds (default 120, max 300). | |
| language | No | "python" (default) or "bash". | python |
| working_dir | No | Working directory for the script (default: system temp dir). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive/openWorld/non-idempotent, and the description meaningfully extends them: it discloses the temp-file write-then-delete lifecycle, the interpreter used, and two independent gating/containment flags. The non-sandboxing warning is exactly the kind of consequence an agent needs before calling a mutating execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with what the tool does and the effect, followed by execution mechanics and then the opt-in/containment caveats. Every sentence contributes information an agent would not otherwise have.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and the description covers the remaining risk surface: execution mechanism, cleanup, and the two environment flags governing permission and containment. Nothing material is missing for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the venv, timeout, language, and working_dir semantics are already fully documented in the schema, including defaults and the venv/bash interaction. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb+resource pair ('Write and execute a Python or Bash script') plus the scope of the effect ('returning its output'), which is enough to separate it from sibling run_tool and run_pipeline. Nothing about the action is left ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the precondition for use (CYBERSEC_MCP_ALLOW_SCRIPTS=1) and the security posture (not OS-sandboxed, not bound by CYBERSEC_MCP_ALLOW_EXTERNAL). It stops short of naming when to reach for run_tool/run_pipeline instead of scripting an ad-hoc program, so it lacks an explicit alternative-routing clause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_toolADestructive
Execute an installed cybersecurity tool or system utility and return its output.
Runs tools from the 670+ registry as well as ~120 standard system utilities (strings, file, curl, grep, base64, xxd, jq, etc.) that are allowed without being in the registry. Arguments are sanitized to prevent shell injection. Timeout is clamped to 1-300s. Output is truncated at 200KB.
Network tools (including curl, wget, ping, etc.) are restricted to local/private targets by default. Set CYBERSEC_MCP_ALLOW_EXTERNAL=1 to allow external targets.
When host is provided, the tool is executed on the remote host via SSH. The tool does not need to be installed locally — only on the remote host.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Command-line arguments as a string (e.g. "--version" or "-sV 10.0.0.1"). | |
| host | No | Optional remote host name (as configured via manage_remote_hosts). | |
| timeout | No | Maximum execution time in seconds (default 120, max 300). | |
| tool_name | Yes | Name of the tool to run (registry tool or system utility). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive/openWorld/non-idempotent, and the description adds substantial context on top: argument sanitization against shell injection, timeout clamping to 1-300s, 200KB output truncation, default local/private network restriction with an env-var escape hatch, and SSH semantics where the tool need only exist on the remote host.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then layered constraints in short, well-separated paragraphs. Every sentence carries operational information (sanitization, timeout clamp, truncation, network policy, SSH) with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a high-risk execution tool: safety profile is covered by annotations, argument and host semantics by the description, and return values by the existing output schema. An agent has everything needed to call it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning for 'host' (executed remotely via SSH, tool need not be installed locally) and for 'args' (sanitized to prevent shell injection). Timeout and tool_name semantics are largely left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Execute') and resource ('an installed cybersecurity tool or system utility') plus the outcome ('return its output'). It clearly separates itself from siblings like run_script and run_pipeline by scoping to registry tools and a fixed set of allowed system utilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives rich context: registry vs. ~120 built-in system utilities, network tools restricted to local/private targets unless CYBERSEC_MCP_ALLOW_EXTERNAL=1, and remote execution when host is supplied. It never explicitly says when to prefer run_script/run_pipeline or the suggest/recommend siblings, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_for_bountyARead-onlyIdempotent
Suggest cybersecurity tools for a bug bounty target type.
Provides curated tool recommendations with installation status, methodology steps (starting with scope verification), common vulnerabilities, and quick wins for 7 target types: web_app, api, mobile_app, cloud, network, iot, llm.
Also accepts aliases: web/webapp (web_app), rest/graphql (api), android/ios/mobile (mobile_app), aws/azure/gcp/k8s (cloud), infra/infrastructure (network), firmware/embedded (iot).
| Name | Required | Description | Default |
|---|---|---|---|
| target_type | Yes | Type of bug bounty target (e.g. "web_app", "api", "cloud"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds real behavioral value by disclosing what the response contains: curated tools with installation status, methodology steps starting with scope verification, common vulnerabilities, and quick wins.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose in the first sentence, then supporting detail. The alias list is somewhat long but each entry maps useful input strings, so it earns its place; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, yet the description still sketches the response shape. Combined with the enum-free parameter being fully enumerated, the definition is complete enough for an agent to invoke correctly, missing only explicit sibling routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but the schema has no enum for target_type; the description supplies the seven valid values (web_app, api, mobile_app, cloud, network, iot, llm) and the accepted aliases, which the schema alone does not convey. This meaningfully extends parameter semantics beyond the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Suggest cybersecurity tools') plus the scope ('for a bug bounty target type'), immediately distinguishing it from the sibling suggest_for_ctf. An agent can tell what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context of use is implied by 'bug bounty target type' and the enumerated target list, but there is no explicit when-to-use / when-not guidance and no routing to alternatives such as suggest_for_ctf or guided_assessment. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_for_ctfARead-onlyIdempotent
Suggest cybersecurity tools for a CTF challenge category.
Provides curated tool recommendations with installation status for 14 challenge types: web, crypto, pwn, reversing, forensics, stego, misc, networking, wireless, osint, cloud, mobile, blockchain, llm.
Also accepts aliases: re/rev (reversing), binary/exploitation (pwn), steganography (stego), network (networking), recon (osint), etc.
| Name | Required | Description | Default |
|---|---|---|---|
| challenge_type | Yes | Type of CTF challenge (e.g. "web", "crypto", "pwn"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds useful operational context beyond them: that recommendations are curated and include installation status, and that 14 named categories are supported. It does not discuss result size or ordering, but the output schema presumably covers returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the category list and alias list in separate, scannable sentences. Slightly list-heavy, but each element earns its place by supporting valid parameter values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, output-schema-backed read tool, the description covers what it does, the full valid value space, and the fact that install status is included. Nothing critical is missing; only cross-tool routing is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so the baseline is 3, but the description goes further by enumerating all 14 accepted challenge_type values and a set of aliases (re/rev, binary/exploitation, steganography, network, recon). Since the schema declares no enums, this enumeration is genuinely additive and prevents wrong-value calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Suggest cybersecurity tools for a CTF challenge category'), which the agent can immediately act on. It does not name or contrast with the obvious sibling suggest_for_bounty, so differentiation from that near-twin is left implicit via the word 'CTF'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a CTF challenge category' implies the use context, but there is no explicit when-to-use / when-not guidance and no reference to the adjacent suggest_for_bounty or recommend_install tools. The agent must infer that this is the CTF-scoped path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.2.1- Changed
list_tools2 fields changed- changed
Input schema / properties / method / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "apt", + "pipx", + "go", + "cargo", + "gem", + "git", + "binary", + "docker", + "snap", + "special", + "source", + "npm" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / method / descriptionPrevious value: -"Filter by install method (apt, pipx, go, cargo, gem, git, binary, docker, snap, special, source, npm)."New value: +"Filter by install method. One of apt, pipx, go, cargo, gem, git,\nbinary, docker, snap, special, source, npm."
- Changed
manage_remote_hosts2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"One of \"list\", \"add\", \"remove\", \"test\"."New value: +"Operation to perform: \"list\", \"add\", \"remove\", or \"test\"." - added
Input schema / properties / action / enumAdded value: +[ + "list", + "add", + "remove", + "test" +]
15 tool updates
v1.2.0- First observed
check_installed - First observed
get_cve_info - First observed
get_module_info - First observed
get_profile_tools - First observed
get_tool_info - First observed
guided_assessment - First observed
list_profiles - First observed
list_tools - First observed
manage_remote_hosts - First observed
recommend_install - First observed
run_pipeline - First observed
run_script - First observed
run_tool - First observed
suggest_for_bounty - First observed
suggest_for_ctf
TDQS
Scored across 15 tools
Most tools have distinct roles (registry discovery, install planning, advisory, execution, remote management), but there is some overlap between advisory/orchestration tools like guided_assessment, recommend_install, and suggest_for_* that could cause hesitation. Descriptions help clarify, so boundaries are mostly clear.
Names are consistently snake_case and mostly follow a verb_noun pattern (get_tool_info, list_tools, run_tool). Minor deviations like guided_assessment (adjective_noun) and suggest_for_ctf (verb_preposition_noun) are readable but slightly break the pattern.
15 tools is well within the ideal range and each tool serves a distinct purpose across discovery, installation, execution, and orchestration. No tool feels redundant or unnecessary for the toolkit's scope.
The surface covers registry discovery, profile/module insight, install recommendation, tool execution (single, pipeline, script), remote host management, and high-level orchestration. Minor gaps exist: no direct install/uninstall/update tool (though commands are surfaced via get_tool_info) and no explicit audit-log viewer.
Maintenance
Related MCP Connectors
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Search, inspect and invoke every public tool on Invokera through one MCP connection.
Scans remote MCP servers for protocol, security, and TLS issues; exposes scan tools via MCP.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables aggregation, filtering, transformation, and composition of tools from multiple MCP servers through a single proxy with tool views.5AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceMCP server wrapping the toolgovern CLI as a single generic run tool for agent-tool policy validation.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceProvides a security and context-control layer that multiplexes multiple MCP servers behind a single endpoint, scanning tool definitions and results, enforcing authorization, rate limiting, and audit logging, and dynamically retrieving tools to manage context window usage.MIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to run server-side security audits through callable tools that sweep attack surfaces, trace source-to-sink reachability, verify live findings, and manage scope, recon, chains, manuals, intelligence, and memory from any MCP client.8,479 npm501MIT