Skip to main content
Glama
README.md
# MCPFP — Model Context Protocol For Pentesting

Servidor **MCP** (Model Context Protocol, SDK oficial de Python) para practicar
evaluación de seguridad contra **una** máquina virtual de laboratorio (VulnHub u
otra). Valida el **OWASP Top 10**, escanea red y protocolo, y **guía** al
estudiante paso a paso.

> **Regla de oro:** el MCP **describe** vulnerabilidades y sugiere acercamientos,
> pero **nunca las explota**. Los hallazgos se entregan en el chat y se guardan
> como reporte Markdown en el directorio desde donde se invocó el MCP.
> Úsalo **solo** en laboratorios propios o con autorización explícita.

## Instalación

```
python -m venv .venv
.venv\Scripts\python -m pip install -e .
copy .env.example .env
```

Edita `.env` con los datos del laboratorio (ver comentarios en `.env.example`):

- `MCPFP_TARGET_HOST`: IP/host de la VM.
- `MCPFP_AUTHORIZED=true`: confirma que tienes permiso (obligatorio para operar).
- `MCPFP_PORT_RANGE`, `MCPFP_REPORT_DIR`, credenciales de lab (opcionales).

**Nunca subas `.env` a un repositorio.**

Herramientas externas recomendadas (el MCP valida su existencia y sugiere cómo
instalarlas): `nmap`, `nikto`, `whatweb`, `openssl`, `curl`, `dig`.

## Uso

### Servidor MCP

Correrlo manualmente (stdio), invocando el módulo del servidor:

```
.venv\Scripts\python -m mcpfp.server
```

Para registrarlo en Claude Code:

```
claude mcp add mcpfp -s user -- "<ruta>\.venv\Scripts\python.exe" -m mcpfp.server
```

o para otro cliente MCP (Claude Desktop, etc.), agrega este bloque a la config
de `mcpServers` del cliente, ajustando las rutas a tu máquina:

```json
{
  "mcpServers": {
    "mcpfp": {
      "command": "C:\\ruta\\a\\MCPFP\\.venv\\Scripts\\python.exe",
      "args": ["-m", "mcpfp.server"],
      "cwd": "C:\\ruta\\a\\MCPFP"
    }
  }
}
```

`cwd` define dónde se escribe el reporte Markdown (por defecto en `reports/`).

## Herramientas expuestas

| Tool | Descripción | ¿Explota? |
|------|-------------|-----------|
| `load_target_info` | Carga y valida el objetivo del `.env` | No |
| `check_environment` | Verifica herramientas externas y sugiere instalación | No |
| `scan_network` | Puertos/servicios/versiones (nmap no intrusivo) | No |
| `analyze_http_headers` | Cabeceras de seguridad HTTP | No |
| `analyze_tls` | Certificado y protocolo TLS | No |
| `assess_owasp` | Fingerprinting + mapeo OWASP Top 10 | No |
| `get_guidance` | Tutor: acercamientos obvios y no obvios | No |
| `write_report` | Guarda hallazgos en Markdown en el cwd | No |

Además, el prompt MCP `metodologia` describe el flujo completo.

## Guardarraíles anti-explotación

`src/mcpfp/guardrails.py` aplica lista blanca de binarios y lista negra de
argumentos intrusivos (exploit, brute, dos, dump, etc.). Herramientas de
explotación (`sqlmap`, `hydra`, `metasploit`, …) están **prohibidas**.

## Skill de Claude

`skills/ciberseguridad-owasp-iso27001/SKILL.md`: metodología de abordaje
defensivo siguiendo **OWASP + ISO/IEC 27001**.

## Estructura

```
src/mcpfp/
├── server.py        # FastMCP: tools, prompt
├── config.py        # objetivo único desde .env
├── guardrails.py    # anti-explotación
├── tools/           # environment, recon, protocol, web_owasp, guidance, report
└── knowledge/       # referencias OWASP / protocolo
skills/               # Skill de Claude (OWASP + ISO 27001)
```

## Aviso legal

Herramienta educativa y defensiva. El uso contra sistemas sin autorización es
ilegal. El autor y los contribuyentes no se responsabilizan del mal uso.

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct stage or concern: target setup, environment checks, network scanning, HTTP header analysis, TLS inspection, OWASP mapping, guidance, and reporting. Even the two analyze tools are clearly separated by layer, so no agent should confuse one tool for another.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: load_, check_, scan_, analyze_, assess_, get_, and write_. The verb clearly signals the action and the noun signals the target, making the naming predictable and easy to extend.

Tool Count5/5

Eight tools is a well-scoped set for a reconnaissance and OWASP assessment workflow. Each tool has a clear responsibility and no tool feels redundant or extraneous.

Completeness5/5

The workflow is complete for the stated passive-assessment and pedagogical purpose: it covers target validation, environment readiness, network discovery, HTTP/TLS inspection, OWASP mapping, guidance, and report generation. There are no obvious dead ends or missing core operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues