Skip to main content
Glama
1mr0-tech

PwnBridge

Official
by 1mr0-tech

PwnBridge

TypeScript MCP SDK Node.js License Status

⚠️ AUTHORIZED USE ONLY — Only test systems you own or have explicit written permission to test. Unauthorized access to computer systems is illegal.


What is PwnBridge?

PwnBridge is a Model Context Protocol (MCP) server that bridges AI assistants to a Kali Linux machine over SSH. Ask Claude, ChatGPT, or Gemini to run a port scan, test for SQL injection, or perform a full SAST/DAST security assessment — the AI translates intent into commands, executes them on your Kali box, streams back results, and keeps a full audit trail.

┌─────────────────────────────────────────────────────────────────────────┐
│                                                                         │
│   Claude Desktop ──── stdio ────┐                                       │
│                                 │                                       │
│   ChatGPT ──────── HTTP/SSE ───►│  PwnBridge ──── SSH ────► Kali Linux │
│                                 │  (11 tools)                           │
│   Gemini CLI ───── HTTP/SSE ───►│                                       │
│                                 │                                       │
└─────────────────────────────────────────────────────────────────────────┘

Dual Transport

Transport

Clients

Protocol

stdio

Claude Desktop

MCP native (spawned process)

HTTP / SSE

ChatGPT, Gemini CLI, any MCP client

Streamable HTTP + legacy SSE


Related MCP server: K-MCP: Kali Model Context Protocol Server

Tools

Reconnaissance & Scanning

Tool

Description

nmap_scan

Port scanning — quick, service, OS, full, stealth, UDP profiles

nikto_scan

Web server vulnerability and misconfiguration detection

whatweb_fingerprint

CMS, framework, and technology fingerprinting

Web Application Testing

Tool

Description

sqlmap_scan

SQL injection detection and exploitation

gobuster_scan

Directory, file, subdomain, and vhost enumeration

ffuf_fuzz

Web fuzzing with FUZZ keyword — params, paths, headers

Exploitation & Auth Testing

Tool

Description

hydra_attack

Password brute-force — SSH, FTP, HTTP, SMB, RDP, and more

metasploit_exec

Non-interactive Metasploit module execution

Security Analysis

Tool

Description

sast_scan

Static analysis — Semgrep + Bandit + Gitleaks + Graudit in parallel, versioned reports

dast_scan

Dynamic analysis — OWASP ZAP + Nuclei, 5 auth modes, versioned reports

Utility

Tool

Description

shell_exec

Raw shell command passthrough (escape hatch for advanced scenarios)


Quick Start

Prerequisites

  • Kali Linux machine accessible over SSH (VM, VPS, or bare metal)

  • Node.js 22+ on your local machine

1. Clone & Install

git clone https://github.com/1mr0-tech/simple-kali-mcp.git pwnbridge
cd pwnbridge
npm install

2. Configure

cp .env.example .env

Edit .env — minimum required:

SSH_HOST=192.168.1.100     # Your Kali machine IP
SSH_USER=kali
SSH_PRIVATE_KEY_PATH=~/.ssh/id_rsa   # Recommended over password

3. Build

npm run build

4. Connect Your AI Assistant


Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "pwnbridge": {
      "command": "node",
      "args": ["/absolute/path/to/pwnbridge/dist/index.js", "--stdio"]
    }
  }
}

Restart Claude Desktop. All 11 tools appear automatically.


ChatGPT

Option A — MCP Connector (ChatGPT Plus / Team / Enterprise):

node dist/index.js --http    # starts on port 3000

In ChatGPT → Settings → Connected Apps → Add MCP Server → http://your-server:3000/mcp

Option B — Custom GPT Actions (legacy):

Import the auto-generated schema: http://your-server:3000/openapi.yaml


Gemini CLI

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "pwnbridge": {
      "httpUrl": "http://your-server:3000/mcp",
      "headers": { "x-api-key": "your-key-here" }
    }
  }
}

SAST Scanning

Run static analysis on a local codebase. Code is synced to Kali via SFTP, scanned in parallel, then deleted — only the report is kept.

