Nuclei MCP Server 使用说明

项目简介

Nuclei MCP Server 是一个基于 Go 语言开发的 MCP 服务器,它集成了 Nuclei 漏洞扫描引擎,通过 MCP 协议将 Nuclei 的扫描能力以标准化的方式提供给 LLM 客户端。用户可以通过 LLM 应用调用 Nuclei MCP Server 提供的工具,对目标进行安全漏洞扫描,并获取扫描结果。该服务器支持缓存扫描结果,提高性能,并提供多种扫描工具和资源,满足不同的扫描需求。

主要功能点

  • 漏洞扫描工具: 提供多种 Nuclei 扫描工具,包括:
    • 'nuclei_scan': 执行全面的 Nuclei 漏洞扫描,支持模板过滤(按严重性、协议、模板ID等)。
    • 'basic_scan': 执行基础的 Nuclei 扫描,无需指定模板ID,使用内置的基础测试模板。
    • 'advanced_scan': 提供更高级的扫描配置选项,例如并发控制、超时设置、扫描策略等。
    • 'template_sources_scan': 允许用户自定义模板来源进行扫描,例如指定本地模板路径、远程模板URL等。
  • 漏洞信息资源: 提供 'vulnerabilities' 资源,用于查询最近的漏洞扫描报告,方便 LLM 客户端获取和展示扫描结果。
  • 结果缓存: 支持扫描结果缓存,避免重复扫描,提高效率。缓存过期时间可配置。
  • 线程安全: 支持并发扫描操作,提高服务器的并发处理能力。
  • 灵活配置: 支持通过环境变量配置缓存过期时间和日志级别。

安装步骤

  1. 安装 Go 环境: 确保你的机器上已安装 Go 语言环境(版本 >= 1.16,推荐最新版本)。
  2. 下载仓库代码: 使用 'git clone https://github.com/addcontent/nuclei-mcp' 命令将仓库代码克隆到本地。
  3. 进入仓库目录: 使用 'cd nuclei-mcp' 命令进入仓库目录。

服务器配置

MCP 客户端需要配置 Nuclei MCP Server 的启动命令和参数,以便建立连接。以下是 JSON 格式的配置信息示例,请根据实际情况进行调整:

{
  "server name": "nuclei-mcp",
  "command": "go",
  "args": [
    "run",
    "nuclei_mcp.go"
  ],
  "transport": "stdio",
  "description": "Nuclei vulnerability scanner MCP server"
}

配置参数说明:

  • 'server name': 服务器名称,这里设置为 'nuclei-mcp',用于在 MCP 客户端中标识该服务器。
  • 'command': 启动服务器的命令,这里使用 'go' 命令。
  • 'args': 启动命令的参数列表:
    • '"run"': Go 命令的 'run' 参数,用于直接运行 Go 源代码文件。
    • '"nuclei_mcp.go"': Nuclei MCP Server 的主程序文件。
  • 'transport': 传输协议,默认为 'stdio' (标准输入输出)。也可以配置为 'sse' 以使用 SSE 协议(Server-Sent Events)。
  • 'description': 服务器描述信息,方便用户理解服务器用途。

可选环境变量配置:

Nuclei MCP Server 支持以下环境变量配置,可以在启动服务器之前设置:

  • 'CACHE_EXPIRY': 缓存过期时间,例如 '1h' (1小时), '30m' (30分钟), '5m' (5分钟)。默认值为 '1h'。
  • 'LOG_LEVEL': 日志级别,例如 'debug', 'info', 'warn', 'error'。默认值为 'info'。

例如,在 Linux/macOS 环境下,可以在启动服务器之前设置环境变量:

export CACHE_EXPIRY=30m
export LOG_LEVEL=debug
go run nuclei_mcp.go

基本使用方法

  1. 启动 Nuclei MCP Server: 在仓库根目录下,根据你选择的传输协议,运行以下命令启动服务器:

    • 使用 Stdio 传输 (默认):

      go run nuclei_mcp.go
    • 使用 SSE 传输:

      go run nuclei_mcp.go -transport sse

      SSE 服务器默认监听 '0.0.0.0:8080',可以通过 MCP Inspector 或其他 SSE 客户端连接。

  2. 使用 MCP 客户端连接服务器: 配置你的 MCP 客户端,添加上面提供的服务器配置信息,并连接到 Nuclei MCP Server。

  3. 调用工具进行漏洞扫描: 通过 MCP 客户端,可以调用 Nuclei MCP Server 提供的工具,例如 'nuclei_scan' 工具,并传递相应的参数,例如 'target' (扫描目标URL或IP地址)。

    例如,使用 'nuclei_scan' 工具扫描 'example.com',可以在 MCP 客户端中构造如下的 Tool Call Request:

    {
      "jsonrpc": "2.0",
      "method": "ToolCall",
      "params": {
        "tool_name": "nuclei_scan",
        "arguments": {
          "target": "example.com"
        }
      },
      "id": "1"
    }
  4. 获取扫描结果: 服务器会返回 Tool Call Response,其中包含扫描结果。对于 'nuclei_scan' 工具,返回结果通常是漏洞扫描报告的文本描述。对于 'basic_scan' 工具,返回结果是 JSON 格式的扫描结果详情。

  5. 查询漏洞信息资源: 通过 MCP 客户端,可以读取 'vulnerabilities' 资源,获取最近的漏洞扫描报告列表。

    例如,读取 'vulnerabilities' 资源,可以在 MCP 客户端中构造如下的 Read Resource Request:

    {
      "jsonrpc": "2.0",
      "method": "ReadResource",
      "params": {
        "resource_name": "vulnerabilities"
      },
      "id": "2"
    }

    服务器会返回 Read Resource Response,其中包含 'vulnerabilities' 资源的 JSON 内容,包括最近的扫描记录和简要的漏洞信息。

使用 MCP Inspector 进行测试

仓库的 'README.md' 文件中提供了使用 MCP Inspector 进行测试的说明,你可以参考 'README.md' 文档,使用 MCP Inspector 快速测试和调试 Nuclei MCP Server。

信息

分类

开发者工具