破坏Dojo MCP服务器
](https://badge.fury.io/py/defectdojo)
特性
此MCP服务器公开了用于管理关键DefectDojo实体的工具:
- 调查结果: 获取、搜索、创建、更新状态和添加注释。
- 产品: 列出可用产品。
- 约定事项: 列出、检索详细信息、创建、更新和结束预约。
安装与运行
有几种方法可以运行此服务器:
使用 uvx (推荐)
uvx 在临时虚拟环境中执行Python应用程序,自动安装依赖项。
uvx defectdojo-mcp使用 pip
您可以使用以下命令将该包安装到Python环境中 pip.
# 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配置
服务器需要以下环境变量才能连接到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、状态、严重性)和分页(限制、偏移)检索结果。search_findings:使用文本查询、过滤和分页搜索结果。update_finding_status:更改特定发现的状态(例如,活动、已验证、假阳性)。add_finding_note:为发现添加文本注释。create_finding:创建与测试关联的新发现。list_products:列出具有过滤(名称、prod_type)和分页的产品。list_engagements:列出具有过滤(product_id、状态、名称)和分页功能的活动。get_engagement:通过ID获取特定参与的详细信息。create_engagement:为产品创建新的参与度。update_engagement:修改现有约定的详细信息。close_engagement:将订婚标记为已完成。
*(有关每个工具的详细使用示例,请参阅下面的原始README内容)*
使用示例
*(注意:这些示例假设MCP客户端环境能够调用 use_mcp_tool)*
获取调查结果
# 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`- 安装依赖关系,包括开发依赖关系:
pip install -e ".[dev]"许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!请随时为bug、功能请求或问题打开问题。如果你想贡献代码,请先打开一个问题来讨论拟议的更改。
