A Kali Linux MCP server providing AI assistants with access to security tools and pentesting capabilities
This server has 12 tools with significant quality gaps. Tool naming is inconsistent (session_* vs shannon_*), and descriptions vary widely in quality. Most critically, 4 tools (shannon_auth_session, shannon_browser, shannon_crawler, shannon_headers_audit) have complex schemas with multiple conditional parameters that lack clear documentation of dependencies. Error handling is absent, no guidance on retryability, user-fixable vs fatal errors, or recovery paths. Output schemas are not documented. Parameters like 'action' enums are present but lack descriptions of what each action does. Security concerns: shannon_exec and shannon_exploit expose arbitrary command execution with minimal guardrails. The server mixes session management (session_create, session_list, session_switch) with security testing tools, but the relationship between sessions and tool execution is unclear.
Create a new pentest session.
List all pentest sessions with metadata.
Switch to a different pentest session.
Manage authentication sessions for pentesting targets. Create, retrieve, list, delete, or build auth headers for JWT, cookie, or custom header-based authentication.
Execute Python/Playwright scripts in a headless browser for dynamic content testing, form interaction, and JavaScript-heavy application testing.
Crawl web applications to discover attack surface: URLs, endpoints, forms, API routes, and interesting paths. Supports passive, active, authenticated, and JavaScript-based crawling modes.
Stop and remove the Shannon Docker container. Call this when done with pentesting. Removes the running container and frees resources. Safe to call even if container is not running.
shannon_auth_session has 7 parameters with complex conditional logic (action enum determines which other params apply) but dependencies are not documented. LLMs cannot infer that 'create' action requires 'target' and 'session_type', while 'get' requires 'session_id'. This violates the param-relationships pattern.
shannon_exec and shannon_exploit accept arbitrary shell commands with no input validation, sanitization, or confirmation step. These are destructive tools (Risk: DESTRUCTIVE) that should require explicit confirmation or dry-run support to prevent catastrophic agent mistakes.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. For example, session_create should document what fields it returns (session_id, created_at, etc.) so agents can chain calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Start the Shannon Docker container. Call this before running any security tools. Ensures the shannon-tools Docker container is running. If already running, this is a no-op. The container uses --network host for direct access to target networks.
Execute any command inside the Shannon Docker container and return the real output. The container has pre-installed tools: nmap, sqlmap, nikto, subfinder, whatweb, gobuster, hydra, curl, wget, dig, whois, nuclei, ffuf, httpx, Chromium + Playwright, and more.
Execute exploitation commands inside Docker for active security testing and vulnerability exploitation.
Copy files from the Shannon Docker container to the host filesystem. Use this to extract screenshots, generated reports, scan results, or any other files created inside the Docker container during pentesting.
Audit security headers and CORS configuration on target URLs. Identifies missing security headers, weak CORS policies, and information disclosure vulnerabilities.
No error handling guidance. Tools do not document what errors are retryable, which are user-fixable, or what recovery steps to take. E.g., if shannon_crawler times out, should the agent retry with smaller depth, or is it fatal?
Relationship between session management (session_create/switch) and security tools (shannon_*) is undefined. Does shannon_exec run in the current session context? Can agents switch sessions mid-operation? This ambiguity breaks tool composition.