AI: "Run a SAST scan on /Users/me/projects/backend, project name backend-api"

What runs on Kali:

┌─────────────────────────────────────────────────────────────────┐
│  SFTP Upload (8 concurrent streams)                             │
│  /Users/me/projects/backend  →  /tmp/kali-sast-abc123/src/     │
└───────────────────────┬─────────────────────────────────────────┘
                        │ parallel
        ┌───────────────┼───────────────┬──────────────┐
        ▼               ▼               ▼              ▼
   Semgrep          Bandit          Gitleaks        Graudit
 (multi-lang)     (Python*)       (secrets)      (lang-aware)
        │               │               │              │
        └───────────────┴───────────────┴──────────────┘
                        │ consolidated report
                        ▼
   ~/kali-mcp-reports/sast/backend-api/v002_20240120_091500_sast_all.md

Bandit is automatically skipped if no .py files are found. Graudit uses language auto-detection to target the right rule databases (e.g. python,js,code).

Report Naming

~/kali-mcp-reports/
  sast/
    {project}/
      v001_20240115_103000_sast_all.md
      v002_20240120_091500_sast_semgrep+bandit.md
      v003_20240125_140000_sast_all.md

DAST Scanning

Run dynamic analysis against a live web application.

AI: "Run a full authenticated DAST scan on http://192.168.1.50, form login at /login"

Authentication modes:

auth_type

How it works

none

Standard unauthenticated crawl

basic

Injects Authorization: Basic <b64> via ZAP Replacer

bearer

Injects Authorization: Bearer <token> via ZAP Replacer

cookie

Injects Cookie: <value> via ZAP Replacer

form

Generates ZAP Automation Framework YAML — full login flow

What runs on Kali (parallel):

  ZAP (spider → passive scan → active scan)
     +
  Nuclei (CVE + template detection)
     │
     ▼
  ~/kali-mcp-reports/dast/192.168.1.50/v001_20240115_103000_dast_full_form-auth.md

Report Naming

~/kali-mcp-reports/
  dast/
    {host}/
      v001_20240115_103000_dast_baseline_unauth.md
      v002_20240116_090000_dast_full_form-auth.md
      v003_20240118_143000_dast_full_bearer-auth.md

Configuration Reference

Variable

Default

Description

SSH_HOST

Required. Kali machine IP or hostname

SSH_PORT

22

SSH port

SSH_USER

Required. SSH username

SSH_PASSWORD

SSH password (prefer key auth)

SSH_PRIVATE_KEY_PATH

Path to private key — ~ is expanded

SSH_PASSPHRASE

Passphrase for encrypted private key

HTTP_PORT

3000

HTTP server port

HTTP_HOST

0.0.0.0

HTTP bind address

HTTP_API_KEY

API key to protect the HTTP endpoint

DEFAULT_TIMEOUT_MS

300000

Default command timeout (5 min)

NMAP_TIMEOUT_MS

600000

nmap timeout (10 min)

SQLMAP_TIMEOUT_MS

900000

sqlmap timeout (15 min)

SAST_TIMEOUT_MS

900000

SAST scan timeout (15 min)

DAST_TIMEOUT_MS

1800000

DAST scan timeout (30 min)

AUDIT_LOG_PATH

./logs/audit.log

Local audit log file

KALI_REPORT_DIR

~/kali-mcp-reports

Report directory on Kali


Audit Logging

Every command is logged with a full timestamp:

{"timestamp":"2024-01-15 10:30:00","level":"info","message":"COMMAND_EXECUTED",
 "tool":"nmap_scan","command":"nmap -T4 -F 192.168.1.1","target":"192.168.1.1"}

Log: ./logs/audit.log — rotates at 50MB, keeps 5 files.


Server Commands

# HTTP mode — ChatGPT / Gemini
npm run start:http

# stdio mode — Claude Desktop (usually auto-launched)
npm run start:stdio

# Health check
curl http://localhost:3000/health

Security Considerations

Concern

Mitigation

Unauthorized access

