Bbot Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Bbot Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server for running BBOT security scans. This server provides tools to manage and execute bbot scans through the MCP interface.
pip install bbot-mcpgit clone https://github.com/marlinkcyber/bbot-mcp.git
cd bbot-mcp
pip install -e .uvx bbot-mcpIt is recommended to install all BBOT dependencies before invoking BBOT MCP server:
bbot --install-all-depsAfter installation, the server can be started using the bbot-mcp command:
bbot-mcpOr directly with Python:
python -m bbot_mcp.serverThe MCP server provides 8 tools for comprehensive bbot scan management:
#### 1. list_bbot_modules() Lists all available bbot modules categorized by type (scan, output, internal).
#### 2. list_bbot_presets() Lists all available bbot presets for quick scan configuration.
#### 3. start_bbot_scan(targets, modules="", presets="", flags="", no_deps=True) Starts a new bbot scan with the specified parameters.
Parameters:
targets: Comma-separated list of targets (domains, IPs, URLs)modules: Optional comma-separated list of modules to usepresets: Optional comma-separated list of presets to applyflags: Optional comma-separated list of flagsno_deps: Disable dependency installation to prevent sudo prompts (default: True)Example:
start_bbot_scan("example.com,google.com", "httpx,nmap", "web-basic", "safe", True)Important: The no_deps=True parameter prevents bbot from attempting to install missing dependencies, which would cause sudo password prompts that hang the MCP server.
#### 4. get_scan_status(scan_id) Retrieves the current status of a specific scan.
#### 5. get_scan_results(scan_id, limit=100) Retrieves results from a completed or running scan.
Parameters:
scan_id: The unique identifier of the scanlimit: Maximum number of results to return (default: 100)#### 6. list_active_scans() Lists all currently active scans with their basic information.
#### 7. wait_for_scan_completion(scan_id, timeout=300, poll_interval=5, include_progress=True) Waits for a scan to complete with timeout and progress reporting.
Parameters:
scan_id: The ID of the scan to wait fortimeout: Maximum time to wait in seconds (default: 300 = 5 minutes)poll_interval: How often to check scan status in seconds (default: 5)include_progress: Whether to include progress updates in the response (default: True)Returns:
Example:
# Wait for scan to complete with custom timeout
result = wait_for_scan_completion("scan-123", timeout=600, poll_interval=10)#### 8. get_dependency_info() Provides information about bbot's dependency management system and how the MCP server handles dependencies.
{
"mcpServers": {
"bbot": {
"command": "uvx",
"args": ["--refresh","bbot-mcp"]
}
}
}Scans run in separate threads to avoid blocking the MCP server. You can:
Run the test suite to verify functionality:
# Run all tests
pytest
# Run specific test categories
python tests/test_server.py
python tests/simple_test.py
python tests/test_imports.py
# Test the binary command
bbot-mcp --helpbbot-mcp/
├── bbot_mcp/ # Main package
│ ├── __init__.py # Package initialization
│ └── server.py # MCP server implementation
├── tests/ # Test suite
├── pyproject.toml # Package configuration
├── README.md # This file
└── requirements.txt # Development dependencies# Connect to the MCP server and use the tools
client = MCPClient("bbot-scanner")
# List available modules
modules = client.call_tool("list_bbot_modules")
# Start a scan
scan_result = client.call_tool("start_bbot_scan", {
"targets": "example.com",
"presets": "web-basic"
})
# Check scan status
status = client.call_tool("get_scan_status", {
"scan_id": scan_result["scan_id"]
})
# Wait for scan to complete
completion = client.call_tool("wait_for_scan_completion", {
"scan_id": scan_result["scan_id"],
"timeout": 300
})
# Get results when complete
results = client.call_tool("get_scan_results", {
"scan_id": scan_result["scan_id"],
"limit": 50
})--allow-deadly equivalent flags carefullyThe MCP server includes comprehensive dependency management to prevent sudo password prompts:
no_deps=True - Dependencies are disabled by defaultpip install <module-deps>You can exclude problematic modules by setting following environment variable:
export BBOT_EXCLUDE_MODULES="trufflehog,sslcert"Example exclude mentioned modules if you have any dependency issues (i.e. on Mac OS X):
sslcert: APT dependency incompatible with macOS Homebrewtrufflehog: Dependency installation conflictsOverride Option: Set no_deps=False only if you're certain no sudo prompts will occur
For more information about bbot itself, visit: https://github.com/blacklanternsecurity/bbot
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.