Skip to main content
Glama

CI Integration Security uv update License: MIT Docker image Status: Under Active Development

    /\   /\        ______      __              _____
   (o ) ( o)      / ____/_  __/ /_  ___  _____/ ___/___  _____
    \ \_/ /      / /   / / / / __ \/ _ \/ ___/\__ \/ _ \/ ___/
  <==\   /==>   / /___/ /_/ / /_/ /  __/ /   ___/ /  __/ /__
     \ V /      \____/\__, /_.___/\___/_/   /____/\___/\___/
     /_ _\           /____/                          by 26zl
      |_|                     Toolkit

Kit de herramientas de ciberseguridad con integración de IA incorporada. Un servidor MCP (Model Context Protocol) integrado permite a los clientes compatibles con MCP consultar el registro de herramientas, comprobar el estado de instalación, recomendar herramientas para una categoría de CTF o un objetivo de bug bounty y ejecutar las herramientas instaladas a través de una ruta de ejecución gobernada. Ir a Servidor MCP (integración de IA).

Incluye un instalador modular para Linux y Termux (Android) que cubre 670+ herramientas, 18 módulos, 14 perfiles y 12 métodos de instalación.

Qué lo hace diferente: la mayoría de los kits se limitan a instalar herramientas. Aquí una IA también puede manejarlas: inferir el tipo de problema, elegir las herramientas adecuadas de todos los módulos/perfiles y trabajar contigo como compañero interactivo. Cuando lo autorizas explícitamente, la misma cadena de herramientas MCP puede entrar en un bucle autónomo de resolución. Compañero por defecto; autónomo solo cuando lo pides.

Funciona con

Cliente

Integración

Etiqueta

Claude Code

.mcp.json (versionado) + .claude/skills/

Configuración nativa incluida

Claude Desktop

claude_desktop_config.json

Ejemplo de configuración documentado

OpenCode

opencode.jsonc (versionado) + .agents/skills/

Probado en vivo

Codex

.codex/config.toml (versionado)

Configuración nativa incluida

Gemini CLI

GEMINI.md + .gemini/settings.json (versionado)

Configuración nativa incluida

GitHub Copilot

.mcp.json (CLI) + .github/copilot-instructions.md

CLI probado en vivo; VS Code documentado

Hermes Agent

Usuario ~/.hermes/config.yaml

Probado en vivo

OpenClaw

Usuario ~/.openclaw/openclaw.json + .agents/skills/

Probado en vivo

Cursor / Cline / Goose

Configuración MCP del cliente + Agent Skills

Compatible mediante MCP; skills compatibles

Continue

Configuración MCP del cliente; reglas/indicaciones para el contexto

Compatible mediante MCP

LM Studio (>=0.3.17)

mcp.json; contexto manual o proporcionado por MCP

Compatible mediante MCP

Ollama

Host MCP delante de él

Compatible mediante un host MCP

Aider

—

No aplicable

Open WebUI

Puente de MCP a OpenAPI

Compatible mediante host MCP o puente

Consulta docs/AI_CLIENTS.md para la configuración detallada por cliente y docs/ORCHESTRATION.md para coordinar múltiples agentes en cualquier cliente MCP.


Cómo funciona

Dos puntos de entrada comparten un único registro de herramientas. Un operador ejecuta el instalador bash para instalar las herramientas en el disco; un agente de IA se comunica con el servidor MCP para descubrir, recomendar y ejecutar esas mismas herramientas a través de su ruta de herramientas gobernada. tools_config.json es la fuente única de verdad que definen los módulos y que leen los asesores MCP, y los validadores de CI mantienen sincronizadas las partes de Python y bash.

How it works: an operator runs the bash installer to put tools on disk; an AI agent drives the MCP server to discover, recommend, and execute them. The installer and MCP server meet at the tools_config.json registry and the installed tools on disk, with security.py governing tool execution and CI validators keeping the Python and bash sides in sync.

Fuente de Mermaid: assets/how-it-works.mmd.

Lectura del diagrama: las flechas sólidas son acciones de ejecución o instalación; las flechas discontinuas son relaciones de validación y contexto. Las configuraciones de los clientes entran a través del lanzador con detección de root antes de llegar a FastMCP. security.py gobierna run_tool y run_pipeline mediante la lista blanca, las comprobaciones de argumentos y la política de red sin invocar un shell. run_script sigue siendo una capacidad separada de ejecución de código completo, deshabilitada por defecto. Las Agent Skills permanecen fuera de la ruta de ejecución: .claude/skills/ es la canónica y scripts/sync-skills.sh genera .agents/skills/ para los clientes que usan el espejo portátil.


Related MCP server: toolgovern

¿Por qué no simplemente Kali (u otro instalador)?

Kali/Parrot/BlackArch incluyen las herramientas; esto es complementario, no un sustituto. Se ejecuta en el equipo que ya tienes (incluido Termux) y añade un plano de control de IA que puede descubrir, recomendar, encadenar y ejecutar las herramientas instaladas a través de una única interfaz gobernada. ¿Quieres todas las herramientas? Una distro es suficiente. ¿Quieres un cliente MCP que pueda seleccionarlas y ejecutarlas bajo una política explícita? Ese es el vacío que cubre.

Confianza y seguridad

Los usuarios de seguridad deberían ser paranoicos: esto es exactamente lo que se ejecuta y lo que está restringido:

  • MCP seguro por defecto. De serie, CYBERSEC_MCP_ALLOW_EXTERNAL=0 rechaza los objetivos de red que no se resuelven a rangos privados/de bucle local, y CYBERSEC_MCP_ALLOW_SCRIPTS=0 deshabilita run_script. Tú decides explícitamente habilitar los ámbitos externos / scripting.

  • La ejecución de herramientas gobernada pasa por una única puerta (mcp_server/security.py): lista blanca del registro, sin shell (create_subprocess_exec, nunca shell=True), saneamiento de argumentos, una lista negra de banderas bloqueadas por herramienta (p. ej. sqlmap --os-shell, nmap -iL, banderas de lista de archivos/inyección de objetivos), política de objetivos/red, limitación de velocidad, límites de salida y tiempos de espera.

  • La política de ejecución no es un sandbox del sistema operativo. Las herramientas permitidas se ejecutan con los permisos del usuario del proceso MCP, y algunas herramientas de seguridad pueden lanzar procesos secundarios o cargar plugins. Deshabilitar run_script solo deshabilita ese endpoint; ejecuta el servidor MCP como un usuario con privilegios mínimos o dentro de un límite de aislamiento adecuado para objetivos no confiables.

  • La política con conocimiento de herramientas no es una solución codificada. El solucionador elige las herramientas del registro/asesores; la capa de política solo entiende la gramática CLI suficiente para distinguir un objetivo real de un encabezado, una wordlist, una ruta de salida, un archivo de configuración o una bandera de lista de objetivos. Eso mantiene los comandos normales utilizables sin permitir que las banderas de lista de archivos/configuración omitan las comprobaciones de alcance.

  • Registro de auditoría, no fugas. Las acciones se registran como JSON en un log rotativo solo para el propietario (0600) en el directorio de estado del usuario (~/.local/state/cybersec-tools-mcp/audit.log por defecto). Los cuerpos de los scripts nunca se persisten: solo se registran un SHA256 irreversible y la longitud para su correlación, y las cadenas con forma de credencial se enmascaran en los argumentos de las herramientas.

  • Privilegio mínimo en el instalador. Se ejecuta como root, pero se rebaja al usuario que lo invoca ($SUDO_USER) para las compilaciones de repositorios clonados y las instalaciones con pip/cargo/gem; las versiones binarias se verifican con SHA256 cuando se publican sumas de comprobación.

  • Las herramientas de doble uso están restringidas. Los frameworks de C2 y phishing (Sliver, Caldera, gophish, evilginx, …) están desactivados por defecto y solo se instalan con --include-c2 (los perfiles redteam/full); la capa MCP refleja esto y nunca los ejecuta automáticamente.

  • Solo uso autorizado. Consulta SECURITY.md, el Modelo de cadena de suministro y el Aviso legal.


