Skip to main content
Glama
mcp-toolkit-server

mcp-toolkit-server

by GonzaBot

MCP Toolkit Server — Ciberseguridad para Claude

Python License: MIT MCP Tests Tools

Convertí a Claude en tu asistente de ciberseguridad. Este servidor MCP expone 17 herramientas de red, criptografía y análisis de seguridad directamente en tus conversaciones con Claude Desktop o Claude Code, sin salir del chat.


¿Qué es MCP y por qué importa?

MCP (Model Context Protocol) es el estándar abierto de Anthropic para conectar modelos de IA con herramientas y fuentes de datos externas. Funciona como un "conector universal": en lugar de integrar cada herramienta a mano, un servidor MCP las expone todas a la vez para cualquier cliente compatible.

Lo que esto significa en la práctica: podés preguntarle a Claude "¿el certificado SSL de mi servidor vence esta semana?" o "analizá este JWT y decime si tiene vulnerabilidades" y Claude ejecuta las herramientas, interpreta los resultados y te da una respuesta contextualizada, todo dentro de la conversación.


Related MCP server: Tengu

¿Por qué este servidor?

Este proyecto nació como parte de una ruta de aprendizaje en ciberseguridad. El objetivo es doble:

  1. Práctica real: implementar herramientas que se usan en auditorías, reconocimiento web y análisis de tokens, entendiendo cada detalle por dentro.

  2. Productividad con IA: potenciar el flujo de trabajo cotidiano en seguridad integrando estas capacidades directamente con Claude.

Las herramientas no son wrappers de otras CLIs — están implementadas en Python puro usando la stdlib más dnspython, para entender exactamente qué pasa en cada operación.


Herramientas incluidas

Sistema y Archivos

Herramienta

Descripción

info_sistema

SO, versión, arquitectura, Python, hora UTC

espacio_disco(ruta)

Espacio total / usado / libre en GB

calcular_hash(archivo, algoritmo)

SHA-256 / SHA-1 / MD5 de un archivo — verificación de integridad

listar_directorio(ruta)

Lista archivos y carpetas con tipo

Red y Reconocimiento Web

Herramienta

Descripción

verificar_certificado_ssl(dominio)

Validez, días hasta expiración, emisor, protocolo, cifrado, SANs

verificar_headers_seguridad(url)

Auditoría de HSTS, CSP, X-Frame-Options, MIME, Referrer-Policy. Score /6

hacer_request_http(url, metodo, headers, body)

HTTP client completo — probar APIs, analizar respuestas

consultar_dns(dominio, tipo)

Registros A, AAAA, MX, NS, TXT, CNAME

whois_dominio(dominio)

Registrante, fechas de creación/expiración, nameservers

Ciberseguridad

Herramienta

Descripción

escanear_puertos(host)

~35 puertos TCP en paralelo. Detecta servicios críticos expuestos (Docker, Redis, MongoDB, SMB...) con consejos de hardening

verificar_fortaleza_password(password)

Análisis de entropía en bits, diversidad de charset, patrones débiles comunes

Criptografía y Tokens

Herramienta

Descripción

generar_password_seguro(longitud, ...)

Contraseña segura con secrets — muestra entropía calculada

generar_token_aleatorio(longitud, formato)

API keys, secrets, session IDs en hex / base64 / urlsafe

calcular_hash_texto(texto, algoritmo)

Hash de strings — sha256, sha512, md5, blake2b, sha3_256

analizar_jwt(token)

Decodifica header + payload, detecta: expiración, alg:none, claims de seguridad

codificar_base64(texto)

Codificación base64 standard o URL-safe

decodificar_base64(texto)

Decodificación base64 con autodetección de padding


Casos de uso reales

"¿El certificado SSL de api.miempresa.com está por vencer?"
→ verificar_certificado_ssl("api.miempresa.com")
  Estado: ADVERTENCIA — expira en 12 días
  Emisor: Let's Encrypt
  SANs: api.miempresa.com, www.api.miempresa.com
