DefectDojo MCP 服务器

该项目为流行的开源漏洞管理工具DefectDojo提供了一个模型上下文协议 (MCP)服务器实现。它允许 AI 代理和其他 MCP 客户端以编程方式与 DefectDojo API 进行交互。
特征
该 MCP 服务器公开了用于管理关键 DefectDojo 实体的工具:
Related MCP server: DeepSource MCP Server
安装与运行
有几种方法可以运行此服务器:
使用uvx (推荐)
uvx在临时虚拟环境中执行 Python 应用程序,自动安装依赖项。
使用pip
您可以使用pip将包安装到您的 Python 环境中。
# Install directly from the cloned source code directory
pip install .
# Or, if the package is published on PyPI
pip install defectdojo-mcp
通过 pip 安装后,使用以下命令运行服务器:
配置
服务器需要以下环境变量来连接到您的 DefectDojo 实例:
您可以在 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 :通过过滤(产品名称、状态、严重性)和分页(限制、偏移)检索结果。
search_findings :使用文本查询搜索结果,并进行过滤和分页。
update_finding_status :更改特定发现的状态(例如,活动、已验证、误报)。
add_finding_note :为发现添加文本注释。
create_finding :创建与测试相关的新发现。
list_products :列出具有过滤(名称、产品类型)和分页功能的产品。
list_engagements :列出带有过滤(product_id、status、name)和分页的参与度。
get_engagement :通过 ID 获取特定参与的详细信息。
create_engagement :为产品创建新的约定。
update_engagement :修改现有约定的详细信息。
close_engagement :将约定标记为已完成。
(每个工具的详细使用示例请见下方README原文内容)
使用示例
(注意:这些示例假设 MCP 客户端环境能够调用
获取调查结果
# Get active, high-severity findings (limit 10)
result = await use_mcp_tool("defectdojo", "get_findings", {
"status": "Active",
"severity": "High",
"limit": 10
})
搜索结果
# Search for findings containing 'SQL Injection'
result = await use_mcp_tool("defectdojo", "search_findings", {
"query": "SQL Injection"
})
更新结果状态
# Mark finding 123 as Verified
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 of the associated test
"severity": "Medium",
"description": "User input in search is not properly sanitized, leading to XSS.",
"cwe": 79
})
列出产品
# List products containing 'Web App' in their name
result = await use_mcp_tool("defectdojo", "list_products", {
"name": "Web App",
"limit": 10
})
列出参与活动
# List 'In Progress' engagements for product ID 42
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
})
发展
设置
克隆存储库。
建议使用虚拟环境:
python -m venv .venv
source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
安装依赖项,包括开发依赖项:
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。
贡献
欢迎贡献!欢迎随时提交问题,包括错误报告、功能请求或疑问。如果您想贡献代码,请先提交问题,讨论建议的更改。