Instalación

Todos los runtimes necesarios (Python, Go, Ruby, Java, Rust, Node.js), las bibliotecas de desarrollo, pipx y las herramientas de compilación se instalan automáticamente. El único requisito previo es una distro de Linux compatible. Windows y macOS no son compatibles (usa WSL o Docker).

Docker es la única excepción: instálalo manualmente si quieres frameworks C2, MobSF, BeEF, BloodHound, TheHive o Cortex (--enable-docker). Consulta la documentación de instalación de Docker. Se recomienda la autenticación de GitHub. El instalador descarga ~30 versiones binarias y realiza ~30+ llamadas a la API de GitHub. Sin autenticación, estás limitado a 60 solicitudes/hora y algunas descargas pueden fallar. Con autenticación, el límite es de 5.000/hora. La forma más sencilla:

# Install gh CLI and log in (one-time) — the installer auto-detects it
sudo apt install gh && gh auth login

Alternativamente, exporta un token de acceso personal (no se necesitan ámbitos):

export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx

Desde la última versión (fijada y estable, recomendada):

# 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.sh

Desde main (herramientas más recientes, correcciones y cambios; puede incluir trabajo no publicado):

git clone https://github.com/26zl/cybersec-toolkit.git && cd cybersec-toolkit && sudo ./install.sh

Eso instala las herramientas estándar de los 18 módulos. Las herramientas de C2/phishing y las imágenes de Docker siguen siendo opcionales; usa --profile full --enable-docker cuando quieras explícitamente el registro completo compatible con la plataforma actual. Para instalar un subconjunto:

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

¿No estás seguro de que la máquina está lista? Ejecuta primero una comprobación previa de solo lectura: no necesita root y no instala nada:

./install.sh --doctor                                  # Distro, prerequisites, MCP server, tool registry

Probar con Docker

Descarga la imagen precompilada (sin compilación local):

docker run --rm ghcr.io/26zl/cybersec-toolkit --profile ctf

O compílala tú mismo:

docker build -t cybersec-toolkit .
docker run --rm cybersec-toolkit --profile ctf

Podman funciona como sustituto directo: cambia docker por podman (o alias docker=podman); se admiten compilaciones y ejecuciones sin root. Para el ejemplo de Compose que aparece a continuación, usa podman compose (necesita un proveedor de compose instalado).

O usa el archivo Compose incluido (compila y ejecuta el servicio installer):

docker compose run --rm installer --profile ctf

La imagen concede al usuario toolkit acceso sudo sin contraseña para que el instalador pueda gestionar los paquetes del sistema. Trata el código dentro del contenedor como capaz de actuar como root; la imagen no es un sandbox de seguridad, especialmente cuando run_script está habilitado o se montan rutas sensibles del host.

macOS (Apple Silicon): añade --platform linux/amd64 a ambos comandos para ejecutarlo mediante emulación x86:

docker build --platform linux/amd64 -t cybersec-toolkit .
docker run --rm --platform linux/amd64 cybersec-toolkit --profile ctf

Termux (Android):

pkg install git
git clone https://github.com/26zl/cybersec-toolkit.git
cd cybersec-toolkit
./install.sh --profile lightweight
sudo ./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 instala solo la herramienta especificada sin ejecutar la configuración completa de dependencias. Las estimaciones de tiempo de la prueba en seco cuentan las entradas de instalación entre métodos, por lo que la estimación puede ser mayor que el registro de 670+ herramientas sin duplicados.

El instalador orquesta 670+ herramientas en 12 métodos de instalación diferentes. El tiempo se emplea en operaciones limitadas por E/S que ningún lenguaje de scripting puede acelerar:

Qué lleva tiempo

Por qué

Paquetes del sistema (apt/dnf)

Descargar y desempaquetar los paquetes .deb/.rpm y resolver dependencias

Herramientas Go

Descargar módulos y compilar cada binario

pipx (Python)

Crear un venv aislado por herramienta y descargar wheels

Crates de Cargo (Rust)

Compilar desde el código fuente: Rust no tiene binarios precompilados en el registro

Clones de Git

Clonar cada repositorio

Lanzamientos binarios

Descargar binarios precompilados desde GitHub

Sobrecarga de Bash

Iteración de arrays, registro de logs, barras de progreso (insignificante)

Para ver el recuento actual de herramientas por método, ejecuta ./install.sh --dry-run: imprime el desglose en vivo para que las cifras no queden desactualizadas aquí. Las etapas más lentas son las que compilan o desempaquetan más (apt/dnf y Go), no el recuento bruto de herramientas: Cargo compila desde el código fuente, pero solo cubre unas pocas herramientas.

El instalador ya paraleliza cuando es posible (-j 4 por defecto). Los métodos con bloqueos compartidos (apt, pipx, cargo) deben ejecutarse secuencialmente. Para reducir el tiempo de instalación:

  • Usa --profile lightweight o --module <nombre> para instalar solo lo que necesites

  • Usa --skip-cargo para omitir la compilación de Rust (el método más lento por herramienta)

  • Aumenta el paralelismo con -j 8 para descargas más rápidas de Go/git/binarios

  • Configura un proxy apt-cacher-ng para instalaciones repetidas


Perfiles

Perfil

Módulos

Descripción

full

Los 18

Kit de seguridad completo

ctf

misc, crypto, pwn, reversing, stego, forensics, cracking, web, mobile, blockchain

Competiciones CTF

redteam

misc, networking, recon, web, enterprise, pwn, mobile, cracking, cloud, wireless, reversing, crypto

