MCP Cybersecurity Server
Enables vulnerability analysis by querying CVE data through the CIRCL API and provides professional security risk assessments for SOC and Blue Team operations. It integrates tools for searching vulnerabilities with resources like risk matrices and operational playbooks to help remediate security threats.
README
MCP Cybersecurity Server
Servidor MCP para análisis de vulnerabilidades CVE, integrado con la API de CIRCL Vulnerability Lookup
Descripción
Este proyecto implementa un servidor MCP (Model Context Protocol) especializado en análisis de vulnerabilidades de ciberseguridad. Permite a modelos de lenguaje (LLMs) consultar información de CVEs, analizar riesgos y proporcionar recomendaciones de seguridad basadas en playbooks profesionales y matrices de riesgo.
Desarrollado para: Máster en IA Aplicada a Ciberseguridad - Módulo 8 - Tarea 2 Autor: José Miguel Teba Luque Fecha: Diciembre 2025
Características Principales
🔧 3 Herramientas (Tools)
-
search_cve_by_id- Busca información detallada de un CVE específico
- Retorna: descripción, CVSS, severidad, referencias, fechas, CWEs
-
search_cves_by_keyword- Busca CVEs por producto, vendor o palabra clave
- Ideal para descubrir vulnerabilidades de tecnologías específicas
-
summarize_cve_risk- Análisis de riesgo orientado a equipos SOC/Blue Team
- Incluye EPSS score, nivel de urgencia, SLAs y recomendaciones
📚 2 Recursos (Resources)
-
playbook_high_risk.md- Playbook operativo para gestión de vulnerabilidades críticas
- 4 fases: Detección, Mitigación, Parcheo, Cierre
- SLA de 4 horas, procedimientos de escalación
-
risk_matrix.json- Matriz de priorización de riesgos
- 5 niveles: CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL
- Criterios basados en CVSS, EPSS y contexto del activo
🤖 1 Prompt Preconfigurado
analyze_asset_vulnerabilities- Análisis completo de un activo con múltiples CVEs
- Genera reporte ejecutivo con timeline de remediación
- Combina tools + resources para análisis integral
Requisitos Previos
- Python: 3.10 o superior (recomendado 3.12+)
- Sistema Operativo: macOS, Linux, o Windows
- MCP Host: Claude Desktop, VS Code con extensión MCP, o cliente MCP compatible
- Conexión a Internet: Para consultas a la API de CIRCL
Instalación
1. Clonar o Descargar el Proyecto
# Navegar al directorio del proyecto
cd "/path/to/mcp-cybersecurity-server"
2. Crear Entorno Virtual
# Crear entorno virtual con Python 3.12+
python3.12 -m venv venv
# Activar entorno virtual
# En macOS/Linux:
source venv/bin/activate
# En Windows:
venv\Scripts\activate
3. Instalar Dependencias
# Actualizar pip
pip install --upgrade pip
# Instalar dependencias del proyecto
pip install -r requirements.txt
Dependencias principales:
mcp>=1.0.0- Framework MCP oficial de Anthropichttpx>=0.24.0- Cliente HTTP asyncpydantic>=2.0.0- Validación de datospython-dotenv>=1.0.0- Gestión de variables de entorno
4. Verificar Instalación
# Verificar que MCP se instaló correctamente
python -c "import mcp; print(f'MCP version: {mcp.__version__}')"
Configuración
Configurar Variables de Entorno (Opcional)
# Copiar archivo de ejemplo
cp .env.example .env
# Editar .env si necesitas personalizar:
# CIRCL_API_BASE_URL=https://vulnerability.circl.lu/api
# LOG_LEVEL=INFO
Configurar Claude Desktop
-
Ubicar archivo de configuración:
# En macOS: ~/Library/Application Support/Claude/claude_desktop_config.json # En Windows: %APPDATA%\Claude\claude_desktop_config.json # En Linux: ~/.config/Claude/claude_desktop_config.json -
Editar el archivo y añadir la configuración del servidor:
{ "mcpServers": { "cybersecurity-server": { "command": "/RUTA_COMPLETA/mcp-cybersecurity-server/venv/bin/python", "args": [ "-m", "src.server" ], "cwd": "/RUTA_COMPLETA/mcp-cybersecurity-server", "env": { "CIRCL_API_BASE_URL": "https://vulnerability.circl.lu/api" } } } }IMPORTANTE: Reemplaza
/RUTA_COMPLETA/con la ruta absoluta al directorio del proyecto.Ejemplo para macOS:
{ "mcpServers": { "cybersecurity-server": { "command": "/Users/jmteba/Library/Mobile Documents/com~apple~CloudDocs/Máster IA Ciberseguridad /Módulo 8/TAREA 2/mcp-cybersecurity-server/venv/bin/python", "args": ["-m", "src.server"], "cwd": "/Users/jmteba/Library/Mobile Documents/com~apple~CloudDocs/Máster IA Ciberseguridad /Módulo 8/TAREA 2/mcp-cybersecurity-server" } } } -
Reiniciar Claude Desktop
-
Verificar: En Claude Desktop, deberías ver el servidor "cybersecurity-server" en la lista de servidores MCP disponibles.
Uso
Test 1: Búsqueda de CVE por ID
Prompt en Claude Desktop:
Busca información detallada del CVE-2024-3094
Resultado Esperado:
- Claude invoca la tool
search_cve_by_id - Retorna información completa: descripción, CVSS, severidad, referencias
- Para CVE-2024-3094 (XZ backdoor): CVSS 10.0, CRITICAL
Test 2: Búsqueda por Producto/Keyword
Prompt en Claude Desktop:
Busca las 5 vulnerabilidades más recientes de Apache HTTP Server
Resultado Esperado:
- Claude invoca
search_cves_by_keywordcon keyword="apache" y limit=5 - Retorna tabla con CVE IDs, severidad, CVSS, fechas y resúmenes
Test 3: Análisis de Riesgo
Prompt en Claude Desktop:
Analiza el riesgo del CVE-2024-3094 para un servidor web público de producción
Resultado Esperado:
- Claude invoca
summarize_cve_riskcon contexto="servidor web público" - Retorna análisis detallado con:
- Nivel de urgencia (CRÍTICA)
- EPSS score y probabilidad de explotación
- SLA de respuesta (4 horas)
- Recomendaciones de mitigación
Test 4: Consultar Resource
Prompt en Claude Desktop:
Muéstrame el playbook de respuesta para vulnerabilidades críticas
Resultado Esperado:
- Claude lee el resource
playbook://high_risk - Presenta el contenido del playbook con las 4 fases
Test 5: Usar Prompt Preconfigurado
Prompt en Claude Desktop:
Analiza las vulnerabilidades del servidor web de producción con estos CVEs:
CVE-2024-3094, CVE-2023-44487, CVE-2023-38545
El servidor está expuesto a Internet y es de criticidad alta.
Resultado Esperado:
- Claude ejecuta el prompt
analyze_asset_vulnerabilities - Invoca múltiples tools:
search_cve_by_idpara cada CVEsummarize_cve_riskpara análisis de riesgo
- Lee resources:
risk_matrix.jsonpara clasificaciónplaybook_high_risk.mdsi hay CVEs críticos
- Genera reporte completo con:
- Resumen ejecutivo
- Tabla priorizada de vulnerabilidades
- Timeline de remediación
- Recomendaciones específicas
Estructura del Proyecto
mcp-cybersecurity-server/
├── src/
│ ├── __init__.py
│ ├── server.py # Servidor MCP principal
│ ├── tools/
│ │ ├── __init__.py
│ │ ├── cve_search.py # Tool: search_cve_by_id
│ │ ├── cve_keyword.py # Tool: search_cves_by_keyword
│ │ └── cve_risk.py # Tool: summarize_cve_risk
│ ├── api/
│ │ ├── __init__.py
│ │ └── circl_client.py # Cliente para API CIRCL
│ └── utils/
│ ├── __init__.py
│ └── formatters.py # Utilidades de formato
├── resources/
│ ├── playbook_high_risk.md # Resource: Playbook crítico
│ └── risk_matrix.json # Resource: Matriz de riesgos
├── tests/ # Tests unitarios (opcional)
│ ├── test_tools.py
│ └── test_api.py
├── config/
│ └── mcp_config.json # Configuración del servidor
├── docs/
│ └── memoria.md # Documentación de la práctica
├── venv/ # Entorno virtual (no incluir en git)
├── pyproject.toml # Metadata y dependencias
├── requirements.txt # Dependencias pip
├── README.md # Este archivo
├── .gitignore
└── .env.example
Testing
Tests Unitarios (Opcional)
# Activar entorno virtual
source venv/bin/activate
# Ejecutar tests
pytest tests/ -v
# Con cobertura
pytest tests/ --cov=src --cov-report=html
Tests de Integración
-
Verificar servidor se inicia correctamente:
python -m src.server # Debe mostrar logs sin errores # Ctrl+C para detener -
Test desde Claude Desktop:
- Reiniciar Claude Desktop
- Verificar que "cybersecurity-server" aparece en la lista de servidores
- Ejecutar los 5 tests de uso descritos arriba
Solución de Problemas
Error: "CVE not found"
- Causa: El CVE no existe en la base de datos de CIRCL
- Solución: Verificar el formato (CVE-YYYY-NNNN) y que el CVE está publicado
Error: "Timeout al consultar API"
- Causa: La API de CIRCL está lenta o no responde
- Solución: Reintentar después de unos segundos, verificar conexión a Internet
Error: "Tool not found" en Claude Desktop
- Causa: El servidor no está correctamente registrado
- Solución:
- Verificar
claude_desktop_config.json - Asegurar que las rutas son absolutas
- Reiniciar Claude Desktop
- Verificar
Error: "Module not found: mcp"
- Causa: Dependencias no instaladas o entorno virtual no activado
- Solución:
source venv/bin/activate pip install -r requirements.txt
El servidor no aparece en Claude Desktop
- Solución:
- Verificar que el archivo de configuración está en la ubicación correcta
- Verificar sintaxis JSON (usar validador online)
- Verificar permisos de ejecución:
chmod +x venv/bin/python - Revisar logs de Claude Desktop (Menu > View > Toggle Developer Tools > Console)
Funcionalidades Avanzadas (Opcionales)
Caché de Respuestas
Para mejorar el rendimiento, puedes implementar un caché local:
# En src/api/circl_client.py
from functools import lru_cache
@lru_cache(maxsize=100)
async def cached_get_cve(cve_id: str):
# Implementación con caché
pass
Logging Personalizado
# En .env
LOG_LEVEL=DEBUG
LOG_FORMAT=json
Integración con SIEM
El servidor puede integrarse con sistemas SIEM para análisis automatizado de vulnerabilidades.
Contribuciones y Mejoras Futuras
Este proyecto es parte de un trabajo académico, pero las siguientes mejoras podrían implementarse:
- [ ] Integración con NVD (National Vulnerability Database) de NIST
- [ ] Exportación de reportes a PDF
- [ ] Tool adicional para comparar múltiples CVEs
- [ ] Resource adicional con CWEs comunes y recomendaciones
- [ ] Soporte para múltiples idiomas
- [ ] Dashboard web para visualización
- [ ] Integración con Slack/Teams para notificaciones
Referencias y Recursos
API Utilizada
- CIRCL Vulnerability Lookup: https://vulnerability.circl.lu/api/
- Documentación de la API: https://vulnerability.circl.lu/
Estándares de Seguridad
- CVSS v3.1: https://www.first.org/cvss/
- EPSS: https://www.first.org/epss/
- CWE Top 25: https://cwe.mitre.org/top25/
- OWASP Top 10: https://owasp.org/www-project-top-ten/
Documentación Técnica
- MCP SDK: https://github.com/anthropics/mcp
- Claude Desktop: https://claude.ai/download
- Model Context Protocol: https://modelcontextprotocol.io/
Licencia
Este proyecto es un trabajo académico desarrollado para el Máster en IA Aplicada a Ciberseguridad de la Universidad Católica de Murcia (UCAM) en colaboración con ENIIT y Campus Internacional de Ciberseguridad.
Uso Académico y Educativo.
Autor
José Miguel Teba Luque
- Máster en IA Aplicada a Ciberseguridad
- Módulo 8: Diseño y Publicación de Interfaces para Herramientas IA
- Fecha de entrega: Diciembre 2025
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.
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.
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.
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.