Set HTTP_API_KEY before exposing port 3000

Credential theft

Use SSH key auth over password

Command injection

Tool schemas use enums and typed params — only shell_exec accepts raw strings

Audit trail

All commands logged with timestamp, tool, target, and full command string

Source code exposure

SAST uploads code temporarily — deleted immediately after scan

Network exposure

Restrict port 3000 at firewall level; bind to 127.0.0.1 for local-only use


Tool Requirements on Kali

Tool

Install

nmap

Pre-installed

nikto

apt install nikto

sqlmap

Pre-installed

gobuster

apt install gobuster

ffuf

apt install ffuf

whatweb

Pre-installed

hydra

Pre-installed

metasploit

Pre-installed

semgrep

pip install semgrep

bandit

pip install bandit

gitleaks

apt install gitleaks

graudit

apt install graudit

zaproxy

apt install zaproxy

nuclei

apt install nuclei


Troubleshooting

SSH connection fails:

ssh -i ~/.ssh/id_rsa kali@<host>

Tool not appearing in Claude Desktop:

  • Verify absolute path in claude_desktop_config.json

  • Restart Claude Desktop after config changes

  • Check logs: ~/Library/Logs/Claude/ (macOS)

ZAP / Nuclei / Semgrep not found:

apt install zaproxy nuclei gitleaks graudit
pip install semgrep bandit

License

MIT — see LICENSE for details.


Built for authorized security professionals. Assess responsibly.

Available Tools

11 tools
dast_scanA

Perform Dynamic Application Security Testing (DAST) against a running web application. Runs OWASP ZAP (spider + passive/active scan) and Nuclei (CVE/template detection) in parallel on the Kali machine. Supports unauthenticated and authenticated scans (HTTP Basic, Bearer token, Cookie injection, Form-based login). Generates a versioned consolidated report saved on Kali.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoBearer token (auth_type=bearer)
passwordNoPassword for basic or form auth
usernameNoUsername for basic or form auth
auth_typeNo"none" = unauthenticated. "basic" = HTTP Basic/Digest (username + password). "bearer" = Authorization: Bearer <token>. "cookie" = Cookie header injection. "form" = form-based login via ZAP Automation Framework.none
login_urlNoLogin page URL (auth_type=form)
scan_typeNo"baseline" = passive spider + passive scan (fast, non-intrusive). "full" = full active scan with attack payloads (thorough, slower). "api" = API-focused scan (uses zap-api-scan.py)baseline
run_nucleiNoRun Nuclei for CVE and template-based detection in parallel with ZAP.
target_urlYesTarget web application URL. Example: "http://192.168.1.10" or "https://app.example.com"
ajax_spiderNoEnable AJAX spider for Single Page Applications (React, Angular, Vue). Slower but finds more endpoints.
cookie_valueNoFull Cookie header value, e.g. "sessionid=abc123; csrftoken=xyz" (auth_type=cookie)
password_fieldNoForm field name for password (auth_type=form). Default: "password"
username_fieldNoForm field name for username (auth_type=form). Default: "username"
login_success_regexNoRegex to detect successful login in response body (auth_type=form). Default: "logout"

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the parallel execution model (ZAP + Nuclei), the underlying machine (Kali), the auth support matrix, and the output as a 'versioned consolidated report saved on Kali.' It doesn't mention scan duration, rate limits, or whether it requires the target to be reachable from the Kali machine, but the operational profile is substantially richer than average.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the core action, then engines, then auth, then output. No filler and each sentence adds incremental information. Slightly dense but well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 13-param tool with no annotations and no output schema, the description covers what the tool does, its engines, auth options, and output location. It does not need to explain return values (report is saved, not returned) and the schema handles parameters. Minor gaps around sibling selection and failure modes remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 13 parameters in detail, including enums and defaults. The description adds the auth-mode summary ('HTTP Basic, Bearer token, Cookie injection, Form-based login') and names the two engines, but this is largely redundant with the schema. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Perform Dynamic Application Security Testing (DAST) against a running web application.' It further distinguishes itself by naming the exact toolchain (OWASP ZAP spider + passive/active scan, Nuclei) and scope (running web app). Against siblings like nmap_scan, nikto_scan, or sqlmap_scan, the function is clearly differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a running web application and lists supported auth modes, but never explicitly states when to choose this over siblings like nikto_scan or sqlmap_scan, nor when-not to use it. For an agent selecting among ten security scan tools, this is a meaningful gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ffuf_fuzzB

