A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
pentestMCP: AI-Powered Penetration Testing via MCP, an MCP designed for penetration testers.
pentestMCP provides a powerful bridge between Large Language Models (LLMs) and practical penetration testing tools through the Model Context Protocol (MCP). This project functions as an MCP Server, exposing a curated suite of over 20 standard security assessment utilities (Nmap, Nuclei, ZAP, SQLMap, etc.) as callable 'tools'. This allows AI agents within MCP-compatible clients (like Claude Desktop or specific VS Code setups) to leverage these utilities for automated and interactive security analysis tasks.
The goal is to enable natural language control over complex security workflows, making pentesting capabilities more accessible and integrated into AI-driven environments. This work is inspired by Laurie Kirk's GhidraMCP.
https://github.com/user-attachments/assets/930c879a-5cb4-478a-b033-f30df0e770a6
pentestMCP strictly adheres to the MCP specification, functioning solely as an MCP Server. It does not embed or directly communicate with any specific LLM. The interaction flow is mediated by an MCP Client Host application:
stdio brokered by Docker), manages user interaction, and interfaces with a chosen LLM.tools/call requests from the Client Host, executes the corresponding underlying tool (e.g., nmap), and returns the results.The server is built using the Python MCP SDK (mcp.server.fastmcp.FastMCP) and features:
threading.Semaphore limits simultaneous execution of resource-intensive scans.sequenceDiagram
participant User
participant ClientHost as Client Host (Claude, VS Code)
participant LLM
participant PentestMCP as pentestMCP Server (Docker via stdio)
participant ExtTool as External Tool (e.g., Nmap)
User->>ClientHost: "Perform Nmap service scan on scanme.nmap.org"
ClientHost->>PentestMCP: tools/list Request
PentestMCP-->>ClientHost: List of Tools (including 'run_nmap_scan')
ClientHost->>LLM: User Prompt + Available Tools Description
LLM-->>ClientHost: Decision: Use 'run_nmap_scan', target='scanme.nmap.org', args='-sV'
ClientHost->>PentestMCP: tools/call (name='run_nmap_scan', args={...})
Note over PentestMCP, ExtTool: pentestMCP executes 'nmap -sV scanme.nmap.org' internally
PentestMCP-->>ClientHost: tools/call Result (pid, output_path for async or direct output)
ClientHost->>LLM: Tool Execution Result
LLM-->>ClientHost: Formulate Final Response
ClientHost-->>User: "Nmap scan launched/completed. Results..."
stdio server launching to utilize complex pentesting workflows.git clone step).run_zap_*, run_active_scan_*, run_ajax_*). This ZAP instance needs to be running and network-accessible from inside the pentestMCP Docker container (see Client Host Integration section for configuration).We recommend using the pre-built Docker image for the fastest and most reliable setup.
Using the pre-built image avoids local build times and ensures all tools (like gofang, nmap, and nuclei) are correctly installed without dependency issues.
docker pull ramgameer/pentest-mcp:latest
ℹ️ Note: Depending on your environment, you may need to authenticate or ensure the Docker daemon is running.
⚠️ IMPORTANT: Building locally is currently most efficient and supported on Linux environments.
If you wish to modify the server's code, use the absolute latest version, or the pre-built image is unavailable, you can build the Docker image locally.
Clone the repository:
git clone https://github.com/ramkansal/pentestMCP.git
cd pentestMCP
Build the Docker image:
docker build -t pentest-mcp-server:custom .
Install SecLists (Optional but highly recommended):
💡 Tip: Several tools (like Gobuster and Fuzzing utilities) rely on massive wordlists. You must clone the SecLists repo for these specific scans to function effectively.
git clone https://github.com/danielmiessler/SecLists.git seclists
pentestMCP runs inside Docker and communicates with the Client Host via stdio. You configure your host (e.g., Claude Desktop, VS Code) to launch the server using docker run -i ....
Locate/Create Config File:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonEdit Config: Add/update the mcpServers section. Use the correct image name (ramgameer/pentest-mcp:latest or your custom tag) .
{
"mcpServers": {
"pentestMCP": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ramgameer/pentest-mcp:latest"
]
}
}
}
Restart Claude Desktop fully.
Verify: Look for the icon. Clicking it should list the pentesting tools.
Interact: Ask Claude to use the tools (see examples in the draft).
Integration requires configuring VS Code's settings to define the MCP server for Copilot Chat agents that support MCP.
Install Prerequisite: Ensure Github Copilot extension and relevant GitHub Copilot extensions are installed.
Configure VS Code Settings: Open your User or Workspace settings.json file (Command Palette: "Preferences: Open Settings (JSON)"). Add the MCP server configuration under the appropriate path (this path might change depending on the specific Copilot Chat agent implementation, check its documentation):
"pentest-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ramgameer/pentest-mcp:latest"
]
}
Reload VS Code / Agent: Restart VS Code or use relevant commands to reload the Copilot agent's configuration for the changes to take effect. Consult the specific Copilot agent's documentation for details.
Interact: Use the Copilot Chat interface, potentially invoking tools via mentions if the agent supports it, or let the agent invoke them based on your prompts.
The server exposes a variety of tools categorized by function:
run_subfinder: Discovers subdomains using ProjectDiscovery's Subfinder.launch_nmap_scan / fetch_nmap_results: Executes Nmap network scans and retrieves results asynchronously.run_gobuster_scan / check_gobuster_status: Performs directory/file/DNS bruteforcing with Gobuster asynchronously.launch_gofang_scan / fetch_gofang_results: Runs gofang, an all-in-one web crawler with extraction superpowers.run_harvester / check_harvester_status: Runs theHarvester asynchronously for OSINT gathering (emails, hosts, ips).run_dig_tool: Executes DNS dig queries.fetch_whois_data: Retrieves WHOIS information for a domain.run_curl_tool: Executes cURL commands for HTTP interaction.launch_nuclei_scan / fetch_nuclei_results: Runs template-based vulnerability scans with ProjectDiscovery's Nuclei asynchronously.launch_arjun_scan / fetch_arjun_results: Locates hidden HTTP parameters using Arjun.run_searchsploit: Searches the local Exploit-DB database using Searchsploit.run_sqlmap_tool / check_sqlmap_status: Executes SQLmap for SQL injection testing asynchronously.ad_* tools):
ad_user_enum, ad_shares_enum, ad_smb_signing_check, ad_certipy_enum, ad_ldap_dump, ad_bloodhound_collectad_asreproast, ad_kerberoast, ad_password_spray, ad_coerce_petitpotam, ad_coerce_printerbug, ad_responder_poison, ad_relay_setupad_check_credentials, ad_secrets_dump, ad_dcsyncappuser within Docker, but Docker itself runs with host privileges. Be cautious with tools that modify files or require elevated system access.-p 8888:8888), ensure your host firewall restricts access if the machine is on an untrusted network. The configured ZAP API key provides control over the instance.Contributions are highly encouraged! Fork the repository, create a feature branch, and submit a pull request. Please ensure adherence to ethical testing guidelines in all contributions. Bug reports and feature suggestions are welcome via GitHub Issues.
This project is distributed under the terms of the MIT License.
This software is intended SOLELY for educational purposes and authorized, ethical security testing. Any use against systems without explicit permission is strictly prohibited and illegal. The authors and contributors assume NO liability for misuse or damage resulting from this program. Use at your own risk and ensure compliance with all applicable laws and agreements.
Profound inspiration for this project comes from Laurie Kirk's groundbreaking work on GhidraMCP.
MCP server integration for DaVinci Resolve Studio
mcp-language-server gives MCP enabled clients access semantic tools like get definition, references, rename, and diagnos
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots