使用说明

项目简介

DefectDojo MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器实现,它为 DefectDojo 漏洞管理工具提供了一个 MCP 接口。通过这个服务器,AI Agent 和其他 MCP 客户端可以程序化地与 DefectDojo API 进行交互,从而实现自动化漏洞数据访问和管理。

主要功能点

  • 漏洞 (Findings) 管理工具: 提供检索、搜索、创建、更新状态和添加备注等功能,方便 AI Agent 获取和操作 DefectDojo 中的漏洞信息。
  • 产品 (Products) 管理工具: 允许 AI Agent 列出 DefectDojo 中管理的产品信息,用于上下文理解和操作范围限定。
  • 渗透测试活动 (Engagements) 管理工具: 支持列出、检索详情、创建、更新和关闭渗透测试活动,帮助 AI Agent 理解和管理安全测试流程。

总而言之,该MCP服务器将 DefectDojo 的核心功能以工具的形式暴露出来,使得 LLM 可以通过标准化的 MCP 协议,安全、可扩展地访问和操作 DefectDojo 平台的数据,实现漏洞管理的自动化。

安装步骤

本MCP服务器可以使用 'uvx' 或 'pip' 进行安装和运行。

方法一:使用 'uvx' (推荐)

'uvx' 可以隔离 Python 应用的依赖,推荐使用此方法。

  1. 确保已安装 'uvx'。

  2. 在命令行中执行以下命令即可运行 DefectDojo MCP Server:

    uvx defectdojo-mcp

方法二:使用 'pip'

  1. 确保已安装 Python 和 'pip'。

  2. 如果需要从源代码安装,请先克隆仓库到本地,然后进入仓库目录执行安装命令:

    pip install .

    或者,如果该软件包发布在 PyPI 上,可以直接使用以下命令安装:

    pip install defectdojo-mcp
  3. 安装完成后,在命令行中执行以下命令运行服务器:

    defectdojo-mcp

服务器配置

MCP 客户端需要配置 MCP 服务器的连接信息才能正常使用。以下是两种安装方式对应的 MCP 客户端配置示例 (JSON 格式):

使用 'uvx' 安装的配置:

{
  "mcpServers": {
    "defectdojo": {  // 服务器名称,客户端用此名称引用
      "command": "uvx", // 启动命令,这里使用 uvx
      "args": ["defectdojo-mcp"], // 命令参数,指定运行 defectdojo-mcp
      "env": { // 环境变量配置
        "DEFECTDOJO_API_TOKEN": "YOUR_API_TOKEN_HERE", // 必须配置:DefectDojo API Token
        "DEFECTDOJO_API_BASE": "https://your-defectdojo-instance.com" // 必须配置:DefectDojo API Base URL
      }
    }
  }
}

使用 'pip' 安装的配置:

{
  "mcpServers": {
    "defectdojo": {  // 服务器名称,客户端用此名称引用
      "command": "defectdojo-mcp", // 启动命令,这里直接运行 defectdojo-mcp
      "args": [], // 命令参数,这里为空
      "env": { // 环境变量配置
        "DEFECTDOJO_API_TOKEN": "YOUR_API_TOKEN_HERE", // 必须配置:DefectDojo API Token
        "DEFECTDOJO_API_BASE": "https://your-defectdojo-instance.com" // 必须配置:DefectDojo API Base URL
      }
    }
  }
}

配置说明:

  • 'server name': 自定义服务器名称,在 MCP 客户端中通过此名称调用工具。例如示例中的 'defectdojo'。
  • 'command': 启动 MCP 服务器的命令。根据安装方式选择 'uvx' 或 'defectdojo-mcp'。
  • 'args': 启动命令的参数,通常为空列表 '[]'。
  • 'env': 环境变量配置,用于服务器连接 DefectDojo 实例。
    • 'DEFECTDOJO_API_TOKEN': 必须配置,DefectDojo 平台的 API Token,用于身份验证。请替换 'YOUR_API_TOKEN_HERE' 为您实际的 Token。
    • 'DEFECTDOJO_API_BASE': 必须配置,DefectDojo 平台的 API 基础 URL,例如 'https://your-defectdojo-instance.com'。请替换为您的 DefectDojo 实例地址。

注意: 请务必配置正确的 'DEFECTDOJO_API_TOKEN' 和 'DEFECTDOJO_API_BASE' 环境变量,否则 MCP 服务器将无法连接到 DefectDojo 实例。

基本使用方法

配置完成后,在 MCP 客户端中可以使用 'use_mcp_tool' 函数调用 DefectDojo MCP Server 提供的工具。以下是一些示例,展示如何使用不同的工具:

获取漏洞 (Findings):

# 获取状态为 "Active" 且严重等级为 "High" 的漏洞 (最多返回 10 条)
result = await use_mcp_tool("defectdojo", "get_findings", {
    "status": "Active",
    "severity": "High",
    "limit": 10
})

搜索漏洞 (Findings):

# 搜索包含关键词 "SQL Injection" 的漏洞
result = await use_mcp_tool("defectdojo", "search_findings", {
    "query": "SQL Injection"
})

更新漏洞状态 (Findings):

# 将 ID 为 123 的漏洞状态更新为 "Verified"
result = await use_mcp_tool("defectdojo", "update_finding_status", {
    "finding_id": 123,
    "status": "Verified"
})

列出产品 (Products):

# 列出产品名称包含 "Web App" 的产品 (最多返回 10 条)
result = await use_mcp_tool("defectdojo", "list_products", {
    "name": "Web App",
    "limit": 10
})

列出渗透测试活动 (Engagements):

# 列出产品 ID 为 42 且状态为 "In Progress" 的渗透测试活动
result = await use_mcp_tool("defectdojo", "list_engagements", {
    "product_id": 42,
    "status": "In Progress"
})

更多工具的使用方法请参考仓库 'README.md' 文件中的 "Usage Examples" 部分。

信息

分类

开发者工具