返回市场
机器人-MCP

机器人-MCP

作者:marlinkcyber2 星标更新:2025-08-13

项目介绍

BBOT MCP Server

这是一个用于运行BBOT安全扫描的模型上下文协议(MCP)服务器。该服务器提供了通过MCP接口管理和执行bbot扫描的工具。

特性

  • 模块管理:列出并探索可用的bbot模块
  • 预设管理:列出并使用预定义的扫描配置
  • 扫描执行:启动并管理长时间运行的bbot扫描
  • 实时监控:检查扫描状态并获取结果
  • 等待与进度跟踪:带有超时和进度报告的扫描完成等待
  • 并发扫描:支持多个同时进行的扫描
  • 依赖管理:全面的sudo预防和无依赖功能

安装

从PyPI安装(推荐)

pip install bbot-mcp

从源代码安装

git clone https://github.com/marlinkcyber/bbot-mcp.git
cd bbot-mcp
pip install -e .

使用uvx(无需安装即可运行)

uvx bbot-mcp

安装依赖

建议在调用BBOT MCP服务器之前安装所有BBOT依赖:

bbot --install-all-deps

使用方法

运行MCP服务器

安装后,可以使用bbot-mcp命令启动服务器:

bbot-mcp

或者直接使用Python:

python -m bbot_mcp.server

可用工具

MCP服务器提供8个工具以全面管理bbot扫描:

1. list_bbot_modules()

列出所有可用的bbot模块,按类型分类(扫描、输出、内部)。

2. list_bbot_presets()

列出所有可用的bbot预设,以便快速配置扫描。

3. 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服务器。

4. get_scan_status(scan_id)

检索特定扫描的当前状态。

5. get_scan_results(scan_id, limit=100)

检索已完成或正在运行的扫描的结果。

参数:

  • scan_id:扫描的唯一标识符
  • limit:返回的最大结果数(默认值:100)

6. list_active_scans()

列出所有当前活跃的扫描及其基本信息。

7. wait_for_scan_completion(scan_id, timeout=300, poll_interval=5, include_progress=True)

等待扫描完成,带有超时和进度报告。

参数:

  • scan_id:要等待的扫描ID
  • timeout:最大等待时间(秒,默认值:300 = 5分钟)
  • poll_interval:检查扫描状态的时间间隔(秒,默认值:5)
  • include_progress:是否在响应中包含进度更新(默认值:True)

返回:

  • 成功响应,包括完成详情、耗时和进度更新
  • 如果扫描未在规定时间内完成,则返回超时响应
  • 对于无效的扫描ID或其他问题,返回错误响应

示例:

# 等待扫描完成,自定义超时
result = wait_for_scan_completion("scan-123", timeout=600, poll_interval=10)

8. get_dependency_info()

提供关于bbot依赖项管理系统的信息以及MCP服务器如何处理依赖项。

MCP配置示例:

{
  "mcpServers": {
    "bbot": {
      "command": "uvx",
      "args": ["--refresh","bbot-mcp"]
    }
  }
}

扫描管理

扫描生命周期

  1. 启动:扫描正在初始化
  2. 运行中:扫描正在积极执行
  3. 已完成:扫描成功结束
  4. 错误:扫描遇到错误

长时间运行的扫描

扫描在单独的线程中运行,以避免阻塞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客户端使用

# 连接到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
})

安全注意事项

  • 该工具仅设计用于授权的安全测试
  • 始终确保您有权扫描目标系统
  • 注意bbot扫描可能资源密集型且需要大量时间
  • 某些模块可能被认为是侵入性的——谨慎使用等效的--allow-deadly标志

依赖管理

MCP服务器包括全面的依赖管理,以防止sudo密码提示:

自动保护措施

  • 默认行为no_deps=True - 默认情况下禁用依赖项
  • 环境变量:多层sudo预防(SUDO_ASKPASS,DEBIAN_FRONTEND等)
  • 标准输入重定向:阻止所有交互式输入以防止挂起
  • 模块排除:自动排除有问题的模块(sslcert,trufflehog)
  • 强制配置:即使依赖项失败,模块也会运行

关键特性

  • 全面的sudo预防:多个环境变量和配置防止任何sudo提示
  • 优雅降级:即使某些模块无法加载依赖项,扫描也会继续
  • 预安装支持:如果需要,手动安装依赖项:pip install <module-deps>
  • macOS兼容性:特殊处理Homebrew与APT包管理器冲突

排除模块

可以通过设置以下环境变量来排除有问题的模块:

export BBOT_EXCLUDE_MODULES="trufflehog,sslcert"

示例排除提到的模块,如果您有任何依赖项问题(例如在Mac OS X上):

  • sslcert:APT依赖项与macOS Homebrew不兼容
  • trufflehog:依赖项安装冲突

覆盖选项:仅当确定不会出现sudo提示时,才设置no_deps=False

有关bbot本身的更多信息,请访问:https://github.com/blacklanternsecurity/bbot