Servidor MCP de DefectDojo
Este proyecto proporciona una implementación de servidor del Protocolo de Contexto de Modelo (MCP) para DefectDojo , una popular herramienta de gestión de vulnerabilidades de código abierto. Permite que los agentes de IA y otros clientes MCP interactúen con la API de DefectDojo mediante programación.
Características
Este servidor MCP expone herramientas para administrar entidades clave de DefectDojo:
Resultados: obtener, buscar, crear, actualizar el estado y agregar notas.
Productos: Listado de productos disponibles.
Compromisos: enumerar, recuperar detalles, crear, actualizar y cerrar compromisos.
Related MCP server: DeepSource MCP Server
Instalación y funcionamiento
Hay un par de formas de ejecutar este servidor:
Uso de uvx (recomendado)
uvx ejecuta aplicaciones Python en entornos virtuales temporales, instalando dependencias automáticamente.
uvx defectdojo-mcpUsando pip
Puede instalar el paquete en su entorno Python usando pip .
# Install directly from the cloned source code directory
pip install .
# Or, if the package is published on PyPI
pip install defectdojo-mcpUna vez instalado a través de pip, ejecute el servidor usando:
defectdojo-mcpConfiguración
El servidor requiere las siguientes variables de entorno para conectarse a su instancia de DefectDojo:
DEFECTDOJO_API_TOKEN( obligatorio ): su token de API de DefectDojo para autenticación.DEFECTDOJO_API_BASE( obligatorio ): la URL base de su instancia de DefectDojo (por ejemplo,https://your-defectdojo-instance.com).
Puede configurarlos en el archivo de configuración de su cliente MCP. A continuación, se muestra un ejemplo con el comando uvx :
{
"mcpServers": {
"defectdojo": {
"command": "uvx",
"args": ["defectdojo-mcp"],
"env": {
"DEFECTDOJO_API_TOKEN": "YOUR_API_TOKEN_HERE",
"DEFECTDOJO_API_BASE": "https://your-defectdojo-instance.com"
}
}
}
}Si instaló el paquete usando pip , la configuración se vería así:
{
"mcpServers": {
"defectdojo": {
"command": "defectdojo-mcp",
"args": [],
"env": {
"DEFECTDOJO_API_TOKEN": "YOUR_API_TOKEN_HERE",
"DEFECTDOJO_API_BASE": "https://your-defectdojo-instance.com"
}
}
}
}Herramientas disponibles
Las siguientes herramientas están disponibles a través de la interfaz MCP:
get_findings: recupera hallazgos con filtrado (nombre del producto, estado, gravedad) y paginación (límite, desplazamiento).search_findings: Busque resultados mediante una consulta de texto, con filtrado y paginación.update_finding_status: cambia el estado de un hallazgo específico (por ejemplo, Activo, Verificado, Falso positivo).add_finding_note: agrega una nota textual a un hallazgo.create_finding: crea un nuevo hallazgo asociado con una prueba.list_products: Lista de productos con filtrado (nombre, tipo_de_producto) y paginación.list_engagements: lista de interacciones con filtrado (product_id, estado, nombre) y paginación.get_engagement: obtiene detalles de un compromiso específico por su ID.create_engagement: crea un nuevo compromiso para un producto.update_engagement: Modificar los detalles de un compromiso existente.close_engagement: Marcar un compromiso como completado.
(Consulte el contenido README original a continuación para ver ejemplos de uso detallados de cada herramienta)
Ejemplos de uso
(Nota: Estos ejemplos suponen un entorno de cliente MCP capaz de llamar
Obtener resultados
# Get active, high-severity findings (limit 10)
result = await use_mcp_tool("defectdojo", "get_findings", {
"status": "Active",
"severity": "High",
"limit": 10
})Resultados de la búsqueda
# Search for findings containing 'SQL Injection'
result = await use_mcp_tool("defectdojo", "search_findings", {
"query": "SQL Injection"
})Actualizar el estado del hallazgo
# Mark finding 123 as Verified
result = await use_mcp_tool("defectdojo", "update_finding_status", {
"finding_id": 123,
"status": "Verified"
})Agregar nota al hallazgo
result = await use_mcp_tool("defectdojo", "add_finding_note", {
"finding_id": 123,
"note": "Confirmed vulnerability on staging server."
})Crear hallazgo
result = await use_mcp_tool("defectdojo", "create_finding", {
"title": "Reflected XSS in Search Results",
"test_id": 55, # ID of the associated test
"severity": "Medium",
"description": "User input in search is not properly sanitized, leading to XSS.",
"cwe": 79
})Lista de productos
# List products containing 'Web App' in their name
result = await use_mcp_tool("defectdojo", "list_products", {
"name": "Web App",
"limit": 10
})Lista de compromisos
# List 'In Progress' engagements for product ID 42
result = await use_mcp_tool("defectdojo", "list_engagements", {
"product_id": 42,
"status": "In Progress"
})Conseguir compromiso
result = await use_mcp_tool("defectdojo", "get_engagement", {
"engagement_id": 101
})Crear compromiso
result = await use_mcp_tool("defectdojo", "create_engagement", {
"product_id": 42,
"name": "Q2 Security Scan",
"target_start": "2025-04-01",
"target_end": "2025-04-15",
"status": "Not Started"
})Actualizar el compromiso
result = await use_mcp_tool("defectdojo", "update_engagement", {
"engagement_id": 101,
"status": "In Progress",
"description": "Scan initiated."
})Compromiso cercano
result = await use_mcp_tool("defectdojo", "close_engagement", {
"engagement_id": 101
})Desarrollo
Configuración
Clonar el repositorio.
Se recomienda utilizar un entorno virtual:
python -m venv .venv source .venv/bin/activate # On Windows use `.venv\Scripts\activate`Instalar dependencias, incluidas las dependencias de desarrollo:
pip install -e ".[dev]"
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
Contribuyendo
¡Agradecemos sus contribuciones! No dude en abrir un problema para solucionar errores, solicitar funciones o hacer preguntas. Si desea contribuir con código, primero abra un problema para discutir los cambios propuestos.