Run ffuf web fuzzer against a target URL on the remote Kali machine. Place the keyword FUZZ anywhere in the URL, headers, or body to mark the injection point. Useful for directory discovery, parameter fuzzing, and virtual host enumeration.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL with FUZZ keyword marking the injection point. Example: "http://target.example.com/FUZZ" or "http://target.example.com/page?id=FUZZ"
dataNoPOST body data (use with method="POST"). Can include FUZZ. Example: "username=FUZZ&password=test"
methodNoHTTP method to use for requestsGET
threadsNoNumber of concurrent threads. Default: 40
wordlistNoPath to wordlist on Kali machine. Default: /usr/share/wordlists/dirb/common.txt/usr/share/wordlists/dirb/common.txt
filter_sizeNoHide responses with this exact response size (bytes)
filter_codesNoComma-separated HTTP status codes to hide from results. Example: "404,400"

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that execution happens on a remote Kali machine, but says nothing about request volume/rate, detectability, runtime, permissions on the Kali host, or how results are surfaced for a high-volume active fuzzing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first front-loads what the tool is and where it runs, the second explains the FUZZ injection marker and the main use cases. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, and the description does not explain result format, where output lands, or runtime expectations for a 7-parameter active scanning tool. It is adequate for purpose and the FUZZ mechanic but leaves the agent guessing about results and operational side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; every parameter is already documented with examples in the schema. The description adds only a mild note that FUZZ can also be placed in 'headers', which has no corresponding schema parameter, so it adds little usable meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run ffuf web fuzzer against a target URL') plus the distinctive FUZZ-keyword mechanism, so the agent knows exactly what it does. It does not differentiate itself from the closely related sibling gobuster_scan, which also does directory discovery, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for directory discovery, parameter fuzzing, and virtual host enumeration' gives implied usage contexts but never says when to choose this over gobuster_scan, nmap_scan, or sqlmap_scan, and offers no exclusions or prerequisites. Coverage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gobuster_scanB

Run Gobuster directory/file/subdomain enumeration against a target on the remote Kali machine. Discovers hidden paths, files, and virtual hosts through brute-force enumeration.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL for dir/file mode, or base domain for DNS mode. Example: "http://target.example.com"
modeNo"dir" = directory/file brute-force, "dns" = subdomain enumeration, "vhost" = virtual host discoverydir
threadsNoNumber of concurrent threads. Default: 10
wordlistNoPath to wordlist on Kali machine. Default: /usr/share/wordlists/dirb/common.txt/usr/share/wordlists/dirb/common.txt
extensionsNoFile extensions to search for (dir mode only). Example: "php,html,txt"
status_codesNoComma-separated HTTP status codes to show. Default shows all non-404. Example: "200,301,302"

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add one valuable operational fact: the scan runs on a remote Kali machine. However, it omits run-time traits like expected duration, noisiness/intrusiveness, timeouts, or whether results are streamed or returned at completion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and resource, with the discovery outcome second. No filler, though it is brief enough that it could have afforded one more sentence of routing guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter brute-force tool with no annotations and no output schema, the description covers the basics but leaves gaps around authorization assumptions, runtime expectations, and result format. Adequate minimum viability, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters including mode semantics and defaults. The description adds no parameter-level detail beyond the mode list, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (run Gobuster enumeration) and resource (directory/file/subdomain targets), and names the three discovery outcomes (hidden paths, files, virtual hosts). It implicitly separates itself from nmap_scan and ffuf_fuzz by naming Gobuster's modes, but never explicitly contrasts with the similarly-scoped ffuf_fuzz sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this over the closely related ffuf_fuzz tool, nor any prerequisites (e.g., needing a valid target, being authorized). The description only describes what the tool does, leaving the agent to infer when it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hydra_attackC