Seguridad ofensiva

web

misc, networking, recon, web, llm

Pruebas de aplicaciones web

osint

misc, recon

Recopilación de OSINT

forensics

misc, forensics, blueteam, reversing, stego, cracking

Forensia digital y respuesta a incidentes

pwn

misc, pwn, reversing, crypto

Explotación de binarios e ingeniería inversa

mobile

misc, mobile, web, reversing

Pruebas de seguridad de aplicaciones móviles

cloud

misc, cloud, containers, networking, recon

Auditoría de seguridad en la nube y contenedores

blockchain

misc, blockchain, web, crypto

Auditoría de contratos inteligentes y seguridad blockchain

wireless

misc, wireless, networking

Seguridad WiFi, Bluetooth y SDR

lightweight

misc, networking, recon, web, cracking

Esenciales de hacking ético como hobby (HTB, THM, bug bounty)

crackstation

misc, cracking, crypto

Descifrado de hashes

blueteam

misc, blueteam, forensics, reversing, mobile, containers, networking, cloud, recon

Seguridad defensiva, IR, análisis de malware

Módulos

Módulo

Herramientas

Descripción

misc

41

Post-explotación, ingeniería social, listas de palabras, recursos, C2 (Docker + Loki)

networking

57

Escaneo de puertos, captura de paquetes, túneles, MITM, herramientas de protocolo

recon

84

Enumeración de subdominios, OSINT, DNS, marcos de reconocimiento automatizado

web

60

Escaneo de vulnerabilidades, fuzzing, SQLi, XSS, escáneres de CMS, pruebas de API

crypto

14

Ataques RSA, análisis de cifrados, ataques de hash, resolución de restricciones

pwn

36

Marcos de exploits, explotación de binarios, fuzzing, generación de payloads

reversing

33

Desensambladores, depuradores, emulación, ingeniería inversa de Java/Python

forensics

57

Forensia de disco/memoria, file carving, análisis de líneas de tiempo, análisis de logs, hardware/serial

enterprise

80

Active Directory, Kerberos, Azure AD, recolección de credenciales, movimiento lateral

wireless

41

Descifrado WiFi, Bluetooth, SDR, AP rogue

cracking

34

Descifrado de hashes (john, hashcat), fuerza bruta, generación de listas de palabras

stego

15

Esteganografía de imagen/audio, detección, StegCracker

cloud

22

Auditoría de seguridad AWS/Azure/GCP, Checkov

containers

15

Seguridad de Docker/Kubernetes (Grype, Syft, Kubescape, kubeaudit)

blueteam

36

IDS/IPS, SIEM, respuesta a incidentes, inteligencia de amenazas, hardening, análisis de malware (YARA, ClamAV, FLOSS, Capa, Loki)

mobile

18

Pruebas de apps Android/iOS, análisis de APK, MobSF (Docker)

blockchain

15

Auditoría de contratos inteligentes (Slither, Mythril, Foundry, Aderyn), forensia blockchain, Echidna (Docker)

llm

14

Red teaming de LLM, inyección de prompts, pruebas de jailbreak, escaneo de vulnerabilidades de IA

Métodos de instalación

Método

Recuento

Ejemplos

Clon de Git

~197

Repos de GitHub con configuración automática, recursos, listas de palabras

Paquetes del sistema (apt/dnf/pacman/zypper)

~166

nmap, wireshark, john, hashcat

pipx

~137

sqlmap, impacket, bloodhound, volatility3

Instalación de Go

~62

nuclei, subfinder, ffuf, httpx

Lanzamiento binario

~51

gitleaks, chainsaw, findomain, FLOSS, Capa, Loki, Syft, Kubescape

Compilar desde el código fuente

~23

massdns, duplicut, AFLplusplus, honggfuzz

Docker

~12

Empire, MobSF, BeEF, BloodHound, TheHive, Cortex, PentAGI

Gema de Ruby

6

wpscan, evil-winrm, brakeman

Cargo (Rust)

8

feroxbuster, RustScan, pwninit, yara-x-cli

Especial (curl-pipe)

4

Metasploit, Foundry, Steampipe, patator

Snap

1

zaproxy

npm

5

promptfoo, apk-mitm, surya, solgraph


Scripts de post-instalación

Todos los scripts requieren root en Linux (sudo) y admiten --help. En Termux, no se necesita root.

Script

Propósito

Ejemplo

scripts/verify.sh

Comprueba qué herramientas están instaladas

sudo ./scripts/verify.sh --module web --skip-heavy

scripts/update.sh

Actualiza todas las herramientas instaladas

sudo ./scripts/update.sh --skip-system

scripts/remove.sh

Elimina herramientas por módulo

sudo ./scripts/remove.sh --module enterprise --yes

scripts/remove.sh --deep-clean

Purga todas las cachés y artefactos de compilación

sudo ./scripts/remove.sh --deep-clean --yes

scripts/backup.sh

Copia de seguridad/restauración de configuraciones de herramientas

sudo ./scripts/backup.sh backup

--deep-clean elimina la caché de módulos/compilación de Go, el registro de Cargo, las cachés de pip/pipx/npm/gem, los venvs huérfanos de pipx, los enlaces simbólicos obsoletos y los archivos de registro. Añade --remove-deps para purgar también los toolchains de Rustup.

Servidor MCP (Integración con IA)

MCP (Model Context Protocol) es un estándar abierto que permite a los asistentes de IA usar herramientas externas. Este proyecto incluye un servidor MCP que da a cualquier IA compatible con MCP (Claude Code, Claude Desktop, Cursor, etc.) acceso de lectura completo al registro de más de 670 herramientas, además de la capacidad de comprobar instalaciones, recomendar perfiles y ejecutar herramientas. La IA se convierte en un socio interactivo para el hacking ético: conoce todas las herramientas, cuáles tienes instaladas y puede ejecutarlas por ti.

Lo que la IA puede hacer

Herramienta

Qué hace

list_tools

Lista/filtra las más de 670 herramientas por módulo, método o estado de instalación (incluye URLs)

check_installed

Comprueba si una herramienta está instalada (5 estrategias de detección)

get_tool_info

Detalles completos: método, módulo, URL, comandos de instalación/actualización/eliminación

get_module_info

Analiza a fondo un módulo: todas las herramientas, estado de instalación y qué perfiles lo usan

get_profile_tools

Ve todas las herramientas que instala un perfil, agrupadas por módulo

suggest_for_ctf

Recomendaciones de herramientas seleccionadas para 14 categorías de retos CTF

suggest_for_bounty

Recomendaciones de herramientas para bug bounty para 7 tipos de objetivo, con metodología y vulnerabilidades comunes

guided_assessment

