mcpField
D
DefectDojo Community

DefectDojo Community

本地服务
github.com安全03 天前更新

关于 DefectDojo Community

DefectDojo Community 是面向使用 DefectDojo Community Edition 的 AI 助手和安全团队的只读 MCP 服务。它按漏洞汇总多个产品中的严重发现,便于评估共同风险并准备跟踪器问题。

主要功能

  1. 01查看产品及发现数量
  2. 02按严重性筛选可处理发现
  3. 03按 CVE 汇总跨产品严重发现
  4. 04列出重复发现
  5. 05获取发现详情

适用场景

  1. 01检查各产品的严重发现
  2. 02识别影响多个产品的漏洞
  3. 03为汇总漏洞拟定一条跟踪器问题

MCP 相关

通过 stdio 向 MCP 客户端提供七种只读工具,并通过 REST API v2 查询 DefectDojo。它不会发出写入请求。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"systechgd-defectdojo-community": {
"command": "uvx",
"args": [
"defectdojo-community-mcp"
],
"env": {
"DEFECTDOJO_URL": "<DEFECTDOJO_URL>",
"DEFECTDOJO_API_KEY": "<DEFECTDOJO_API_KEY>",
"DEFECTDOJO_VERIFY_TLS": "<DEFECTDOJO_VERIFY_TLS>",
"DEFECTDOJO_TIMEOUT_SECONDS": "<DEFECTDOJO_TIMEOUT_SECONDS>"
}
}
}
}
启动命令uvx defectdojo-community-mcp
需要配置的环境变量
DEFECTDOJO_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidefectdojo-community-mcp0.1.1
ocighcr.io/systechgd/defectdojo-community-mcp:0.1.1

工具

7

收录的工具列表 · 更新于 3 天前

此工具无需参数。

详细介绍

DefectDojo Community MCP 服务

CI PyPI Python License OpenSSF Scorecard

一个只读的 Model Context Protocol 服务,适用于 DefectDojo Community Edition,让 AI 助手能够读取漏洞发现项、跨所有产品汇总相同漏洞, 并为你使用的任意跟踪系统起草问题。

非官方。 这是一个独立的开源项目,与 DefectDojo Inc. 或 OWASP 无关, 未获得其认可或支持。“DefectDojo”仅用于说明此服务连接的对象。


你真的需要它吗?

如果你运行的是 DefectDojo Pro,可能不需要。 Pro 内置了 MCP 服务—— 请改用它;它由供应商维护,功能也更强大。

DefectDojo Pro(内置)本项目
版本仅限 Pro——AI 功能仅限 ProCommunity Edition(也适用于 Pro)
要求DefectDojo v2.51.2+,并由超级用户启用任何支持 API v2 的版本
运行位置在你的实例内,位于 /mcp在你的机器上,作为本地 MCP 进程运行
传输方式Streamable HTTPstdio
工具只读 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否truefalse 会禁用证书验证。请参见 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。