"Auditá los headers de seguridad de nuestro panel de admin"
→ verificar_headers_seguridad("https://admin.miempresa.com")
  Score: 2/6 — Bajo
  [OK] Strict-Transport-Security: max-age=31536000
  [OK] X-Content-Type-Options: nosniff
  [--] Content-Security-Policy
  [--] X-Frame-Options  ← ¡expuesto a clickjacking!
  Fuga: Server: nginx/1.18.0  ← versión expuesta
"Decodificá este JWT del login y decime si tiene algo raro"
→ analizar_jwt("eyJhbGci...")
  Algoritmo: HS256
  ⚠  TOKEN EXPIRADO — venció el 2024-03-15 10:00 UTC
  Claim 'role': admin
  Claim 'sub': user_1337
"Chequeá qué puertos tiene abiertos mi VPS en producción"
→ escanear_puertos("203.0.113.42")
  22/tcp  SSH
  80/tcp  HTTP
  6379/tcp Redis ← CRÍTICO: Redis sin autenticación — activar requirepass
  27017/tcp MongoDB ← CRÍTICO: expone toda la base de datos
"Generame un API key para el nuevo microservicio"
→ generar_token_aleatorio(32, "hex")
  a3f8c2e1d9b7045f6a2c8e4d1f0b3a9c7e2d5f8b1a4c7e0d3f6b9a2c5e8d1f4
  Entropía: 256 bits

Instalación

git clone https://github.com/GonzaBot/mcp-toolkit-server.git
cd mcp-toolkit-server
pip install -e .

Dependencias: mcp>=1.0.0, dnspython>=2.0.0. El resto es stdlib de Python 3.10+.


Conectar con Claude Desktop

Editá el archivo de configuración de Claude Desktop:

SO

Ruta

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "mcp-toolkit-server": {
      "command": "mcp-toolkit-server"
    }
  }
}

Reiniciá Claude Desktop. Las 17 herramientas aparecen automáticamente disponibles en la conversación.


Conectar con Claude Code

claude mcp add mcp-toolkit-server mcp-toolkit-server

O en modo proyecto, editá .claude/mcp.json:

{
  "mcpServers": {
    "mcp-toolkit-server": {
      "command": "mcp-toolkit-server"
    }
  }
}

Estructura del proyecto

mcp-toolkit-server/
├── src/mcp_toolkit_server/
│   ├── server.py          # Punto de entrada — registra las 17 tools con FastMCP
│   └── tools/
│       ├── system.py      # Info del SO y espacio en disco
│       ├── files.py       # Hash de archivos y listado de directorios
│       ├── security.py    # Escaneo de puertos y análisis de contraseñas
│       ├── network.py     # SSL, headers HTTP, requests, DNS, WHOIS
│       └── crypto.py      # Passwords, tokens, hashing, JWT, Base64
├── tests/
│   └── test_tools.py      # 53 tests — 47 offline + 6 con internet
├── examples/
│   └── claude_desktop_config.json
└── pyproject.toml

Tests

# Instalar dependencias de desarrollo
pip install -e ".[dev]"

# Tests offline (sin internet)
pytest -k "not network"

# Tests completos (incluye verificaciones contra google.com, httpbin.org)
pytest -m network

# Todo junto
pytest -v

53 tests cubriendo: happy path, casos de error, valores criptográficos conocidos (hash SHA-256 de string vacío, MD5 de "hello"), JWTs expirados, algoritmo none, Base64 con y sin padding, tokens hex/base64/urlsafe.


Cómo agregar tu propia herramienta

  1. Agregá la función al módulo correspondiente en tools/ (o creá uno nuevo).

  2. Registrala en server.py con @mcp.tool().

  3. Escribí un docstring claro — Claude lo usa para saber cuándo y cómo invocarla.

# tools/network.py
def mi_herramienta_nueva(parametro: str) -> str:
    """Descripción clara de qué hace y cuándo usarla.

    Args:
        parametro: qué representa
    """
    return resultado

# server.py
@mcp.tool()
def mi_herramienta_nueva(parametro: str) -> str:
    """Descripción clara de qué hace y cuándo usarla.

    Args:
        parametro: qué representa
    """
    return network.mi_herramienta_nueva(parametro)

