MCP security scanner — source code audit with 25+ Semgrep rules, config health checks, SARIF output for CI/CD
This is a red-team security scanner, not a production MCP server. The 7 tools are demo/test fixtures (assets/demo-server, tests/fixtures) used to validate the scanner itself, not the primary deliverable. Tool definitions are minimal: descriptions are present but generic (10-30 chars), input schemas exist but lack detail, and no output schemas are documented. The server is STDIO-only and designed for local scanning, not agent integration. Naming is acceptable (run_command, read_file, fetch_url) but descriptions are too brief to guide LLM selection. No error handling, no pagination, no security annotations.
Return the input message as-is.
Return the input message reversed.
Return the input message in uppercase.
Fetch a URL.
Return the server configuration.
Read a file from disk.
Execute a system command.
Descriptions are too brief (10-30 chars). LLMs cannot determine when to select each tool or what distinguishes run_command from similar operations. Descriptions should be 50-200 chars explaining WHAT, WHEN, and any prerequisites.
No output schemas documented. LLMs cannot plan downstream tool calls or extract structured data. Each tool should declare its return type and fields.
No error handling or recovery guidance. If run_command fails, the LLM receives no actionable next step. Errors should categorize as retryable/user-fixable/fatal and suggest alternatives.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
run_command is destructive but has no confirmation step, dry-run option, or permission gate. Agents can execute arbitrary system commands without safeguards.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Clients cannot determine which tools are safe to retry or have side effects.