Run Hydra password brute-force/dictionary attack against a target service on the remote Kali machine. Supports SSH, FTP, HTTP, SMB, and many other protocols.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoOverride the default port for the service
targetYesTarget IP address or hostname. Example: "192.168.1.10"
serviceYesTarget service/protocol to attack
threadsNoNumber of parallel attack threads. Default: 16
passwordNoSingle password to try. Mutually exclusive with password_list.
usernameNoSingle username to try. Mutually exclusive with username_list.
password_listNoPath to password wordlist on Kali machine. Default: /usr/share/wordlists/rockyou.txt/usr/share/wordlists/rockyou.txt
username_listNoPath to username wordlist on Kali machine. Example: "/usr/share/wordlists/usernames.txt"
http_form_paramsNoFor http-post-form: form path and parameters. Example: "/login.php:user=^USER^&pass=^PASS^:Invalid"

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden, and it does add one useful fact: the attack executes on a remote Kali machine, not locally. However, it never warns that brute-forcing is noisy, may trigger account lockouts or IDS alarms, requires explicit authorization, or can take arbitrarily long. For a high-risk offensive tool these omissions are significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the action front-loaded before the protocol coverage. Nothing needs to be cut and nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter, unannotated, no-output-schema offensive tool, the description is thin. It says nothing about what a successful run returns (recovered credentials?), the time cost, lockout risk, or any safety/authorization expectation, all of which an agent needs before invoking a password brute-forcer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each of the nine parameters documented in the schema itself, so this is a baseline 3. The description's protocol list loosely corresponds to the 'service' enum but adds no syntax or usage detail beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific tool, action, and resource: 'Run Hydra password brute-force/dictionary attack against a target service.' It also lists supported protocols, which is enough for an agent to distinguish it from siblings like nmap_scan or sqlmap_scan. It stops short of explicitly contrasting itself with any sibling by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives (e.g., metasploit_exec, which also has credential attack modules) and no stated prerequisites such as authorization, scope, or network reachability of the target. The agent is left to infer context entirely from the tool's name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

metasploit_execB

Execute a Metasploit Framework module non-interactively on the remote Kali machine via msfconsole. Runs a single module with provided options and exits cleanly. Only for authorized penetration testing engagements.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesFull module path. Example: "exploit/multi/handler" or "auxiliary/scanner/portscan/tcp"
optionsYesModule options as key-value pairs. Example: {"RHOSTS": "192.168.1.10", "RPORT": "445"}
payloadNoPayload to use with exploit modules. Example: "windows/x64/meterpreter/reverse_tcp"
run_commandNo"run" or "exploit" executes the module, "check" only tests if the target is vulnerablerun

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that execution is non-interactive, runs a single module, and exits cleanly, which is useful behavioral context. However, it says nothing about required privileges, side effects on the target, timeout behavior, or whether the output is captured, leaving materially important traits undisclosed for a remote exploitation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and execution context, followed by a scoping constraint. Efficient and free of filler, though the final authorization sentence could arguably be considered boilerplate rather than tool-selection-relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter remote exploitation tool with no annotations and no output schema, the description covers purpose, method, and authorization scope. It omits operational expectations an agent would need to call it safely and correctly, such as session handling, expected output, and error behavior. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters including examples and the run_command enum. The description adds no parameter-level detail beyond what the schema provides. Per the rubric baseline, this is a 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Execute') and resource ('Metasploit Framework module') plus the execution context (non-interactively on remote Kali via msfconsole). It is distinguishable from siblings like nmap_scan or sqlmap_scan, but it does not explicitly contrast with shell_exec, which could also run arbitrary commands. Clear purpose, but sibling differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides the authorization constraint ('Only for authorized penetration testing engagements') and specifies single-module non-interactive execution, implying when to use it. However, it gives no explicit when-to-use vs alternatives guidance, such as when to pick this over shell_exec or sqlmap_scan. Usage context is implied but not fully delineated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nikto_scanA