Asistente de resolución cooperativa para un objetivo autorizado: clasifica el objetivo/hallazgo, devuelve puertas de triaje, recomienda habilidades, elige herramientas de todos los módulos/perfiles y guía paso a paso; el opt-in autonomous inicia un bucle de auto-resolución sobre run_tool, run_pipeline y la capacidad de run_script, activada por separado

get_cve_info

Asocia un ID o alias de CVE (p. ej. log4shell) con habilidades seleccionadas, herramientas de registro, módulos y comandos de consulta en vivo de NVD/KEV/EPSS

recommend_install

Lenguaje natural → recomendación de perfil/módulo/herramienta

list_profiles

Todos los 14 perfiles con recuento de herramientas y comandos de instalación

run_tool

Ejecuta herramientas instaladas de forma segura (argumentos saneados, política de red, límite de tasa y registro de auditoría). Soporta ejecución remota por SSH

run_pipeline

Encadena herramientas de forma segura sin shell (strings binary | grep flag)

run_script

Ejecución explícita de Python/Bash sin sandbox, con opt-in. Soporta selección de venv por script

manage_remote_hosts

Añade, elimina, lista y prueba hosts remotos SSH para la ejecución remota de herramientas

El cliente MCP puede consultar cada herramienta y su estado de instalación, encadenar llamadas de herramientas gobernadas, analizar la salida y orientarse sobre lo que encuentra. La ejecución de scripts requiere un opt-in por separado.

Reconocimiento externo → superficie de ataque (requiere CYBERSEC_MCP_ALLOW_EXTERNAL=1, solo con alcance autorizado)

  • "Enumera la superficie de ataque de target.com y marca cualquier cosa explotable" — despliega amass / subfinder → resuelve y sondea con httpx → identifica la huella con whatweb → ejecuta plantillas de nuclei → descubrimiento de contenido con ffuf, y luego prioriza los hosts por exposición y propone siguientes pasos

  • "Encontré un open redirect en /go?url= — conviértelo en un arma" — verifica con curl, luego construye un PoC de SSRF / robo de token de OAuth y busca un callback explotable

Explotación web

  • "Confirma y explota el SQLi en el endpoint de login" — sqlmap para confirmar y volcar (los flags destructivos --os-shell/--os-cmd están bloqueados por política), después run_script para automatizar el bypass de autenticación y extraer solo lo necesario para un PoC

  • "La introspección de GraphQL está activada — mapéala y busca IDOR" — obtiene el esquema, genera queries, fuzzee los IDs de objeto y compara respuestas autenticadas vs no autenticadas

Active Directory / interno

  • "Credenciales de bajo privilegio en 10.10.0.0/24 — busca un camino hasta Domain Admin" — obtiene datos con bloodhound, hace kerberoast con impacket (GetUserSPNs.py), crackea el TGS con hashcat y valida el movimiento lateral con netexec — todo en la VM Kali por SSH

  • "Comprueba los derechos de DCSync y vuelca credenciales si existe el camino" — enumera las ACLs de replicación y luego ejecuta secretsdump.py contra el DC

Explotación de binarios e ingeniería inversa

  • "Construye un exploit ret2libc para este binario de 64 bits" — analiza con checksec / readelf, encuentra gadgets con ROPgadget, filtra libc mediante una llamada a puts@plt, luego escribe la cadena completa pwntools en venv="pwntools" y obtiene un shell local

  • "Recupera el algoritmo de este binario stripado" — tuberías el desensamblaje de objdump / radare2 hacia el análisis dirigido, con una reimplementación en run_script para verificar el comportamiento

Criptografía

  • "Rompé este RSA — e pequeño, varios ciphertexts" — detecta el ataque (Håstad / módulo común / Wiener) y lo resuelve con pycryptodome + sympy en un venv, devolviendo el plaintext

  • "Este JWT es HS256 con clave débil" — crackear el secreto de firma y forja un token de admin

Equipo azul · detección y respuesta

  • "Escribe una regla Sigma para esta técnica y conviértela a mi SIEM" — redacta la regla y la emite para el backend de destino (Splunk / Elastic) vía sigma-cli

  • "Busca movimiento lateral en estos eventos de archivo de Windows" — ejecuta chainsaw sobre los EVTX con reglas Sigma y resume los hits por host y línea temporal

  • "Crea reglas YARA a partir de estas muestras y escanea el árbol" — genera firmas yara y las ejecuta recursivamente

DFIR · triaje de malware

  • "Línea temporal de este volcado de memoria" — recorre los plugins de volatility3 (pslist, netscan, malfind) y los encadena en una sola narrativa

  • "Busca balizas de C2 en este pcap" — extracción con tshark / tcpdump → reglas de suricata → marca callbacks periódicos

  • "Haz triaje estático de este archivo sospechoso" — file → strings → capa / yara, y extrae IOCs para enriquecimiento

Nube · contenedores · operaciones

  • "Audita esta cuenta AWS por un S3 público y IAM de riesgo" — ejecuta prowler / scoutsuite y saca a la luz solo los hallazgos de gravedad alta

  • "Scan tactic de esta imagen y los manifies de k8s antes del deploy" — escaneo de imagen con grype y cheques de configuración con kubescape

  • "¿Cuál es mi cobertura de redteam? — y corrige las brechas" — compara get_profile_tools("redteam") contra el estado de instalación y emite los comandos exactos de instalación

Móvil · inalámbrico · blockchain

  • "Analiza estáticamente este APK en busca de secretos y almacenamiento inseguro" — descompila apktool / jadx → chequeos estilo MobSF, y luego greps de claves y endpoints

  • "Audita esta captura de Wi-Fi" — analiza el handshake y ejecuta aircrack-ng / hashcat contra él

  • "Revisa este contrato Solidity en busca de reentrancy completo" — ejecuta slither / mythril y explica los hallazgos

run_tool y run_pipeline están saneados de argumentos, con política de red, límite de tasa y registro de auditoría. run_script está desactivado por defecto porque activarlo es un opt-in de ejecución de código total con los permisos de sistema de archivos y red del usuario del servidor MCP; la política de objetos externos no pone los scripts en sandbox. Flags destructivos (--os-shell, -rf, --exploit, …) están bloqueados en el ruta gobernada de herramientas. Úsalo solo contra sistemas que estés autorizado a probar.

Inicio rápido

Requiere uv. Claude Code puede usar directamente el .mcp.json del proyecto. Ejecuta el servidor MCP por stdio con scripts y destinos externos de red desactivados por defecto:

{
  "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"
      }
    }
  }
}

Reinicia Claude Code. Las 15 herramientas aparecen en /mcp.

Otros clientes MCP (Codex, Cursor, LLMs locales)

MCP es un estándar abierto, así que el mismo servidor stdio funciona con cualquier cliente compatible con MCP. Desde la raíz del repositorio, el comando de litio es:

uv run --directory mcp_server fastmcp run server.py --transport stdio --no-banner

