项目简介

MCP Nuclei Server 是一个基于 Model Context Protocol (MCP) 协议构建的 Nuclei 安全扫描服务。它允许大型语言模型(LLM)通过调用工具的方式执行 Nuclei 漏洞扫描,并支持多种扫描选项和结果输出格式,为LLM应用集成安全扫描能力提供了便利。

主要功能点

  • Nuclei安全扫描:提供核心的漏洞扫描功能。
  • 灵活的扫描配置:支持通过参数配置扫描目标、指定模板、按严重程度过滤漏洞等。
  • JSON格式输出:扫描结果以结构化的JSON格式返回,方便LLM解析和利用。
  • 易于集成:遵循MCP协议,可以轻松集成到支持MCP协议的LLM客户端。

安装步骤

  1. 克隆仓库

    git clone https://github.com/crazyMarky/mcp_nuclei_server.git
    cd mcp_nuclei_server
  2. 安装UV (用于创建和管理Python虚拟环境)

    curl -LsSf https://astral.sh/uv/install.sh | sh # Linux/Mac
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"  # Windows
  3. 安装依赖

    uv venv  # 创建虚拟环境
    source .venv/bin/activate  # 激活虚拟环境 (Linux/Mac)
    .venv\Scripts\activate  # 激活虚拟环境 (Windows)
    uv pip install mcp  # 安装 mcp 库

服务器配置

为了让MCP客户端(例如CLINE)连接到 MCP Nuclei Server,您需要在客户端配置中添加服务器信息。以下是一个 JSON 格式的配置示例,您需要根据实际情况修改路径:

{
  "mcpServers": {
    "nuclei_mcp_server": {  // 服务器名称,客户端用此名称引用
      "command": "/path/to/uv",  // uv 命令的路径,请替换为您的 uv 可执行文件路径
      "args": [
        "--directory",
        "/path/to/nuclei_mcp_server/", // mcp_nuclei_server 仓库的路径,请替换为您的仓库目录
        "run",
        "main.py" // 运行服务器的 Python 脚本
      ],
      "env": {
        "NUCLEI_BIN_PATH": "/path/to/nuclei"  // nuclei 可执行文件的路径,请替换为您的 nuclei 可执行文件路径
      }
    }
  }
}

配置参数说明:

  • 'mcpServers': 定义 MCP 服务器列表。
  • 'nuclei_mcp_server': 您为该服务器定义的名称,在客户端配置中会使用这个名称。
  • 'command': 启动服务器的命令,这里使用 'uv' 来运行 Python 脚本。
  • 'args': 传递给 'command' 的参数列表。
    • '--directory': 指定工作目录为 'mcp_nuclei_server' 仓库目录。
    • 'run main.py': 使用 'uv run' 命令执行 'main.py' 脚本,启动 MCP 服务器。
  • 'env': 设置环境变量。
    • 'NUCLEI_BIN_PATH': 必须配置。指定 Nuclei 扫描工具可执行文件的路径。请确保 Nuclei 已经安装并配置正确。

请务必将上述配置中的 '/path/to/uv', '/path/to/nuclei_mcp_server/', '/path/to/nuclei' 替换为您实际的路径。

基本使用方法

  1. 启动 MCP Nuclei Server: 按照上述服务器配置,在 MCP 客户端中配置并启动 'nuclei_mcp_server'。

  2. 客户端调用工具: 在 LLM 客户端中,可以使用 'nuclei_scan_start' 工具进行漏洞扫描。工具参数包括:

    • 'target': 扫描目标 URL 或 IP 地址 (必填)。
    • 'templates': 指定 Nuclei 模板列表 (可选)。
    • 'severity': 漏洞严重程度过滤 (可选,例如 "critical", "high", "medium", "low", "info")。
    • 'template_tags': 指定模板标签列表 (可选)。
    • 'output_format': 输出格式,默认为 "json" (可选)。

    例如,在支持 MCP 协议的 LLM 客户端中,可以构造如下请求来调用 'nuclei_scan_start' 工具:

    {
      "jsonrpc": "2.0",
      "method": "call",
      "params": {
        "server": "nuclei_mcp_server", //  使用之前配置的服务器名称
        "tool": "nuclei_scan_start",
        "arguments": {
          "target": "https://example.com",
          "severity": "high"
        }
      },
      "id": "scan-1"
    }
  3. 获取扫描结果: MCP 服务器会将 Nuclei 扫描结果以 JSON 格式返回给客户端。客户端可以解析 JSON 结果,并根据需要进行后续处理。

信息

分类

开发者工具