Uso ético

Las herramientas de reconocimiento de red (escanear_puertos, whois_dominio, consultar_dns, verificar_certificado_ssl) deben usarse únicamente sobre:

  • Sistemas propios

  • Sistemas sobre los que tenés autorización explícita del propietario

Escanear sistemas de terceros sin permiso puede ser ilegal según la jurisdicción.


Roadmap

  • Transporte HTTP/SSE para acceso remoto (correr el servidor en un VPS)

  • verificar_ip_reputacion — consultar AbuseIPDB / VirusTotal

  • auditar_dependencias — integrar pip-audit para detectar CVEs en proyectos Python

  • detectar_tecnologias — fingerprinting de stack tecnológico por headers y respuestas

  • GitHub Actions con tests en CI/CD

  • Tests de integración con cliente MCP simulado


Licencia

MIT © Gonzalo D. Rodríguez de Mello

Available Tools

17 tools
analizar_jwtA

Decodifica y analiza un JWT (JSON Web Token) sin verificar la firma.

Muestra header, payload y todos los claims. Detecta: tokens expirados, algoritmo 'none' (vulnerabilidad crítica), algoritmos simétricos vs asimétricos, claims de seguridad (sub, iss, aud, roles, scope, permissions).

Args: token: JWT en formato header.payload.signature

Inputs: token (required). Returns: result

calcular_hashA

Calcula el hash (sha256, sha1, md5) de un archivo para verificar su integridad.

Args: ruta_archivo: ruta al archivo algoritmo: algoritmo de hash a usar (sha256, sha1, md5)

Inputs: ruta_archivo (required), algoritmo. Returns: result

calcular_hash_textoA

Calcula el hash de un texto arbitrario.

Útil para verificar integridad de datos, comparar valores o crear identificadores.

Args: texto: el texto a hashear algoritmo: sha256, sha512, sha1, md5, blake2b, sha3_256

Inputs: texto (required), algoritmo. Returns: result

codificar_base64A

Codifica un texto en Base64 (standard o URL-safe).

Args: texto: texto a codificar url_safe: usar variante URL-safe (reemplaza +/ por -_, sin padding)

Inputs: texto (required), url_safe. Returns: result

consultar_dnsA

Realiza consultas DNS para un dominio.

Soporta registros: A (IPv4), AAAA (IPv6), MX (mail), NS (nameservers), TXT (SPF, DKIM, verificación), CNAME (alias).

Args: dominio: dominio a consultar (ej: "google.com") tipo: tipo de registro DNS — A, AAAA, MX, NS, TXT, CNAME

Inputs: dominio (required), tipo. Returns: result

decodificar_base64A

Decodifica texto en Base64 (soporta standard, URL-safe, con o sin padding).

Args: texto: texto en Base64 a decodificar

Inputs: texto (required). Returns: result

escanear_puertosA

Escanea ~35 puertos TCP comunes de un host. Solo sobre sistemas propios o autorizados.

Detecta servicios web, SSH, bases de datos, Docker, Kubernetes, SMB, Redis, MongoDB, Elasticsearch y otros. Marca servicios de alto riesgo con consejos.

Args: host: dirección IP o dominio a escanear (ej: "192.168.1.1", "miservidor.com") timeout: tiempo de espera por puerto en segundos (default: 0.5)

Inputs: host (required), timeout. Returns: result

espacio_discoA

Devuelve el espacio total, usado y libre (en GB) de una ruta del sistema.

Args: ruta: ruta del sistema de archivos a inspeccionar

Inputs: ruta. Returns: result

generar_password_seguroA

Genera una contraseña criptográficamente segura usando el módulo secrets de Python.