Run a Nikto web server vulnerability scan against a target URL on the remote Kali machine. Detects dangerous files, outdated software, and common web server misconfigurations.

ParametersJSON Schema
NameRequiredDescriptionDefault
sslNoForce SSL/TLS even on non-443 ports
urlYesTarget URL including scheme. Example: "http://192.168.1.10" or "https://target.example.com"
portNoOverride the default port derived from the URL scheme (80/443)
extra_argsNoAdditional nikto flags. Example: "-Tuning 1" to limit tests. No shell metacharacters.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that execution happens on a remote Kali host and that it probes for dangerous files and misconfigurations, but says nothing about intrusiveness, scan duration, authentication/network prerequisites, or that extra_args can meaningfully change behavior. Some context is added, but key operational traits are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and target, followed by the finding categories. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter scanning tool with no annotations and no output schema, the description covers purpose and detection scope but omits runtime expectations, safety profile, and how to interpret results. Adequate as a minimum-viable definition, with clear gaps for an agent that must decide between it and nine sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents url, port, ssl, and extra_args with examples. The description adds no parameter-level detail beyond the schema, which is the baseline-3 case when structured fields do the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific tool (Nikto), a specific verb (run), a specific resource (web server vulnerability scan), and the execution location (remote Kali machine), plus the classes of findings it produces. This distinguishes it from nmap_scan (port scanning), whatweb_fingerprint (fingerprinting), and sqlmap_scan (SQL injection).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what the tool does but never states when to reach for it versus siblings like nmap_scan, whatweb_fingerprint, or the generic dast_scan. There are no prerequisites, no exclusions, and no routing guidance for an agent choosing among ten scan/attack tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nmap_scanB

Run an nmap port scan against a target host or network on the remote Kali machine. Use for reconnaissance: discovering open ports, running services, and OS detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
portsNoPort specification to override scan_type defaults. Example: "80,443" or "1-1024"
targetYesTarget IP address, hostname, or CIDR range. Example: "192.168.1.1" or "10.0.0.0/24"
scan_typeNoScan profile: "quick" (fast top-100 ports), "service" (service/version detection), "os" (OS fingerprinting), "full" (all 65535 ports), "stealth" (SYN scan, less noisy), "udp" (UDP scan)quick
extra_argsNoAdditional nmap flags. Example: "--script vuln" or "-sC". Must not include target or port flags.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, but it discloses almost nothing beyond recon intent and remote execution. It doesn't state noise/detectability level, authorization requirements, runtime or timeout behavior, or whether a scan may be intrusive — all material for a port-scanning tool. The 'remote Kali machine' detail is the one useful behavioral note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core action front-loaded and the reconnaissance use case following. No filler, though it could have used the space to note a behavioral constraint instead of restating the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter tool with full schema coverage and no output schema, the description covers what the tool does and roughly when to use it. It is adequate but leaves behavioral gaps (detectability, auth, timing) unaddressed for a network-scanning operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the enum for scan_type is fully documented in the schema, including profile meanings and the ports override. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Run an nmap port scan against a target host or network on the remote Kali machine,' naming the exact tool and execution environment. An agent can distinguish it from siblings like nikto_scan, sqlmap_scan, or gobuster_scan by the resource and method, though it doesn't explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use for reconnaissance: discovering open ports, running services, and OS detection' gives a clear use context. However, it names no alternatives (e.g., whatweb_fingerprint for web fingerprinting) and states no exclusions, so routing decisions between siblings are only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sast_scanA

