Bawbel Scanner — Claude Code MCP server: security scan for skills
A static scanner for MCP servers and skill files. It flags AVE vulnerabilities, gives each finding an OWASP AIVSS score, and never launches the servers it inspects.
claude mcp add bawbel-scanner -- uvx bawbel-scannerWhat Bawbel Scanner does
Point it at skill files, a directory, or a server card URL. The check runs in layers: regex rules, YARA, Semgrep, an LLM pass for meaning, and a Docker sandbox for behaviour. Every layer feeds one merged list sorted by severity, and a separate step pairs capability tags against known attack chains to surface compound risk.
The sandbox stays off unless you set BAWBEL_SANDBOX_ENABLED=true, so scanned content does not execute by default. Server cards are fetched over HTTP; the MCP process itself is never started. The YARA, Semgrep and LLM engines come as separate extras of the package, and the LLM one also wants an API key. Skip them and you are left with plain pattern matching, which catches far less.
There is housekeeping too. bawbel init writes .bawbelignore and bawbel.yml, while bawbel pin stores hashes of skill files in .bawbel-pins.json so later drift shows a swapped file. Findings you don't care about get a suppression comment carrying a reason, a reviewer and an optional expiry date. For pipelines, --fail-on-severity and SARIF output do the job.
What it helps with
- audit agent skill files before they reach a real project
- scan an MCP server from its card without launching the process
- catch hardcoded credentials and leaked secrets in skill files
- detect a swapped skill file by comparing hashes
- fail a CI build when findings exceed a severity threshold
Example prompts for the agent
- Scan the
./skills/directory and list findings with their AIVSS scores - Check the server card at
https://serverwithout starting the server - Mark that finding as accepted risk and record the reviewer
How to install Bawbel Scanner
Platform CLI
claude mcp add bawbel-scanner -- uvx bawbel-scanneruvx runs the command named after the package; if the README names another one, use uvx --from bawbel-scanner <command>
Platform CLI
codex mcp add bawbel-scanner -- uvx bawbel-scanneruvx runs the command named after the package; if the README names another one, use uvx --from bawbel-scanner <command>
Config file
{
"mcpServers": {
"bawbel-scanner": {
"command": "uvx",
"args": [
"bawbel-scanner"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from bawbel-scanner <command>
Config file
{
"servers": {
"bawbel-scanner": {
"type": "stdio",
"command": "uvx",
"args": [
"bawbel-scanner"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from bawbel-scanner <command>
Platform CLI
gemini mcp add bawbel-scanner uvx bawbel-scanneruvx runs the command named after the package; if the README names another one, use uvx --from bawbel-scanner <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Bawbel Scanner
How do I install Bawbel Scanner in Claude Code?
Run claude mcp add bawbel-scanner -- uvx bawbel-scanner. The scanner is then reachable from the session.
What does Bawbel Scanner do?
It looks for vulnerabilities in skill files and MCP server cards, scores each hit with OWASP AIVSS, and rates the risk of chained attacks.
Does it need Docker?
Only for the behavioural sandbox, which is off by default. Turn it on with BAWBEL_SANDBOX_ENABLED=true.