--directory mcp_server es relativo al directorio de trabajo. Si un cliente puede iniciar el servidor desde un subdirectorio, usa el lanzador que conoce la raíz desde el raíz del repositorio:

bash scripts/mcp-launch.sh

Desde fuera del repositorio, usa la ruta absoluta del lanzador:

bash /path/to/cybersec-toolkit/scripts/mcp-launch.sh
  • Codex — se incluye un .codex/config.toml de proyecto (resuelve la raíz de Git primero para que funcione desde cualquier subdirectorio). La configuración principal de Codex es ~/.codex/config.toml; si el archivo del proyecto no se detecta, copia el bloque [mcp_servers.cybersec-tools] en tu configuración de usuario.

  • Cursor / Continue / Cline / Goose — añade el mismo comando de lanzamiento en la interfaz de configuración de MCP del cliente o en su archivo de configuración (usa una ruta absoluta si el directorio de trabajo del cliente no es la raíz del repositorio).

  • LM Studio (≥0.3.17) — LM Studio es en sí mismo un host de MCP, no se necesita puente. Añade el servidor a su mcp.json (notación de Cursor, misma forma de mcpServers que .mcp.json) usando una ruta absoluta o el envoltorio de la raíz de Git, ya que el directorio de trabajo de LM Studio no es la raíz del repositorio. Usar MCP a través de la API de LM Studio requiere ≥0.4.0 y un endpoint compatible con MCP, como /api/v1/chat o /v1/responses.

  • Ollama — Ollama es un tiempo de ejecución de modelos, no un host de MCP. Coloca un agente compatible con MCP delante de él (p. ej., Kit) y apúntalo al comando de lanzamiento anterior.

  • Otros LLM locales — un modelo desnudo no habla MCP por sí solo. Ejecútalo detrás de cualquier host compatible con MCP (LM Studio, Cline, Continue, Goose, Kit u Open WebUI mediante un puente MCP→OpenAPI como mcpo) y apunta ese host al comando de lanzamiento anterior.

Nota de seguridad: empieza solo con este servidor. Ya aplica saneamiento de argumentos, listas blancas de red, limitación de velocidad y registro de auditoría, y viene con la ejecución de scripts y los destinos externos deshabilitados por defecto; mantenlos desactivados a menos que tengas un alcance autorizado, y prefiere hosts que admitan la aprobación de herramientas con intervención humana.

Las instrucciones del repositorio independientes del proveedor están en AGENTS.md (leído de forma nativa por Codex y muchas herramientas de agentes); Claude Code lee CLAUDE.md.

Conectarse desde WSL (p. ej., Kali Linux)

El servidor MCP se ejecuta sobre stdio, por lo que funciona desde cualquier entorno que Claude Code pueda lanzar. Para usar herramientas instaladas dentro de 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"
      ]
    }
  }
}

Conectarse desde 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"
      ]
    }
  }
}

Ejecución de scripts

run_script permite a la IA escribir y ejecutar scripts de Python o Bash. Requiere CYBERSEC_MCP_ALLOW_SCRIPTS=1, no está aislado por el sistema operativo y no está limitado por CYBERSEC_MCP_ALLOW_EXTERNAL. Habilitarlo otorga a los scripts los mismos permisos de sistema de archivos y red que al proceso del servidor MCP. Revisa el código generado y el alcance antes de activarlo:

{
  "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"
      }
    }
  }
}

Soporte de entornos virtuales

Algunos paquetes (p. ej., pwntools) requieren una versión anterior de Python. El parámetro venv permite a la IA elegir el intérprete adecuado para cada script:

# One-time setup: create a venv with pwntools
python3.12 -m venv ~/.ctf-venvs/pwntools
~/.ctf-venvs/pwntools/bin/pip install pwntools z3-solver

La IA usa entonces run_script("from pwn import *; ...", venv="pwntools") automáticamente. El entorno MCP predeterminado contiene FastMCP y la biblioteca estándar de Python. Instala el conjunto de ayudas opcional con cd mcp_server && uv sync --extra ctf-core antes de usar requests, pycryptodome, beautifuls4, Pillow o NumPy sin un venv con nombre. Establece CYBERSEC_MCP_VENVS_DIR para sobrescribir la ubicación predeterminada ~/.ctf-venvs/.

Scripts manuales

El directorio manual_scripts/ almacena scripts persistentes que la IA crea para el usuario: exploits complejos, solucionadores de varios pasos, analizadores, ayudas de protocolo y herramientas reutilizables que no deberían desaparecer tras una sola ejecución. En el modo de acompañamiento, la IA propone el script y solo lo escribe y ejecuta tras la aprobación o un "continúa" claro. En el modo autonomous opcional, si las herramientas y canalizaciones normales dejan de progresar y la lógica de programación es la vía fiable más pequeña, la IA puede escribir, guardar y ejecutar ayudas acotadas mediante run_script. Los comandos simples de reconocimiento/HTTP como curl siguen siendo llamadas a run_tool; los scripts son para lógica que las herramientas no pueden expresar limpiamente.

Probar el servidor

cd mcp_server && uv run fastmcp dev server.py

Esto abre un MCP Inspector basado en web para probar interactivamente cada herramienta.

Consulta mcp_server/README.md para la configuración de Claude Desktop y la documentación completa.

Se buscan colaboraciones

Este proyecto es grande por diseño, y la ayuda de la comunidad es muy bienvenida.

Las contribuciones útiles incluyen probar instalaciones en diferentes distribuciones, añadir herramientas que falten, corregir asignaciones de paquetes, mejorar los flujos de trabajo de MCP, escribir casos de uso de ejemplo, perfeccionar la documentación e informar de los bordes ásperos de flujos de trabajo reales de CTF, laboratorio, bug bounty, pentest, DFIR o defensivos.

Abre un issue para cambios más grandes o envía un PR centrado para correcciones pequeñas. Consulta CONTRIBUTING.md para la lista de verificación de validación.

Desarrollo

La documentación pública para colaboradores está en CONTRIBUTING.md. El inicio rápido es:

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, pytest

make help enumera todos los atajos (lint, test, validate, curate, sync-skills, check-skills, mcp, docker, …); el comando sin procesar que ejecuta cada objetivo está en CLAUDE.md / AGENTS.md.

El proyecto MCP de Python usa uv con [tool.uv] exclude-newer = "3 days". Las nuevas resoluciones de dependencias ignoran intencionadamente los paquetes subidos en las últimas 72 horas para reducir la confusión de dependencias y el radio de explosión de versiones comprometidas. Dependabot usa el mismo período de espera de 3 días, y el flujo de trabajo semanal de actualización de uv hereda la misma política.

