|
"""MCP tools for vulnerability search and report generation."""
|
|
|
|
from smolagents import Tool
|
|
import json
|
|
import os
|
|
from datetime import datetime
|
|
from gradio_mcp import tool
|
|
from scripts.cvedb_tool import CVEDBTool
|
|
from scripts.nvd_tool import NvdTool
|
|
from scripts.kevin_tool import KevinTool
|
|
from scripts.epss_tool import EpsTool
|
|
from scripts.report_generator import ReportGeneratorTool
|
|
|
|
|
|
cvedb_tool = CVEDBTool()
|
|
nvd_tool = NvdTool()
|
|
kevin_tool = KevinTool()
|
|
epss_tool = EpsTool()
|
|
report_tool = ReportGeneratorTool()
|
|
|
|
@tool
|
|
def search_cvedb(search_type: str, identifier: str) -> str:
|
|
"""Search for vulnerabilities in CVEDB by CVE or product."""
|
|
return cvedb_tool.forward(search_type, identifier)
|
|
|
|
@tool
|
|
def search_nvd(search_type: str, identifier: str, exact_match: bool = False) -> str:
|
|
"""Search for vulnerabilities in NVD by CVE or keyword."""
|
|
return nvd_tool.forward(search_type, identifier, exact_match)
|
|
|
|
@tool
|
|
def search_kevin(search_type: str, identifier: str) -> str:
|
|
"""Search for known exploited vulnerabilities (KEV) by CVE or keyword."""
|
|
return kevin_tool.forward(search_type, identifier)
|
|
|
|
@tool
|
|
def search_epss(cve_id: str, date: str) -> str:
|
|
"""Search for EPSS score for a specific CVE."""
|
|
return epss_tool.forward(cve_id, date)
|
|
|
|
@tool
|
|
def generate_vulnerability_report(vulnerability_data: str, report_type: str) -> str:
|
|
"""Generate an interactive HTML vulnerability report from JSON data."""
|
|
return report_tool.forward(vulnerability_data, report_type) |