Penetration testing knowledge base MCP server providing search and retrieval of security skills, wordlists, payloads, and vulnerabilities from the AboutSecurity project
Strong foundation with 12 well-named tools following verb_noun convention (search_*, list_*, get_*). All tools have descriptions (avg 180 chars, within 10-1024 baseline). Input schemas present with type definitions and parameter descriptions. However, output schemas are not documented in the provided code, critical for LLM planning. Pagination support is good (offset/limit on all list/search tools). Risk annotations present (all READ_ONLY). Missing: explicit error handling guidance, output field documentation, and depth parameter constraints.
Retrieve contents of a specific password wordlist or bruteforce dictionary by ID or path. Supports pagination with line offset and limit for large files. Returns line count and paginated content. Use to fetch actual wordlist entries for password cracking or fuzzing.
Retrieve contents of a specific attack payload collection by ID or path. Supports pagination with line offset and limit for large payload files. Returns line count and paginated payload strings. Use to fetch actual exploit payloads for XSS, SQL injection, SSRF, XXE, and other attacks.
Retrieve full details of a specific penetration testing skill by ID or name. Supports loading depth control: metadata (basic info only), summary (default, includes description), or full (includes references and related techniques). Use to get detailed exploit methodology, prerequisites, and step-by-step instructions.
Retrieve full details of a specific vulnerability (CVE/CNVD) by ID or name. Supports loading depth control: brief (default, metadata only) or full (includes PoC code and remediation steps). Use to get detailed vulnerability information, affected versions, CVSS scores, and exploitation guidance.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., what fields does search_skill return? Is there a stable ID for get_skill lookup?). Descriptions mention 'stable ID' and 'paginated results' but the actual response structure is invisible.
get_* tools accept both 'id' (preferred) and 'name'/'path' (legacy) parameters. Descriptions note this but do not explain when to use which or what happens if both are provided. Undocumented parameter relationships cause LLM confusion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
List all available password wordlists and bruteforce dictionaries. Browse by category without a search query. Supports pagination with offset and limit. Use to discover available password lists, credential databases, and fuzzing dictionaries.
List all available attack payloads and exploit strings. Browse by category without a search query. Supports pagination with offset and limit. Use to discover available payload collections for XSS, SQL injection, SSRF, XXE, and other attack vectors.
List all available penetration testing skills and exploit techniques. Browse by category without a search query. Supports pagination with offset and limit. Use to discover available hacking skills, vulnerability classes, and attack methods.
List all available vulnerabilities (CVE, CNVD) with optional filtering by severity, product, and category. Browse without a search query. Supports pagination with offset and limit. Use to discover vulnerability database contents and browse by severity or affected product.
Search password wordlists and bruteforce dictionaries for penetration testing (rockyou, common passwords, credential lists, username lists, directory bruteforce, subdomain enumeration). Use when the user needs dictionaries for password cracking or fuzzing. Returns paginated results with stable IDs.
Search attack payloads and exploit strings for penetration testing (XSS payloads, SQL injection strings, SSRF URLs, XXE payloads, command injection, template injection, LDAP injection, CRLF injection). Use when the user needs ready-made attack payloads. Returns paginated results with stable IDs.
Search penetration testing skills and exploit techniques (SQL injection, XSS, SSRF, RCE, privilege escalation, buffer overflow, command injection, path traversal, authentication bypass, CSRF). Use when the user asks about hacking techniques or vulnerability exploitation. Returns paginated results with stable ID, name, description, and category.
Search vulnerability database (CVE, CNVD) with filtering by severity, product, and category. Use when the user asks about specific vulnerabilities, CVEs, or needs vulnerability intelligence. Returns paginated results with stable IDs, severity, and affected products.
Depth parameter ('metadata', 'summary', 'full', 'brief') lacks enum constraints in schema. Descriptions list valid values as prose, but LLMs cannot parse prose constraints reliably. Should be formal enum in JSON Schema.
No error handling guidance. Descriptions do not explain what happens on invalid query, missing ID, or empty results. LLMs need recovery hints: 'If skill not found, try search_skill() with partial name.'
Category and severity filters use prose enums in descriptions (e.g., 'ai|cloud|middleware|network|web') instead of formal JSON Schema enums. LLMs may hallucinate invalid values like 'iot' or 'blockchain'.