name: harness-mcp-scan
description: Static security scan of a harness's declared MCP surface via harness mcp-scan <path>. Reads .mcp/servers.json + .harness/claims.json. Pure-read, no dispatch. Exits 1 on findings at or above --fail-on severity.
argument-hint: "[--path .] [--fail-on low|medium|high] [--format table|json]"
allowed-tools: Bash
Calls harness mcp-scan to enumerate every declared MCP server + tool
and flag policy / permission / dependency issues. Never executes any
tool; pure static analysis.
Algorithm
Implementation: scripts/mcp-scan.mjs.
- Invoke the pinned
harnessbinary (metaharness@~0.3.0, resolved from a local install or the one-time~/.ruflo/metaharness-cache-<pin>cache — never@latest):harness mcp-scan <path> --json. - Parse
findings[]with{ severity, id, server, tool, message }. --fail-on <severity>: exit 1 when any finding is at or above that level. Defaulthigh.- Output JSON (default) or markdown table.
Severity rank
| Severity | Rank | |---|---:| | low | 1 | | medium | 2 | | high | 3 |
--fail-on high (default) only fails on HIGH; --fail-on medium also
fails on MEDIUM; --fail-on low fails on any finding.
CI integration
- name: MCP static scan
run: node plugins/ruflo-metaharness/scripts/mcp-scan.mjs --fail-on high
The exit code is the only thing CI watches; the JSON output goes to artifacts for human review.
Graceful degradation
When harness binary is unavailable (no network, blocked registry),
emits structured { degraded: true, reason: 'metaharness-not-available' }
and exits 0. Ruflo continues — ADR-150 architectural constraint.
Auditeur de Securite
Securite
Analyse le code pour detecter les vulnerabilites OWASP Top 10.
Checklist de Sécurité OWASP
Securite
Génère des checklists de sécurité applicative basées sur l'OWASP Top 10.
Modélisation de Menaces
Securite
Génère des documents de modélisation de menaces avec analyse STRIDE.