mcp-toolkit-server
Converts Claude into a cybersecurity assistant by exposing 17 tools for network reconnaissance, cryptography, and security analysis, enabling users to perform tasks like SSL certificate checking, port scanning, and JWT analysis directly within conversations.
README
MCP Toolkit Server — Ciberseguridad para Claude
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.
¿Por qué este servidor?
Este proyecto nació como parte de una ruta de aprendizaje en ciberseguridad. El objetivo es doble:
- Práctica real: implementar herramientas que se usan en auditorías, reconocimiento web y análisis de tokens, entendiendo cada detalle por dentro.
- 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
- Agregá la función al módulo correspondiente en
tools/(o creá uno nuevo). - Registrala en
server.pycon@mcp.tool(). - 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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.