Esta política de antigüedad de versiones se limita a las dependencias de arranque/ejecución del proyecto solo: paquetes MCP de Python, acciones de CI y entradas de compilación de Docker necesarias para poner el proyecto en marcha. No retrasa ni fija las herramientas de ciberseguridad instaladas desde el registro; esas herramientas siguen intencionadamente su instalador de módulos y flujo de actualización para que los operadores puedan obtener escáneres, exploits, firmas y utilidades de investigación actuales.

Ejecuta las pruebas de shell en Linux o WSL. Los checkouts nativos de Windows pueden reescribir los submódulos Bats incluidos con CRLF y provocar fallos de $'\r'.

Habilidades del agente

Este repositorio incluye 872 habilidades de agente bajo el árbol fuente canónico .claude/skills/. Claude Code descubre ese árbol directamente; scripts/sync-skills.sh genera el espejo portátil .agents/skills/ para clientes compatibles. Las habilidades se activan bajo demanda según la tarea: no consumen contexto de forma permanente. De ellas, 31 están creadas por el proyecto y 841 están seleccionadas de proyectos de código abierto, cada una atribuida a continuación y en THIRD_PARTY_NOTICES.md.

  • 10 habilidades de desarrollador específicas del proyecto (add-tool, validate-all, module-scaffold, writeup-template, mcp-sync-check, security-wordlists, security-payloads, guided-assessment, skill-dependency-audit, skill-curation-router)

  • 4 coordinadores entre habilidades (finding-triage, security-comms, authorization-gate, evidence-hygiene) a través de los cuales otras habilidades enrutan hallazgos, comunicación, comprobaciones de autorización y saneamiento de evidencia

  • 7 habilidades ancla de brechas de cobertura (GRC/privacidad, seguridad de IA/LLM, IoT/empotrado/hardware, mainframe, telecomunicaciones/5G, SAP/ERP, seguridad de cadena de suministro/producto)

  • 1 habilidad de flujo de trabajo de agente de codificación de multica-ai/andrej-karpathy-skills (MIT)

  • 6 habilidades de metodología CTF (ctf-crypto, ctf-pwn, ctf-web, ctf-rev, ctf-forensics, ctf-stego)

  • 4 habilidades de metodología de bug bounty (bounty-recon, bounty-web, bounty-api, bounty-mobile)

  • 10 habilidades de flujo de trabajo de bug bounty de BugHunter (claude-bug-bounty) (MIT)

  • 58 habilidades de metodología ofensiva de SnailSploit Claude-Red (MIT)

  • 14 habilidades de auditoría de código de Trail of Bits (CC-BY-SA 4.0)

  • 754 guías operativas de la comunidad mukul975/Anthropic-Cybersecurity-Skills (Apache 2.0)

  • 4 flujos de trabajo de alto nivel de Transilience (MIT)

Índice de fuentes y categorías en .claude/skills/SKILLS.md.

Instalar como plugin de Claude Code

El repositorio funciona también como mercado de plugins (.claude-plugin/), por lo que puedes incorporar toda la biblioteca de habilidades a cualquier proyecto sin clonar manualmente:

/plugin marketplace add 26zl/cybersec-toolkit
/plugin install cybersec-toolkit@cybersec-toolkit

El plugin expone las habilidades en .claude/skills/ (declaradas mediante el campo skills en .claude-plugin/plugin.json). El servidor MCP se configura por separado mediante .mcp.json; consulta Servidor MCP.

Usar estas habilidades en clientes compatibles

Las habilidades de agente son Markdown más archivos auxiliares opcionales, pero el descubrimiento y la activación son funciones del cliente, no de MCP. Claude Code, OpenCode, Codex, Gemini CLI, GitHub Copilot, Cursor, Cline, Goose, Hermes y OpenClaw admiten habilidades de agente a través de diferentes rutas o ajustes. scripts/sync-skills.sh refleja el origen .claude/skills/ del repositorio en .agents/skills/ para los clientes que usan esa ubicación:

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 (consulta Desarrollo) ejecuta este paso de espejo por ti.

.claude/skills/ sigue siendo la única fuente de verdad; .agents/skills/ se genera y está en git-ignore, así que vuelve a ejecutar la sincronización después de editar una habilidad. Continue y LM Studio pueden usar el servidor MCP, pero ninguno de los dos clientes documenta actualmente el descubrimiento automático de los archivos SKILL.md de este repositorio. Un índice independiente SKILLS.md solo sería contexto manual; no añadiría activación bajo demanda. Usa reglas/indicaciones de Continue o proporciona contenido de habilidad seleccionado como contexto en esos clientes. Consulta docs/AI_CLIENTS.md para las rutas y límites específicos del cliente.

scripts/validate_claude_skills.py comprueba los metadatos de las habilidades, los recuentos de índices, la frescura de la curación y la sintaxis de los scripts auxiliares para Python y PowerShell. Los scripts auxiliares de habilidades incluidos también pueden tener importaciones de Python opcionales específicas de la tarea. Esas importaciones se declaran en .claude/skills/requirements.txt, generado a partir del inventario de importaciones de los scripts auxiliares:

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

La clasificación/curación de habilidades está en .claude/skills/CURATION.md y .claude/skills/curation.json. Regenérala con:

python3 scripts/curate_claude_skills.py --write

Ubicaciones de herramientas

Las herramientas que no son del sistema (pipx, Go, Cargo, git, versiones binarias) se instalan en /usr/local/bin/ en Linux y en $PREFIX/bin en Termux. Los paquetes del sistema van a su ubicación predeterminada (/usr/bin/).

Método

Ubicación del binario (Linux)

Ubicación del binario (Termux)

Ubicación de datos

pipx

/usr/local/bin/

$PREFIX/bin/

/opt/pipx/ o ~/.local/pipx/

Go

/usr/local/bin/

$PREFIX/bin/

/opt/go/ o ~/.go/

Cargo

/usr/local/bin/ (enlace simbólico)

$PREFIX/bin/ (enlace simbólico)

~/.cargo/

Repositorios Git

/usr/local/bin/ (enlace simbólico)

$PREFIX/bin/ (enlace simbólico)

/opt/<repo>/ o ~/tools/<repo>/

Versiones binarias

/usr/local/bin/

Omitido (glibc incompatible con Bionic)

--

Imágenes de Docker (opcional)

Solo se usa con --enable-docker. Si Docker no está instalado y se establece --enable-docker, el instalador sale con un error pidiéndote que instales Docker primero.

Imagen

Módulo

Indicador

Descripción

bcsecurity/empire

misc

--enable-docker --include-c2

Empire C2

spiderfoot/spiderfoot

misc

--enable-docker

SpiderFoot OSINT

beefproject/beef

web

--enable-docker

Explotación de navegador BeEF

opensecurity/mobile-security-framework-mobsf

mobile

--enable-docker

MobSF

specterops/bloodhound

enterprise

--enable-docker

BloodHound CE

trailofbits/echidna

blockchain

