Skip to content

Scan Models

Data models for the MCP security scanner.

Module: munio.scan.models


Single security finding from a scan layer.

Fields:

NameTypeDescription
idstr
layerLayer
severityFindingSeverity
tool_namestr
messagestr
descriptionstr
attack_type`AttackTypeNone`
cwe`strNone`
locationstr
counterexample`strNone`
confidencefloat

Aggregate scan result across all servers/files.

Fields:

NameTypeDescription
scan_idstr
timestampdatetime
serverslist[ServerScanResult]
findingslist[Finding]
elapsed_msfloat
enabled_layersfrozenset[Layer]
skipped_layerstuple[SkippedLayer, ...]
total_findingsintTotal number of findings.
by_severitydict[str, int]Findings count grouped by severity name.
by_layerdict[str, int]Findings count grouped by layer name.

Methods:

  • to_json_dict() -> dict[str, object] Serialize to dict including computed properties (safe for JSON output).

MCP tool definition with its JSON Schema.

Fields:

NameTypeDescription
namestr
titlestr
descriptionstr
input_schemadict[str, Any]
output_schema`dict[str, Any]None`
annotations`dict[str, Any]None`
server_namestr

Discovered MCP server configuration.

Fields:

NameTypeDescription
namestr
sourcestr
commandstr
argslist[str]
env`dict[str, str]None`
url`strNone`
enabledbool

Analysis layer identifier (decade-spaced for future insertions).

Fields:

NameTypeDescription
L0_CONFIG“
L1_SCHEMA“
L2_HEURISTIC“
L2_CLASSIFIER“
L2_MULTILINGUAL“
L3_STATIC“
L4_Z3“
L5_COMPOSITIONAL“
L6_FUZZING“
L7_SOURCE“

Values:

  • L0_CONFIG = 5
  • L1_SCHEMA = 10
  • L2_HEURISTIC = 20
  • L2_CLASSIFIER = 25
  • L2_MULTILINGUAL = 26
  • L3_STATIC = 30
  • L4_Z3 = 40
  • L5_COMPOSITIONAL = 50
  • L6_FUZZING = 60
  • L7_SOURCE = 70

Finding severity level (ordered: CRITICAL=0 highest).

Fields:

NameTypeDescription
CRITICAL“
HIGH“
MEDIUM“
LOW“
INFO“

Values:

  • CRITICAL = 0
  • HIGH = 1
  • MEDIUM = 2
  • LOW = 3
  • INFO = 4

MCP attack type category.

Fields:

NameTypeDescription
PROMPT_INJECTION“
DATA_EXFILTRATION“
COMMAND_INJECTION“
PATH_TRAVERSAL“
SSRF“
CREDENTIAL_EXPOSURE“
SYSTEM_PROMPT_EXTRACTION“
CROSS_SERVER_SHADOWING“
TOKEN_STUFFING“
SCHEMA_PERMISSIVENESS“
RUG_PULL“
AUTHORIZATION_BYPASS“
SUPPLY_CHAIN“
CONFIG_INJECTION“

Values:

  • PROMPT_INJECTION = 1
  • DATA_EXFILTRATION = 2
  • COMMAND_INJECTION = 3
  • PATH_TRAVERSAL = 4
  • SSRF = 5
  • CREDENTIAL_EXPOSURE = 6
  • SYSTEM_PROMPT_EXTRACTION = 7
  • CROSS_SERVER_SHADOWING = 8
  • TOKEN_STUFFING = 9
  • SCHEMA_PERMISSIVENESS = 10
  • RUG_PULL = 11
  • AUTHORIZATION_BYPASS = 12
  • SUPPLY_CHAIN = 13
  • CONFIG_INJECTION = 14

CLI output format.

Fields:

NameTypeDescription
TEXT“
JSON“
SARIF“
MARKDOWN“

Values:

  • TEXT = 'text'
  • JSON = 'json'
  • SARIF = 'sarif'
  • MARKDOWN = 'markdown'

Aggregate config scan result across all discovered config files.

Fields:

NameTypeDescription
scan_idstr
timestampdatetime
fileslist[ConfigFileResult]
elapsed_msfloat
total_findingsint
all_findingslist[Finding]
by_severitydict[str, int]

Scan result for a single config file.

Fields:

NameTypeDescription
pathstr
idestr
servers_countint
findingslist[Finding]
permissions`ConfigPermissionsNone`

Unix file permission check result.

Fields:

NameTypeDescription
modeint
world_readablebool
world_writablebool

Auto-generated from source code. Do not edit manually.