这是一个用于运行BBOT安全扫描的模型上下文协议(MCP)服务器。该服务器提供了通过MCP接口管理和执行bbot扫描的工具。
pip install bbot-mcp
git clone https://github.com/marlinkcyber/bbot-mcp.git
cd bbot-mcp
pip install -e .
uvx bbot-mcp
建议在调用BBOT MCP服务器之前安装所有BBOT依赖:
bbot --install-all-deps
安装后,可以使用bbot-mcp命令启动服务器:
bbot-mcp
或者直接使用Python:
python -m bbot_mcp.server
MCP服务器提供8个工具以全面管理bbot扫描:
list_bbot_modules()列出所有可用的bbot模块,按类型分类(扫描、输出、内部)。
list_bbot_presets()列出所有可用的bbot预设,以便快速配置扫描。
start_bbot_scan(targets, modules="", presets="", flags="", no_deps=True)开始一个新的bbot扫描,并指定参数。
参数:
targets:逗号分隔的目标列表(域名、IP地址、URL)modules:可选的逗号分隔的模块列表presets:可选的逗号分隔的预设列表flags:可选的逗号分隔的标志列表no_deps:禁用依赖项安装以防止sudo提示(默认值:True)示例:
start_bbot_scan("example.com,google.com", "httpx,nmap", "web-basic", "safe", True)
重要提示: no_deps=True 参数会阻止bbot尝试安装缺失的依赖项,这会导致sudo密码提示,从而挂起MCP服务器。
get_scan_status(scan_id)检索特定扫描的当前状态。
get_scan_results(scan_id, limit=100)检索已完成或正在运行的扫描的结果。
参数:
scan_id:扫描的唯一标识符limit:返回的最大结果数(默认值:100)list_active_scans()列出所有当前活跃的扫描及其基本信息。
wait_for_scan_completion(scan_id, timeout=300, poll_interval=5, include_progress=True)等待扫描完成,带有超时和进度报告。
参数:
scan_id:要等待的扫描IDtimeout:最大等待时间(秒,默认值:300 = 5分钟)poll_interval:检查扫描状态的时间间隔(秒,默认值:5)include_progress:是否在响应中包含进度更新(默认值:True)返回:
示例:
# 等待扫描完成,自定义超时
result = wait_for_scan_completion("scan-123", timeout=600, poll_interval=10)
get_dependency_info()提供关于bbot依赖项管理系统的信息以及MCP服务器如何处理依赖项。
{
"mcpServers": {
"bbot": {
"command": "uvx",
"args": ["--refresh","bbot-mcp"]
}
}
}
扫描在单独的线程中运行,以避免阻塞MCP服务器。您可以:
运行测试套件以验证功能:
# 运行所有测试
pytest
# 运行特定测试类别
python tests/test_server.py
python tests/simple_test.py
python tests/test_imports.py
# 测试二进制命令
bbot-mcp --help
bbot-mcp/
├── bbot_mcp/ # 主包
│ ├── __init__.py # 包初始化
│ └── server.py # MCP服务器实现
├── tests/ # 测试套件
├── pyproject.toml # 包配置
├── README.md # 本文件
└── requirements.txt # 开发依赖项
# 连接到MCP服务器并使用工具
client = MCPClient("bbot-scanner")
# 列出可用模块
modules = client.call_tool("list_bbot_modules")
# 启动扫描
scan_result = client.call_tool("start_bbot_scan", {
"targets": "example.com",
"presets": "web-basic"
})
# 检查扫描状态
status = client.call_tool("get_scan_status", {
"scan_id": scan_result["scan_id"]
})
# 等待扫描完成
completion = client.call_tool("wait_for_scan_completion", {
"scan_id": scan_result["scan_id"],
"timeout": 300
})
# 完成时获取结果
results = client.call_tool("get_scan_results", {
"scan_id": scan_result["scan_id"],
"limit": 50
})
--allow-deadly标志MCP服务器包括全面的依赖管理,以防止sudo密码提示:
no_deps=True - 默认情况下禁用依赖项pip install <module-deps>可以通过设置以下环境变量来排除有问题的模块:
export BBOT_EXCLUDE_MODULES="trufflehog,sslcert"
示例排除提到的模块,如果您有任何依赖项问题(例如在Mac OS X上):
sslcert:APT依赖项与macOS Homebrew不兼容trufflehog:依赖项安装冲突覆盖选项:仅当确定不会出现sudo提示时,才设置no_deps=False
有关bbot本身的更多信息,请访问:https://github.com/blacklanternsecurity/bbot