--enable-docker

Fuzzer de contratos inteligentes Echidna

strangebee/thehive:latest

blueteam

--enable-docker

Plataforma IR TheHive

thehiveproject/cortex:latest

blueteam

--enable-docker

Análisis Cortex

zeek/zeek:latest

blueteam

--enable-docker

Análisis de red Zeek

wagga40/zircolite:latest

blueteam

--enable-docker

Detección EVTX Zircolite

vxcontrol/pentagi:latest

llm

--enable-docker

PentAGI pentesting autónomo

Soporte de distribuciones

Debian/Ubuntu/Kali es el objetivo principal: allí está disponible el registro completo de más de 670 paquetes y cuenta con la mayor cobertura de pruebas. Fedora/Arch/openSUSE tienen entre ~10 y 20 paquetes omitidos automáticamente (específicos de la distribución) y están cubiertos por el flujo de trabajo de integración. WSL y ARM son compatibles en la práctica, pero aún no tienen trabajos de CI dedicados. Windows y macOS se detectan y bloquean con un mensaje de error claro.

Plataforma

Estado

WSL

Compatible para instalaciones y uso de MCP. El módulo inalámbrico se omite automáticamente (sin acceso al hardware) y los paquetes a nivel de kernel se filtran. Valida los cambios críticos para el lanzamiento en una distribución WSL local porque aún no hay un trabajo de CI dedicado. Consulta la nota sobre Windows Defender a continuación si mantienes el repositorio en una ruta montada de Windows.

ARM (aarch64/armv7)

Compatible con omisiones automáticas para lanzamientos binarios solo x86 y herramientas compiladas desde el código fuente. Aún no hay un trabajo de CI dedicado.

Termux (Android)

Compatible. Aún no hay un trabajo de CI dedicado. No se necesita sudo. Se omiten Docker/snap/lanzamientos binarios/compilación desde el código fuente (incompatible con Bionic).

Windows (nativo)

No compatible. Usa WSL.

macOS

No compatible. Usa el contenedor Docker.

Otras distribuciones de Linux

Cualquier sistema sin un gestor de paquetes compatible (apt/dnf/pacman/zypper), p. ej. NixOS, Gentoo, Void, Alpine, Slackware, se detecta y bloquea con un error claro. Usa la imagen Docker en su lugar.

Modelo de cadena de suministro

Este instalador descarga y ejecuta código de Internet. En Linux se ejecuta como root (sudo); en Termux se ejecuta en el sandbox de usuario de la aplicación (sin root).

  • Paquetes del sistema: firmados con GPG por los repositorios de tu distribución (apt, dnf, pacman, zypper, pkg)

  • pipx/Go/Cargo/Gem/npm: descargas desde registros (sin verificación de firmas, pipx aislado en venvs)

  • Lanzamientos binarios: verificados con SHA256 cuando el archivo de suma de verificación está disponible; falla de forma estricta si hay discrepancia. Usa --require-checksums o el ajuste predefinido --production para fallar también cuando no se publica un archivo de suma de verificación. Advertencia: --fast desactiva toda la verificación de sumas de verificación, incluidos los lanzamientos que sí publican sumas de verificación; no lo uses en producción ni en entornos de CI

  • Dependencias Python de MCP: resueltas por uv con una ventana de exclude-newer de 3 días; Dependabot también espera 3 días antes de proponer PRs de dependencias. Esto no se aplica a las herramientas de seguridad instaladas

  • SDK de Go: verificado con SHA256 contra los hashes publicados en go.dev cuando están disponibles; advierte si falla la API, falla de forma estricta con --require-checksums

  • Repositorios Git: clonados en HEAD, las dependencias se instalan en venvs aislados (setup.py NO se ejecuta)

  • Compilación desde el código fuente: ejecuta make (como root en Linux); revisa lo que estás compilando

  • Compilación Docker del toolkit: las fuentes de Ubuntu y uv están fijadas por digest, mientras que los paquetes apt se resuelven desde los repositorios de Ubuntu firmados actuales; las recompilaciones no son reproducibles bit a bit

  • Imágenes de herramientas opcionales: se extraen mediante etiquetas mutables en lugar de digests, incluidas varias etiquetas latest explícitas. --production no fija ni verifica estas imágenes

El archivo .versions registra qué se instaló y cuándo.

Limitaciones conocidas

La verificación de sumas de verificación es de mejor esfuerzo por defecto. Algunos lanzamientos upstream no publican sumas de verificación ni firmas, por lo que las descargas pueden continuar sin verificación criptográfica en esos casos. Usa --production (o --require-checksums) para fallar de forma estricta cuando no haya un archivo de suma de verificación disponible. Este ajuste predefinido no fija clones de Git, registros de paquetes de lenguajes ni herramientas compiladas desde el código fuente; esos siguen sus canales de lanzamiento upstream. Las descargas del SDK de Go se verifican con SHA256 contra go.dev cuando la API es accesible; el modo de suma de verificación estricta falla de forma estricta si no lo es.

--fast omite toda la verificación de sumas de verificación para lanzamientos binarios (tanto las comprobaciones SHA256 como la advertencia de suma de verificación faltante), incluidos los lanzamientos que sí publican sumas de verificación. Esto intercambia la verificación de integridad por velocidad. Es mutuamente excluyente con --require-checksums y --production. No uses --fast en canalizaciones de CI ni en entornos donde la integridad de la cadena de suministro sea importante.

Falsos positivos de Windows Defender

Si clonas este repositorio en una ruta montada de Windows (p. ej. C:\Users\<tu-usuario>\... o cualquier carpeta visible desde Windows mientras trabajas en WSL), Microsoft Defender y otros productos antivirus pueden poner en cuarentena archivos individuales. El contenido defensivo (tablas de referencia de IOC, PowerShell ofuscado de muestra, fragmentos de análisis de malware, cadenas de PoC de exploits dentro de .claude/skills/, writeups/ y partes de mcp_server/) contiene las mismas cadenas de bytes que usan los atacantes reales, por lo que los motores basados en firmas y ML pueden marcarlos. Las detecciones comunes incluyen Trojan:Script/Wacatac.B!ml, HackTool:* y veredictos genéricos Heur.*.

Estos son falsos positivos en el contexto de un toolkit de seguridad. Para trabajar con el repositorio en Windows tienes tres opciones:

  1. Añade una exclusión de Defender para la carpeta del repositorio (recomendado para un equipo de desarrollo personal). Ejecuta desde PowerShell elevado:

    Add-MpPreference -ExclusionPath "C:\path\to\cybersec-toolkit"
  2. Restaura archivos individuales desde la cuarentena mediante Seguridad de Windows -> Protección contra virus y amenazas -> Historial de protección -> "Permitir en el dispositivo". Es archivo por archivo, pero no evita la redetección al actualizar.

  3. Mantén el repositorio dentro del sistema de archivos de WSL (p. ej. ~/cybersec-toolkit en tu distribución). Defender no escanea el vhdx de WSL2 por defecto, por lo que no se producen detecciones. scripts/sync-wsl.sh ya hace esto para el subdirectorio del servidor MCP.