Args: longitud: número de caracteres (entre 8 y 128, default: 16) mayusculas: incluir letras mayúsculas numeros: incluir dígitos 0-9 simbolos: incluir símbolos especiales (!@#$%...)

Inputs: numeros, longitud, simbolos, mayusculas. Returns: result

generar_token_aleatorioA

Genera un token criptográficamente seguro para API keys, secrets, session IDs, etc.

Args: longitud: longitud en bytes de entropía (16-256, default: 32) formato: 'hex' (64 chars para 32 bytes), 'base64', o 'urlsafe'

Inputs: formato, longitud. Returns: result

hacer_request_httpA

Realiza una petición HTTP completa y devuelve status, headers y body.

Útil para probar APIs REST, analizar respuestas de endpoints, o debuggear servicios web directamente desde la conversación.

Args: url: URL de destino metodo: método HTTP — GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS headers_json: headers adicionales como JSON (ej: '{"Authorization":"Bearer tok"}') body: cuerpo de la petición (JSON string para POST/PUT/PATCH) timeout: tiempo de espera en segundos (1-60)

Inputs: url (required), body, metodo, timeout, +1 more. Returns: result

info_sistemaA

Devuelve información del sistema operativo: SO, versión, arquitectura y Python.

Inputs: no named parameters. Returns: result

listar_directorioC

Lista los archivos y subdirectorios de una carpeta.

Args: ruta: ruta del directorio a listar

Inputs: ruta. Returns: result

verificar_certificado_sslA

Inspecciona el certificado SSL/TLS de un dominio.

Devuelve: estado de validez, días hasta expiración, protocolo, cifrado, emisor (CA), organización, fechas y Subject Alternative Names (SANs). Detecta certificados expirados o próximos a vencer.

Args: dominio: hostname a inspeccionar (ej: "google.com", "miservidor.com") puerto: puerto HTTPS (por defecto 443)

Inputs: dominio (required), puerto. Returns: result

verificar_fortaleza_passwordA

Evalúa la fortaleza de una contraseña con análisis de entropía y patrones débiles.

No almacena ni transmite la contraseña. Evalúa: longitud, diversidad de caracteres, patrones débiles comunes, repetición y entropía estimada en bits.

Args: password: la contraseña a evaluar

Inputs: password (required). Returns: result

verificar_headers_seguridadA

Audita los HTTP security headers de una URL y puntúa su nivel de seguridad.

Verifica: HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy. Detecta fugas de información (Server, X-Powered-By).

Args: url: URL a auditar (ej: "https://miapp.com" o directamente "miapp.com")

Inputs: url (required). Returns: result

whois_dominioA

Consulta información WHOIS de un dominio.

Devuelve: registrante, registrador, fechas de creación/expiración/actualización, nameservers y estado del dominio.

Args: dominio: dominio a consultar (ej: "google.com", "openai.com")

Inputs: dominio (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 17 tools

    Disambiguation5/5

    Cada herramienta tiene un propósito claramente diferente: análisis de JWT, hashing, codificación, consultas DNS, escaneo de puertos, generación de contraseñas, etc. No hay superposición significativa.

    Naming Consistency5/5

    Todos los nombres siguen el patrón consistente verbo_sustantivo en español, usando snake_case. La convención es uniforme en las 17 herramientas.

    Tool Count5/5

    17 herramientas es un número adecuado para un conjunto de utilidades de seguridad y sistema. Cubre un rango amplio sin ser excesivo.

    Completeness4/5

    El conjunto cubre bien las funcionalidades principales: hashing, codificación, consultas de red, análisis de seguridad. Faltan herramientas para cifrado simétrico o generación de claves, pero lo esencial está presente.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      A
      maintenance
      CyberSecurity MCP Server extends Claude with real-time cybersecurity reconnaissance capabilities that Claude doesn't have by default. Instead of manually running 5 different tools across different terminals, just tell Claude "analyze google.com" and get a complete security breakdown instantly. Tools included: * WHOIS Lookup — registrar, ownership, creation/expiry dates * DNS Enumeration — A,
      8
      29
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Turns Claude into a penetration testing copilot with 80 security tools, safety controls, and automatic reporting.
      80
      65
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Adds security capabilities like port scanning, TLS inspection, DNS enumeration, process monitoring, secrets scanning, HTTP header auditing, and CVE checking to Claude Code and Cursor.
      23
      79 npm
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables Claude or any MCP-compatible client to execute cybersecurity workflows like incident response, cloud audits, and pentests by calling tools with 323 prompts across 8 categories.
      1
      -