# Bawbel Scanner [Health: Active]

**Category:** 🔒 Security  
**Repository:** https://github.com/bawbel/bawbel-scanner  
**GitHub Stars:** 12  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/bawbel-scanner-2

## Description
Security scanner for MCP servers and skill files. Detects AVE vulnerabilities before production.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "bawbel-scanner": {
    "command": "uvx",
    "args": ["bawbel-scanner"]
  }
}
```

## Documentation

## What Bawbel Scanner MCP server does

Bawbel Scanner MCP server evaluates MCP-related files and metadata before deployment. Its primary inputs are skill files, directories of skills, and MCP server-card URLs. The scanner looks for AVE vulnerabilities, including exposed credentials, unsafe delegation chains, and other patterns covered by its detection rules. It can also grade an MCP server manifest against the MCP specification on an A+ to F scale.

The scanner is designed for offline inspection of a target rather than execution of the target MCP server. The `ssc` and `scan-server-card` commands fetch a server card and inspect it without starting the server. Output can include active findings, suppressed or accepted findings, toxic flows, a risk score, and an OWASP AIVSS v0.8 score.

## How it works

Scanning begins with preprocessing. Code fences are stripped from consideration, and nearby negation such as warnings or examples can affect detection. The built-in pattern engine uses 40 regular-expression rules and runs without additional dependencies. Optional YARA and Semgrep engines add binary or behavioral matching and structural, multiline analysis.

An optional LLM engine performs semantic analysis through LiteLLM and can help identify synonym-based attacks. An optional sandbox engine performs dynamic behavioral analysis in Docker when enabled. These optional components require separate installation or configuration; the base pattern engine remains available without them.

Results from the engines are merged and deduplicated by AVE identifier and line. Findings are then mapped to capability tags and checked against 12 built-in toxic-flow definitions. This allows the scanner to identify combinations such as credential reading followed by data exfiltration, rather than treating each finding only in isolation.

## Setup and configuration

Install the package with its optional components using:

```bash
pip install "bawbel-scanner[all]"
```

Initialize a project with `bawbel init`. This generates a `.bawbelignore` file and `bawbel.yml`. The scanner also supports inline and block suppression comments, gitignore-style `.bawbelignore` patterns, and justified per-finding acceptance with a reason, reviewer, and optional expiry.

The LLM engine requires the `llm` extra and an API key. The sandbox engine is enabled with `BAWBEL_SANDBOX_ENABLED=true` and uses Docker.

## Tools and capabilities

Bawbel Scanner MCP server provides command-line operations for:

- Scanning a file or directory, with recursive, JSON, SARIF, severity-failure, no-ignore, and watch options.
- Generating a remediation report for a component.
- Checking only hardcoded credentials and secret exposure with `creds`.
- Checking unsafe agent delegation chains with `chain`.
- Fetching and scanning an MCP server card with `ssc` or `scan-server-card`.
- Grading MCP manifest conformance with `conform` or `scan-conformance`.
- Accepting findings as false positives or accepted risks with tracked suppression details.
- Hashing skill files with `pin` and checking later for drift with `check-pins` or `cp`.

The Bawbel Scanner MCP server can emit text, JSON, or SARIF for standard scans. Findings carry confidence values and are assigned high, medium, or low confidence bands for display.

## Limitations and notes

The scanner does not start scanned MCP servers. Its results depend on the enabled detection engines: YARA, Semgrep, LLM analysis, and sandbox analysis are optional additions to the base pattern engine. A server-card scan evaluates the fetched manifest or card rather than the running behavior of the remote server.

Suppression is available, but accepted findings remain represented in the scan result. Pinning detects changes against a saved `.bawbel-pins.json` state; it does not establish that a changed file is malicious. The project targets Python 3.10 or newer and is licensed under Apache 2.0.

_Full upstream README: https://allmcps.com/mcp/bawbel-scanner-2/readme_