Perform Static Application Security Testing (SAST) on a local code directory. Syncs code to Kali Linux via SFTP, runs Semgrep (multi-language), Bandit (Python), Gitleaks (secrets), and Graudit (language-targeted pattern matching) in parallel, then generates a versioned consolidated security report saved to the Kali machine. Uploaded source code is deleted after scanning.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsNoWhich SAST tools to run. Defaults to all four. Bandit is automatically skipped when no Python files are found regardless of this setting.
local_pathYesAbsolute path to the local code directory to scan. Example: "/Users/me/projects/myapp"
project_nameYesProject name used to organise versioned reports. Example: "myapp" or "backend-api"
exclude_patternsNoFile/directory names to exclude from upload and scanning.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that source is synced off-machine to Kali over SFTP, that the consolidated report is written to the Kali host (not locally), and that uploaded source is deleted after scanning — materially important side effects. It omits prerequisites such as Kali connectivity/credentials and failure behavior, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences with the core action front-loaded, followed by execution mechanics and cleanup semantics. No filler or restatement of the tool name, and every clause conveys operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that depends on external infrastructure (Kali host, SFTP) there are no annotations or output schema to fill gaps, and the description never says what the caller receives back, where the versioned report lives, or what happens on connection failure. It covers the pipeline well but leaves the calling contract and prerequisites underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters including the tool enum and Bandit's Python-skip behavior. The description only echoes the engine list and adds no parameter-level meaning, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Perform SAST) plus precise resource (a local code directory), and the description enumerates the exact engines run (Semgrep, Bandit, Gitleaks, Graudit). This cleanly separates it from the dynamic/network siblings like dast_scan, nikto_scan, and nmap_scan without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Local code directory" implies the usage context (source you own, on disk) versus the remote-target siblings, but the description never explicitly states when to prefer this over dast_scan or names any alternative. No prerequisites or exclusions are given, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shell_execA

Execute an arbitrary shell command on the remote Kali Linux machine. WARNING: This is an escape hatch for advanced scenarios — prefer specific tools. Only use for commands not covered by dedicated tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe exact shell command to execute on the Kali machine. Example: "cat /etc/os-release" or "which python3"
timeout_msNoOverride the default timeout in milliseconds (default: 300000)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It adds a warning that this is an escape hatch and should be avoided when dedicated tools suffice, which is useful context. However, it does not disclose critical behavioral traits for arbitrary shell execution, such as privilege level, potential destructiveness, reversibility, or output handling, leaving significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with zero waste, front-loading the core action and following immediately with the critical usage warning and restriction. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-complexity tool like arbitrary shell execution with no annotations and no output schema, the description covers purpose and usage guidance well. However, it does not explain return values, error behavior, or execution context (e.g., whether output is captured, how errors are surfaced), which an agent would need to call it correctly without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters ('command' and 'timeout_ms') are already well documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Execute') and resource ('arbitrary shell command on the remote Kali Linux machine'), and it distinguishes itself from the many specific scanning siblings by framing itself as an escape hatch to be used only when dedicated tools don't cover the need. An agent can immediately tell what this tool does and when it is appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool ('escape hatch for advanced scenarios', 'commands not covered by dedicated tools') and when not to ('prefer specific tools'). The alternative is named as a category ('specific tools') even if individual siblings aren't listed, which is sufficient to route correctly given the sibling set is visible elsewhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sqlmap_scanC

Run sqlmap SQL injection testing against a target URL on the remote Kali machine. Detects and exploits SQL injection vulnerabilities in web applications.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL to test. Example: "http://target.example.com/page?id=1"
dataNoPOST data string for testing POST parameters. Example: "username=test&password=test"
dbmsNoForce testing against a specific DBMS to speed up detection
dumpNoAttempt to dump database tables after finding injectable parameters
riskNoRisk level (1-3). Higher risks include more dangerous tests (e.g., time-based). Default: 1
levelNoTest level (1-5). Higher levels test more payloads and parameters. Default: 1

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden and mostly fails it. It hints at active exploitation ('exploits SQL injection vulnerabilities') and notes execution on a remote Kali machine, but says nothing about authorization requirements, typical runtime, or that dump/risk=3 can extract data or stress the target.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and target, and free of filler. There is mild redundancy in restating 'SQL injection' twice (testing vs. detection/exploitation), which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a potentially destructive offensive-security tool with no annotations and no output schema, the description is too thin: it does not describe what results are returned, how long a scan typically takes, or any safety/authorization caveat. The rich parameter schema compensates partially, but the behavioral picture remains incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (url, data, dbms, dump, risk, level) are already documented with examples and defaults in the schema. The description adds no parameter meaning beyond that, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific tool (sqlmap), a specific vulnerability class (SQL injection), and the target (a URL), which cleanly separates it from nmap_scan, gobuster_scan, and whatweb_fingerprint. It does not, however, explicitly contrast itself with the closest sibling, dast_scan, leaving that distinction to the agent's own knowledge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance: nothing says this should follow reconnaissance, that the URL must contain testable parameters, or when dast_scan/nikto would be the better choice. The agent must infer routing entirely from the tool name and the single sentence of purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whatweb_fingerprintB

