Local Security Testing Tools - MCP server providing access to penetration testing and security scanning tools including Nmap, Nikto, SQLMap, Exploit-DB search, and directory brute forcing
All 5 tools have basic descriptions (10-50 chars) and minimal input schemas. Naming follows verb_noun pattern (nmap_scan, nikto_scan, etc.), which is good. However, descriptions are too brief to guide LLM selection (e.g., 'Run an Nmap port scan' lacks context on when to use it vs alternatives). Parameter descriptions are present but generic ('Target IP or hostname to scan'). No output schemas documented. No error handling guidance beyond basic validation. No tool annotations (readOnlyHint, destructiveHint). Security concerns: command injection risk via unsanitized user input despite basic sanitization attempt. No pagination, no structured output format specified.
Brute force directory discovery on a web server.
Perform a web server vulnerability scan using Nikto.
Run an Nmap port scan against a target IP or hostname.
Search the Exploit-DB for known vulnerabilities via searchsploit.
Check a URL for SQL injection vulnerabilities (Batch mode).
No output schemas documented. Tools return raw command output as unstructured strings. LLMs cannot parse results reliably or extract data for downstream tool calls.
Command injection vulnerability. nmap_scan sanitizes target but options parameter is passed directly to subprocess. sqlmap_scan, nikto_scan, dirb_scan accept URLs without validation. Malicious input can break out of command context.
Descriptions too brief (10-50 chars, baseline 194 chars). No context on when to use each tool, prerequisites, or what results mean. LLMs cannot distinguish nmap_scan from dirb_scan based on descriptions alone.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
No error recovery guidance. Tools return raw stderr on failure (e.g., 'Error (Code 1)') without actionable next steps. LLMs cannot determine if error is retryable, user-fixable, or fatal.
No tool annotations. All tools marked READ_ONLY but lack explicit readOnlyHint in schema. No idempotentHint or destructiveHint. LLMs cannot reason about retry safety or side effects.