Scan detail · 12 instances, 9 rules, from Vexar-MCP
| Rule | Sev | Line | Tool | Scanner message | Has remedy |
|---|---|---|---|---|---|
| MCP001 | error | 23 | run | Tool 'run' has an empty or overly brief description (0 chars; minimum 12 recommended). | refused |
| MCP008 | error | 23 | run | Tool name 'run' is overly generic or violates `[a-z][a-z0-9_-]{2,63}`. | refused |
| MCP003 | warning | 23 | run | Parameter 'cmd' in tool 'run' has no type annotation. | refused |
| MCP004 | info | 23 | run | Parameter 'limit' in tool 'run' has no upper bound (`maximum` / `maxItems` / `Field(le=...)` / `min(...)`). | refused |
| MCP015 | info | 23 | run | 2 of 2 parameters in tool 'run' have no description: 'cmd', 'limit'. | refused |
| MCP005 | error | 25 | run | Tool 'run' invokes dangerous execution sink `subprocess.run(shell=True)` with parameter 'cmd'. | canonical |
| MCP005 | error | 26 | run | Tool 'run' invokes dangerous execution sink `os.system` with parameter 'cmd'. | canonical |
| MCP003 | warning | 31 | fetch_and_save_remote_blob | Parameter 'payload' in tool 'fetch_and_save_remote_blob' uses unconstrained type 'Any'. | refused |
| MCP015 | info | 31 | fetch_and_save_remote_blob | 3 of 3 parameters in tool 'fetch_and_save_remote_blob' have no description: 'target_url', 'output_path', 'payload'. | refused |
| MCP006 | warning | 33 | fetch_and_save_remote_blob | Tool 'fetch_and_save_remote_blob' passes parameter 'target_url' into outbound request `urllib.request.urlopen` without visible URL/host validation (potential SSRF). | canonical |
| MCP010 | warning | 33 | fetch_and_save_remote_blob | Tool 'fetch_and_save_remote_blob' performs HTTP sink `urllib.request.urlopen` with parameter 'target_url' without an explicit `timeout=` argument. | canonical |
| MCP007 | warning | 35 | fetch_and_save_remote_blob | Tool 'fetch_and_save_remote_blob' passes parameter 'output_path' to `open(write)` without `.resolve()` / base-directory confinement (path traversal risk). | canonical |
"Has remedy" is a property of the rule, not a promise about this run: triage queued four of the five autofixable instances, and every patch it attempted verified.