Run WhatWeb web technology fingerprinting against a target URL on the remote Kali machine. Identifies web technologies, CMS, frameworks, server software, and plugin versions.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL to fingerprint. Example: "http://target.example.com"
aggressionNoAggression level: 1=stealthy (single request), 2=unused, 3=aggressive (try many paths), 4=heavy. Default: 1

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does add one genuinely useful fact – execution happens on a remote Kali machine – but it omits that this is a read-only reconnaissance probe, that it generates live requests to the target, and that the aggression parameter controls how noisy/detectable the scan is. Those are the traits an agent most needs before invoking it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both earning their place: the first front-loads the verb, resource, and execution environment; the second lists the identification targets. No filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Parameters are fully documented in the schema, but there is no output schema, so the description should ideally say something about what is returned (report format, findings structure) and when this tool fits into a recon workflow. With no annotations and no output schema, the definition is adequate but leaves real gaps for an agent deciding among the scanning siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both params (url and aggression) are already documented in the schema, including the aggression level semantics. The description adds no parameter-level meaning beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Run WhatWeb web technology fingerprinting against a target URL") and enumerates what it identifies (technologies, CMS, frameworks, server software, plugin versions). This clearly separates it from vulnerability-adjacent siblings like nikto_scan or nmap_scan, though the description never names or contrasts those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to choose this tool over nmap_scan, nikto_scan, or gobuster_scan, nor any prerequisites or when-not-to-use conditions. An agent must infer that this is the passive fingerprinting option purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.0
    • First observeddast_scan
    • First observedffuf_fuzz
    • First observedgobuster_scan
    • First observedhydra_attack
    • First observedmetasploit_exec
    • First observednikto_scan
    • First observednmap_scan
    • First observedsast_scan
    • First observedshell_exec
    • First observedsqlmap_scan
    • First observedwhatweb_fingerprint

TDQS

A3.6/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have clearly distinct purposes tied to specific security tools or scan types. However, gobuster_scan and ffuf_fuzz overlap in web content/vhost enumeration, and dast_scan partially overlaps with nikto_scan and sqlmap_scan for web vulnerability detection. shell_exec is generic but explicitly framed as an escape hatch.

Naming Consistency5/5

All tool names use consistent snake_case and follow a predictable tool/object + action pattern (e.g., nmap_scan, sqlmap_scan, hydra_attack, metasploit_exec). The differing action suffixes reflect actual function without breaking the naming convention.

Tool Count5/5

Eleven tools is well-scoped for a remote Kali penetration-testing bridge. Each tool covers a meaningful stage or capability, and the set avoids being either thin or bloated.

Completeness4/5

The set covers reconnaissance, scanning, enumeration, fingerprinting, brute force, exploitation, SAST, DAST, and a generic shell escape. Minor gaps remain for dedicated post-exploitation, pivoting, credential cracking, or report retrieval, though metasploit_exec and shell_exec allow workarounds.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to execute penetration testing commands and security tools on Kali Linux remotely. Supports automated reconnaissance, vulnerability scanning, and CTF solving through integration with 25+ offensive security tools like nmap, gobuster, and nuclei.
    16
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform penetration testing and security assessments by exposing 60+ Kali Linux security tools including network scanning, web security testing, password cracking, exploitation frameworks, and OSINT capabilities through an AI-friendly interface.
    2
    MIT