Los archivos eliminados por Defender aparecerán como D en git status. El contenido se conserva en el historial de git; restáuralo con git checkout -- <ruta> una vez que la exclusión esté en su lugar.

Licencia

Licencia MIT: consulta LICENSE para más detalles.

Este repositorio también redistribuye componentes de terceros bajo sus propios términos, incluidos algunos bajo CC-BY-SA-4.0 (ShareAlike, no relicenciables a MIT). Si redistribuyes o adaptas contenido incluido, sigue esos términos: consulta THIRD_PARTY_NOTICES.md.

Para el flujo de trabajo de contribuciones y las expectativas de revisión, consulta CONTRIBUTING.md. Para las expectativas de comportamiento de la comunidad, consulta CODE_OF_CONDUCT.md. Para informar vulnerabilidades, consulta SECURITY.md.

Este proyecto se proporciona únicamente para pruebas de seguridad educativas, defensivas y explícitamente autorizadas. Úsalo solo en sistemas que poseas o para los que tengas permiso por escrito para evaluar, y cumple todas las leyes aplicables, reglas de compromiso, licencias de herramientas de terceros y términos de servicio.

El toolkit incluye herramientas ofensivas y defensivas de doble uso. Algunos comandos pueden escanear redes, ejecutar exploits, modificar sistemas o activar alertas de seguridad. Las integraciones MCP/IA están protegidas por políticas de seguridad, pero los usuarios siguen siendo responsables de revisar el alcance, los prompts, los comandos y las salidas antes de ejecutar acciones.

Este repositorio no redistribuye las herramientas de seguridad en sí; instala proyectos de código abierto disponibles públicamente desde sus fuentes upstream oficiales en el momento de la instalación. Está destinado únicamente a un uso lícito y autorizado.

El proyecto se proporciona "tal cual", sin garantía. Los mantenedores no son responsables del mal uso, daños, pérdida de datos, interrupción del servicio o consecuencias legales derivadas del uso de este toolkit.

El contenido de terceros se incluye bajo su licencia original: consulta THIRD_PARTY_NOTICES.md.

Available Tools

15 tools
check_installedA
Read-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 '.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoOptional remote host name (as configured via manage_remote_hosts).
tool_nameYesName of the tool to check (as listed in tools_config.json).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_infoA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cveYesA CVE id (CVE-YYYY-NNNN) or a known vulnerability nickname.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_infoB
Read-onlyIdempotent

Get full details about a module: description, all tools, and management commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesModule name (e.g. "web", "pwn", "forensics").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_toolsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYesProfile name (e.g. "ctf", "redteam", "web", "full").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_infoB
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameYesName of the tool to look up.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_assessmentA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"companion" (default) or "autonomous" (opt-in).companion
targetYesURL, hostname/IP, or local file path to assess.
findingNoOptional short finding summary to classify for triage/report routing. Raw finding text is used locally but not echoed in the result.
workflowNo"auto" (default — inferred), "bounty", "ctf", or "generic".auto
intensityNo"low" (default) or "medium". Medium may include low-volume nmap.low
max_stepsNoMaximum number of bootstrap steps autonomous mode auto-executes.
target_typeNo"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_confirmedNoRequired before any network step executes.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_profilesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_toolsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNoFilter by install method. One of apt, pipx, go, cargo, gem, git, binary, docker, snap, special, source, npm.
moduleNoFilter by module (e.g. "web", "pwn", "forensics"). 18 modules available.
installed_onlyNoIf true, only return tools that are currently installed.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_hostsA
Destructive

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHost name (required for add/remove/test).
portNoSSH port (default 22).
userNoSSH username (default "kali").kali
actionYesOperation to perform: "list", "add", "remove", or "test".
ssh_keyNoPath to SSH private key (e.g. "~/.ssh/id_kali").
hostnameNoIP address or hostname of the remote machine (required for add).
descriptionNoHuman-readable description of the host.
tool_allowlistNoComma-separated list of allowed tool names (e.g. "nmap,gobuster,sqlmap"). None means all tools allowed.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_installA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesNatural-language description of what the user wants to do.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_pipelineA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoReserved for future use. Currently only local execution is supported.
stepsYesList of dicts, each with 'tool' (required) and 'args' (optional) keys. Max 10 steps per pipeline.
timeoutNoGlobal timeout for entire pipeline in seconds (default 120, max 300).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_scriptA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe script source code to execute.
venvNoOptional 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.
timeoutNoMaximum execution time in seconds (default 120, max 300).
languageNo"python" (default) or "bash".python
working_dirNoWorking directory for the script (default: system temp dir).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_toolA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoCommand-line arguments as a string (e.g. "--version" or "-sV 10.0.0.1").
hostNoOptional remote host name (as configured via manage_remote_hosts).
timeoutNoMaximum execution time in seconds (default 120, max 300).
tool_nameYesName of the tool to run (registry tool or system utility).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_bountyA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
target_typeYesType of bug bounty target (e.g. "web_app", "api", "cloud").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_ctfA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
challenge_typeYesType of CTF challenge (e.g. "web", "crypto", "pwn").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 2 tool updatesv1.2.1
    • Changedlist_tools2 fields changed
      • changedInput schema / properties / method / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "apt",
        +      "pipx",
        +      "go",
        +      "cargo",
        +      "gem",
        +      "git",
        +      "binary",
        +      "docker",
        +      "snap",
        +      "special",
        +      "source",
        +      "npm"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / method / description
        Previous 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."
    • Changedmanage_remote_hosts2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"One of \"list\", \"add\", \"remove\", \"test\"."New value: +"Operation to perform: \"list\", \"add\", \"remove\", or \"test\"."
      • addedInput schema / properties / action / enum
        Added value: +[
        +  "list",
        +  "add",
        +  "remove",
        +  "test"
        +]
  2. 15 tool updatesv1.2.0
    • First observedcheck_installed
    • First observedget_cve_info
    • First observedget_module_info
    • First observedget_profile_tools
    • First observedget_tool_info
    • First observedguided_assessment
    • First observedlist_profiles
    • First observedlist_tools
    • First observedmanage_remote_hosts
    • First observedrecommend_install
    • First observedrun_pipeline
    • First observedrun_script
    • First observedrun_tool
    • First observedsuggest_for_bounty
    • First observedsuggest_for_ctf

TDQS

A3.9/5.0

Scored across 15 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables aggregation, filtering, transformation, and composition of tools from multiple MCP servers through a single proxy with tool views.
    5
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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 npm
    501
    MIT