DefectDojo MCP Server

DefectDojo MCP Server

提供一个模型上下文协议(Model Context Protocol,MCP)服务器实现,允许人工智能代理和其他 MCP 客户端以编程方式与漏洞管理工具 DefectDojo 交互,以管理发现、产品和参与。

Category
访问服务器

Tools

update_finding_status

Update the status of a finding (Active, Verified, False Positive, Mitigated, Inactive)

add_finding_note

Add a note to a finding

get_findings

Get findings with filtering options and pagination support

search_findings

Search for findings using a text query with pagination support

create_finding

Create a new finding

list_products

List all products with optional filtering and pagination support

list_engagements

List engagements with optional filtering and pagination support

get_engagement

Get a specific engagement by ID

create_engagement

Create a new engagement

update_engagement

Update an existing engagement

close_engagement

Close an engagement

README

DefectDojo MCP 服务器

PyPI version <!-- 如果/当发布到 PyPI 时,添加此徽章 -->

本项目为流行的开源漏洞管理工具 DefectDojo 提供了一个 模型上下文协议 (MCP) 服务器实现。它允许 AI 代理和其他 MCP 客户端以编程方式与 DefectDojo API 交互。

功能

此 MCP 服务器公开了用于管理关键 DefectDojo 实体的工具:

  • Findings (发现项): 获取、搜索、创建、更新状态和添加注释。
  • Products (产品): 列出可用的产品。
  • Engagements (活动): 列出、检索详细信息、创建、更新和关闭活动。

安装与运行

有几种方法可以运行此服务器:

使用 uvx (推荐)

uvx 在临时虚拟环境中执行 Python 应用程序,自动安装依赖项。

uvx defectdojo-mcp

使用 pip

您可以使用 pip 将软件包安装到您的 Python 环境中。

# 直接从克隆的源代码目录安装
pip install .

# 或者,如果该软件包已发布在 PyPI 上
pip install defectdojo-mcp

通过 pip 安装后,使用以下命令运行服务器:

defectdojo-mcp

配置

服务器需要以下环境变量才能连接到您的 DefectDojo 实例:

  • DEFECTDOJO_API_TOKEN (必需): 您的 DefectDojo API 令牌,用于身份验证。
  • DEFECTDOJO_API_BASE (必需): 您的 DefectDojo 实例的基本 URL (例如,https://your-defectdojo-instance.com)。

您可以在 MCP 客户端的设置文件中配置这些变量。以下是使用 uvx 命令的示例:

{
  "mcpServers": {
    "defectdojo": {
      "command": "uvx",
      "args": ["defectdojo-mcp"],
      "env": {
        "DEFECTDOJO_API_TOKEN": "YOUR_API_TOKEN_HERE",
        "DEFECTDOJO_API_BASE": "https://your-defectdojo-instance.com"
      }
    }
  }
}

如果您使用 pip 安装了该软件包,则配置如下所示:

{
  "mcpServers": {
    "defectdojo": {
      "command": "defectdojo-mcp",
      "args": [],
      "env": {
        "DEFECTDOJO_API_TOKEN": "YOUR_API_TOKEN_HERE",
        "DEFECTDOJO_API_BASE": "https://your-defectdojo-instance.com"
      }
    }
  }
}

可用工具

以下工具可通过 MCP 接口使用:

  • get_findings: 检索具有过滤 (product_name, status, severity) 和分页 (limit, offset) 的发现项。
  • search_findings: 使用文本查询搜索发现项,具有过滤和分页功能。
  • update_finding_status: 更改特定发现项的状态 (例如,Active, Verified, False Positive)。
  • add_finding_note: 向发现项添加文本注释。
  • create_finding: 创建与测试关联的新发现项。
  • list_products: 列出具有过滤 (name, prod_type) 和分页的产品。
  • list_engagements: 列出具有过滤 (product_id, status, name) 和分页的活动。
  • get_engagement: 按 ID 获取特定活动的详细信息。
  • create_engagement: 为产品创建新的活动。
  • update_engagement: 修改现有活动的详细信息。
  • close_engagement: 将活动标记为已完成。

(有关每个工具的详细使用示例,请参见下面的原始 README 内容)

使用示例

(注意:这些示例假定 MCP 客户端环境能够调用 use_mcp_tool)

获取发现项

# 获取活动状态、高严重性的发现项 (限制为 10 个)
result = await use_mcp_tool("defectdojo", "get_findings", {
    "status": "Active",
    "severity": "High",
    "limit": 10
})

搜索发现项

# 搜索包含 'SQL Injection' 的发现项
result = await use_mcp_tool("defectdojo", "search_findings", {
    "query": "SQL Injection"
})

更新发现项状态

# 将发现项 123 标记为已验证
result = await use_mcp_tool("defectdojo", "update_finding_status", {
    "finding_id": 123,
    "status": "Verified"
})

向发现项添加注释

result = await use_mcp_tool("defectdojo", "add_finding_note", {
    "finding_id": 123,
    "note": "Confirmed vulnerability on staging server."
})

创建发现项

result = await use_mcp_tool("defectdojo", "create_finding", {
    "title": "Reflected XSS in Search Results",
    "test_id": 55, # 关联测试的 ID
    "severity": "Medium",
    "description": "User input in search is not properly sanitized, leading to XSS.",
    "cwe": 79
})

列出产品

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

列出活动

# 列出产品 ID 为 42 的 'In Progress' 活动
result = await use_mcp_tool("defectdojo", "list_engagements", {
    "product_id": 42,
    "status": "In Progress"
})

获取活动

result = await use_mcp_tool("defectdojo", "get_engagement", {
    "engagement_id": 101
})

创建活动

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"
})

更新活动

result = await use_mcp_tool("defectdojo", "update_engagement", {
    "engagement_id": 101,
    "status": "In Progress",
    "description": "Scan initiated."
})

关闭活动

result = await use_mcp_tool("defectdojo", "close_engagement", {
    "engagement_id": 101
})

开发

设置

  1. 克隆存储库。
  2. 建议使用虚拟环境:
    python -m venv .venv
    source .venv/bin/activate # 在 Windows 上使用 `.venv\Scripts\activate`
    
  3. 安装依赖项,包括开发依赖项:
    pip install -e ".[dev]"
    

许可证

本项目根据 MIT 许可证获得许可 - 有关详细信息,请参见 LICENSE 文件。

贡献

欢迎贡献!请随时提出关于错误、功能请求或问题的 issue。如果您想贡献代码,请先打开一个 issue 来讨论建议的更改。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选