pentest-mcp-server

v0.1.8 pre-1.0

Offline methodology engine and payload workshop for authorized penetration testing, CTF, security research, and education via MCP. STDIO or Streamable HTTP.

pentest.caseyjhand.com/mcp
claude mcp add --transport http pentest-mcp-server https://pentest.caseyjhand.com/mcp
codex mcp add pentest-mcp-server --url https://pentest.caseyjhand.com/mcp
{
  "mcpServers": {
    "pentest-mcp-server": {
      "url": "https://pentest.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http pentest-mcp-server https://pentest.caseyjhand.com/mcp
{
  "mcpServers": {
    "pentest-mcp-server": {
      "command": "bunx",
      "args": [
        "mcp-remote",
        "https://pentest.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "mcpServers": {
    "pentest-mcp-server": {
      "type": "http",
      "url": "https://pentest.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://pentest.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2026-07-28" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2026-07-28","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

7

pentest_guide

Return an authorized-testing methodology for a selected vector and optional target context. The playbook covers reconnaissance, enumeration, exploitation, and post-exploitation phases with objectives, techniques, detection signals, mitigations, common pitfalls, references, and context-derived tool suggestions across 15 vectors.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pentest_guide",
    "arguments": {
      "vector": "<vector>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "vector": {
      "type": "string",
      "enum": [
        "auth_bypass",
        "idor",
        "ssrf",
        "xss",
        "sqli",
        "xxe",
        "path_traversal",
        "cors",
        "csrf",
        "open_redirect",
        "deserialization",
        "race_condition",
        "ssti",
        "command_injection",
        "jwt_attack"
      ],
      "description": "Attack vector to retrieve methodology for. Each vector has its own methodology branch covering recon through exploitation. Authorized testing only."
    },
    "target_context": {
      "description": "Optional target profile for authorized engagement. Providing this narrows the playbook to what is most relevant for the specific environment.",
      "type": "object",
      "properties": {
        "stack": {
          "description": "Technology stack (e.g., \"Node.js + Express + PostgreSQL\", \"PHP 7.4 + Apache\", \"Spring Boot\"). Narrows methodology to stack-specific techniques.",
          "type": "string"
        },
        "waf": {
          "description": "WAF or filter in use (e.g., \"Cloudflare\", \"AWS WAF\", \"ModSecurity CRS\", \"custom regex\"). Triggers bypass-aware variants in payload suggestions.",
          "type": "string"
        },
        "recon_notes": {
          "description": "Freeform recon findings to incorporate. E.g., \"endpoint /api/users/{id} reflects user input in JSON response\". Narrows which phases are most relevant.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "phase": {
      "default": "all",
      "description": "Methodology phase selector. \"all\" returns the complete playbook; a named phase returns only that phase.",
      "type": "string",
      "enum": [
        "all",
        "recon",
        "enumeration",
        "exploitation",
        "post_exploitation"
      ]
    }
  },
  "required": [
    "vector",
    "phase"
  ],
  "additionalProperties": false
}
view source ↗

pentest_analyze_response

Analyze an HTTP response from authorized probing for information leakage, fingerprinting signals, and related exposure. Structured findings cover version disclosures, stack traces, debug headers, internal paths, authentication patterns, CORS configuration, detection signals, remediation, and associated methodology vectors.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pentest_analyze_response",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "response_headers": {
      "description": "Raw HTTP response headers, optionally including the status line. Maximum 20,000 characters.",
      "type": "string",
      "maxLength": 20000
    },
    "response_body": {
      "description": "Raw HTML, JSON, XML, or error response body text. Maximum 10,000 characters.",
      "type": "string",
      "maxLength": 10000
    },
    "status_code": {
      "description": "HTTP status code (100–599). Helps classify the response type.",
      "type": "integer",
      "minimum": 100,
      "maximum": 599
    },
    "context": {
      "description": "Freeform context about the authorized test target — e.g., \"login endpoint\", \"GraphQL API\", \"file upload handler\". Narrows the pattern matching to relevant categories. Max 2,000 characters.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "additionalProperties": false
}
view source ↗

pentest_lookup_technique

Look up a MITRE ATT&CK technique by exact ID or keyword. Results include tactics, platforms, description, detection data, public procedure examples, mitigations, related sub-techniques, and dataset version.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pentest_lookup_technique",
    "arguments": {
      "query": "<query>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "ATT&CK technique ID (e.g., \"T1190\", \"T1059.001\") or keyword describing the technique (e.g., \"sql injection\", \"pass the hash\", \"web shell upload\"). ID lookup is exact; keyword lookup returns the best match plus related techniques."
    },
    "include_subtechniques": {
      "default": true,
      "description": "Include sub-techniques in the result. Set to false when only the parent technique summary is needed.",
      "type": "boolean"
    }
  },
  "required": [
    "query",
    "include_subtechniques"
  ],
  "additionalProperties": false
}
view source ↗

pentest_lookup_group

Look up a MITRE ATT&CK threat group or software entry by ID, name, or keyword. Results include ATT&CK identity, aliases, type, description, and associated techniques with procedure-level context from public ATT&CK reporting.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pentest_lookup_group",
    "arguments": {
      "query": "<query>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "ATT&CK threat group ID (e.g., \"G0007\"), software ID (e.g., \"S0002\"), or name/keyword (e.g., \"APT28\", \"Mimikatz\", \"Lazarus Group\"). ID lookup is exact and case-insensitive; name/keyword search returns the best match."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
view source ↗

pentest_map_techniques

Rank ATT&CK techniques and OWASP test cases against an authorized target profile of technology stack, exposed services, authentication type, and operating system. Results include profile-specific relevance, detection opportunities, mitigations, and associated methodology vectors.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pentest_map_techniques",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "stack": {
      "description": "Technology stack components (e.g., [\"Node.js\", \"Express\", \"PostgreSQL\", \"Redis\"]). Each element matched against technique platform and procedure examples.",
      "type": "array",
      "items": {
        "type": "string",
        "description": "A technology stack component."
      }
    },
    "services": {
      "description": "Exposed services and interfaces (e.g., [\"REST API\", \"GraphQL\", \"file upload\", \"admin panel\"]). Narrows technique relevance.",
      "type": "array",
      "items": {
        "type": "string",
        "description": "An exposed service or interface."
      }
    },
    "auth_type": {
      "description": "Authentication mechanism in use. Surfaces auth-specific attack techniques.",
      "type": "string",
      "enum": [
        "jwt",
        "session_cookie",
        "api_key",
        "oauth2",
        "basic_auth",
        "ntlm",
        "kerberos",
        "none",
        "unknown"
      ]
    },
    "os": {
      "description": "Target operating system. Narrows to OS-specific techniques.",
      "type": "string",
      "enum": [
        "linux",
        "windows",
        "macos",
        "unknown"
      ]
    },
    "limit": {
      "default": 15,
      "description": "Maximum number of techniques to return (1–50, default 15). Higher values give broader coverage; lower values focus on highest-relevance items.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "limit"
  ],
  "additionalProperties": false
}
view source ↗

pentest_generate_payloads

Generate context-specific payload templates for authorized systems. Each template includes its vulnerability category, context rationale, WAF/IDS detection signature, mitigation, optional WAF research note, and optional encoded variant.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pentest_generate_payloads",
    "arguments": {
      "category": "<category>",
      "injection_context": "<injection_context>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "xss",
        "sqli",
        "ssrf",
        "xxe",
        "path_traversal",
        "ssti",
        "command_injection",
        "open_redirect",
        "csrf",
        "deserialization",
        "jwt",
        "ldap_injection",
        "nosql_injection",
        "http_header"
      ],
      "description": "Vulnerability category for payload generation."
    },
    "injection_context": {
      "type": "string",
      "enum": [
        "html_attribute",
        "html_body",
        "js_string",
        "js_template",
        "js_script_block",
        "url_parameter",
        "url_path",
        "sql_where",
        "sql_integer",
        "xml_element",
        "xml_attribute",
        "http_header",
        "json_value",
        "cookie_value",
        "file_name",
        "generic"
      ],
      "description": "Precise injection context. Critical for XSS: an HTML attribute payload differs from a JS string payload. Provide the most specific context for the best results."
    },
    "waf_profile": {
      "default": "none",
      "description": "WAF or filter in front of the authorized test target. When a specific WAF is named, bypass variants referencing known public research are included.",
      "type": "string",
      "enum": [
        "cloudflare",
        "aws_waf",
        "modsecurity_crs",
        "imperva",
        "akamai",
        "f5_bigip_asm",
        "nginx_modsecurity",
        "fortinet_fortiwaf",
        "none",
        "unknown"
      ]
    },
    "encoding": {
      "description": "Optional encoding chain applied left to right to each returned template.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "none",
          "url",
          "double_url",
          "html_entity",
          "unicode",
          "hex",
          "base64",
          "js_escape"
        ],
        "description": "An encoding step to apply."
      }
    },
    "count": {
      "default": 5,
      "description": "Number of payload variants to return (1–20, default 5). More variants cover different bypass approaches for the same context.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "category",
    "injection_context",
    "waf_profile",
    "count"
  ],
  "additionalProperties": false
}
view source ↗

pentest_encode

Transform a payload string through an ordered encoding chain for authorized filter research. Results include the final value, intermediate values, optional decode path and rationale, and detection guidance. All transforms are local; no live probing occurs.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pentest_encode",
    "arguments": {
      "payload": "<payload>",
      "chain": "<chain>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "payload": {
      "type": "string",
      "minLength": 1,
      "maxLength": 10000,
      "description": "Input payload string to encode. Max 10,000 characters."
    },
    "chain": {
      "minItems": 1,
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "url",
          "double_url",
          "html_entity",
          "unicode",
          "hex",
          "base64",
          "js_escape",
          "null_byte",
          "mixed_case",
          "comment_break"
        ],
        "description": "An encoding step."
      },
      "description": "Ordered list of encodings to apply (1–6 steps). Applied left to right. E.g., [\"unicode\", \"url\"] applies Unicode escape first, then URL-encodes the result."
    },
    "explain": {
      "default": true,
      "description": "Whether to include the decode path and bypass rationale.",
      "type": "boolean"
    }
  },
  "required": [
    "payload",
    "chain",
    "explain"
  ],
  "additionalProperties": false
}
view source ↗