关于 DefectDojo Community
DefectDojo Community 是面向使用 DefectDojo Community Edition 的 AI 助手和安全团队的只读 MCP 服务。它按漏洞汇总多个产品中的严重发现,便于评估共同风险并准备跟踪器问题。
主要功能
- 01查看产品及发现数量
- 02按严重性筛选可处理发现
- 03按 CVE 汇总跨产品严重发现
- 04列出重复发现
- 05获取发现详情
适用场景
- 01检查各产品的严重发现
- 02识别影响多个产品的漏洞
- 03为汇总漏洞拟定一条跟踪器问题
MCP 相关
通过 stdio 向 MCP 客户端提供七种只读工具,并通过 REST API v2 查询 DefectDojo。它不会发出写入请求。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx defectdojo-community-mcpDEFECTDOJO_URLBase URL of your DefectDojo instance, e.g. https://defectdojo.example.com (no trailing /api/v2).DEFECTDOJO_API_KEY密钥DefectDojo API v2 token. Use a dedicated read-only user: this server never needs write access.DEFECTDOJO_VERIFY_TLSSet to false to skip TLS certificate verification. Discouraged; see SECURITY.md.DEFECTDOJO_TIMEOUT_SECONDSPer-request HTTP timeout in seconds. Defaults to 30.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
7收录的工具列表 · 更新于 3 天前
此工具无需参数。
详细介绍
DefectDojo Community MCP 服务
一个只读的 Model Context Protocol 服务,适用于 DefectDojo Community Edition,让 AI 助手能够读取漏洞发现项、跨所有产品汇总相同漏洞, 并为你使用的任意跟踪系统起草问题。
非官方。 这是一个独立的开源项目,与 DefectDojo Inc. 或 OWASP 无关, 未获得其认可或支持。“DefectDojo”仅用于说明此服务连接的对象。
你真的需要它吗?
如果你运行的是 DefectDojo Pro,可能不需要。 Pro 内置了 MCP 服务—— 请改用它;它由供应商维护,功能也更强大。
| DefectDojo Pro(内置) | 本项目 | |
|---|---|---|
| 版本 | 仅限 Pro——AI 功能仅限 Pro | Community Edition(也适用于 Pro) |
| 要求 | DefectDojo v2.51.2+,并由超级用户启用 | 任何支持 API v2 的版本 |
| 运行位置 | 在你的实例内,位于 /mcp | 在你的机器上,作为本地 MCP 进程运行 |
| 传输方式 | Streamable HTTP | stdio |
| 工具 | 只读 core 工具集中的 18 个 | 7 个 |
| 写入操作 | core 中没有;Pro 附加工具集(hierarchy、reporting、dashboards、psirt)中提供 | 绝不执行——参见安全模型 |
本项目之所以存在,是因为 Community Edition 完全没有 MCP 服务。它通过普通 API 令牌 调用常规 REST API v2,因此服务端无需启用任何功能,也不要求特定的 DefectDojo 版本。
不要与 PyPI 上无关的
defectdojo-mcp软件包混淆;那是另一个第三方项目。本项目的名称是defectdojo-community-mcp。
工具
| 工具 | 功能 |
|---|---|
health_check | 验证连接和身份验证;返回实例 URL 和产品数量 |
list_products | 列出所有产品及其发现项数量 |
list_critical_findings | 列出可操作的严重发现项,可按单个产品筛选 |
list_findings_by_severity | 按任意严重级别列出同类发现项 |
group_critical_by_vuln | 最实用的工具。 按 CVE 汇总所有产品中的严重发现项(否则按 CWE 和标题汇总),并按影响范围从大到小排序 |
list_duplicate_findings | 列出 DefectDojo 标记为重复项的发现项 |
get_finding | 获取单个发现项的完整详情 |
“可操作”是指 active 且未被标记为误报、重复、已接受风险、范围外或已缓解的发现项——
这些才是真正值得投入精力处理的内容。
group_critical_by_vuln 是本项目存在的理由。采用类似单体仓库的扫描器配置时,
同一个上游 CVE 会按产品重复报告;此工具会将它们合并为每个漏洞一个分组,并列出所有受影响的产品,
从而可以直接对应到跟踪系统中的一个问题。
安装
需要 Python 3.10+。
pip install defectdojo-community-mcp
也可以作为容器运行:
docker pull ghcr.io/systechgd/defectdojo-community-mcp:latest
该项目已在 MCP Registry 中列出,名称为
io.github.systechgd/defectdojo-community-mcp,因此能够读取注册表的 MCP 客户端可以按名称安装。
也可以从源代码安装:
git clone https://github.com/systechgd/defectdojo-community-mcp.git
cd defectdojo-community-mcp
pip install -e .
配置
需要设置两个环境变量。
| 变量 | 必需 | 默认值 | 备注 |
|---|---|---|---|
DEFECTDOJO_URL | 是 | — | 基础 URL,例如 https://defectdojo.example.com。末尾不要加 /api/v2。 |
DEFECTDOJO_API_KEY | 是 | — | API v2 令牌。如何进一步限制其权限,请参见下文。 |
DEFECTDOJO_VERIFY_TLS | 否 | true | false 会禁用证书验证。请参见 SECURITY.md。 |
DEFECTDOJO_TIMEOUT_SECONDS | 否 | 30 | 每个请求的 HTTP 超时时间。 |
从 DefectDojo → 你的用户 → API v2 Key 获取令牌。
为其创建一个专用的只读用户。 令牌继承该用户的权限,而此服务不需要任何写入权限。如果令牌泄露,只读令牌无法用于修改你的发现项。
配置客户端前,先确认令牌可用:
defectdojo-community-mcp --check
# ok: https://defectdojo.example.com reachable, 23 product(s) visible
连接 MCP 客户端
Claude Code
claude mcp add defectdojo \
--env DEFECTDOJO_URL=https://defectdojo.example.com \
--env DEFECTDOJO_API_KEY=your-token \
-- defectdojo-community-mcp
Claude Desktop / 通用 JSON 配置
{
"mcpServers": {
"defectdojo": {
"command": "defectdojo-community-mcp",
"env": {
"DEFECTDOJO_URL": "https://defectdojo.example.com",
"DEFECTDOJO_API_KEY": "your-token"
}
}
}
}
如果控制台脚本不在你的 PATH 中,请使用
"command": "python", "args": ["-m", "defectdojo_community_mcp"]。
Docker
该服务通过 stdio 使用 MCP,因此请以前台方式运行(-i),不要以分离模式运行:
{
"mcpServers": {
"defectdojo": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "DEFECTDOJO_URL",
"-e", "DEFECTDOJO_API_KEY",
"ghcr.io/systechgd/defectdojo-community-mcp:latest"
]
}
}
}
示例
按漏洞对所有严重发现项分组,并列出影响超过三个服务的发现项。
助手调用 group_critical_by_vuln,并按漏洞获取 CVE、标题、受影响产品列表以及每个发现项对应的 DefectDojo 直达 URL——这些信息足以编写一个涵盖所有发现项的问题,而不必创建十二个几乎相同的问题。
安全模型
只读是设计不变量,而非默认设置。
- 没有任何工具会发出
POST、PUT、PATCH或DELETE请求。 - HTTP 客户端类不提供能够执行这些操作的方法,因此无法意外添加会修改数据的工具;只有刻意修改该类才能做到。
- 有一项测试会断言每个工具发出的所有请求都是
GET请求。
添加写入支持将破坏这一保证。如果将来需要支持写入,它将作为一个独立服务提供,以便运营人员继续授予读取权限,而不授予写入权限。
发现项数据可能受攻击者影响——扫描器输出可能包含来自依赖项元数据、文件路径和提交消息的文本。请将工具结果视为数据,绝不要将其视为指令。完整的威胁模型及漏洞报告方式,请参见 SECURITY.md。
开发
git clone https://github.com/systechgd/defectdojo-community-mcp.git
cd defectdojo-community-mcp
python -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest # 57 tests, no network or live instance needed
ruff check .
测试套件完全通过 httpx.MockTransport 运行。CI 还会在 Python 3.10–3.13 上运行测试套件,并分别使用两代 MCP SDK(mcp<2,其中包含 FastMCP;以及 mcp>=2,其中将其重命名为 MCPServer)进行测试。
请参见 CONTRIBUTING.md 和 CODE_OF_CONDUCT.md。
许可证
Apache-2.0。请参见 NOTICE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。