Loading...
Loading...
Use FuzzingLabs MCP Security Hub to integrate offensive security tools (Nmap, Nuclei, SQLMap, Ghidra, etc.) with AI assistants via Docker-based MCP servers
npx skill4agent add aradotso/mcp-skills mcp-security-hubSkill by ara.so — MCP Skills collection
git clone https://github.com/FuzzingLabs/mcp-security-hub
cd mcp-security-hubdocker-compose builddocker-compose build nmap-mcp nuclei-mcp sqlmap-mcp~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"nmap": {
"command": "docker",
"args": ["run", "-i", "--rm", "--cap-add=NET_RAW", "nmap-mcp:latest"]
},
"nuclei": {
"command": "docker",
"args": ["run", "-i", "--rm", "nuclei-mcp:latest"]
},
"sqlmap": {
"command": "docker",
"args": ["run", "-i", "--rm", "sqlmap-mcp:latest"]
},
"gitleaks": {
"command": "docker",
"args": ["run", "-i", "--rm", "-v", "${HOME}/projects:/app/target:ro", "gitleaks-mcp:latest"]
},
"radare2": {
"command": "docker",
"args": ["run", "-i", "--rm", "-v", "${HOME}/binaries:/samples:ro", "radare2-mcp:latest"]
}
}
}# Start the server
docker-compose up nmap-mcp -d
# Example prompts:
# "Scan 192.168.1.0/24 for open ports"
# "Perform service detection on 10.0.0.5"
# "Run aggressive scan with OS detection on example.com"docker-compose up whatweb-mcp -d
# Example prompts:
# "Identify technologies used on example.com"
# "Fingerprint the CMS on this website"docker-compose up masscan-mcp -d
# Example prompts:
# "Fast scan ports 1-65535 on 10.0.0.0/16"
# "Scan for web servers across this entire subnet"docker-compose up nuclei-mcp -d
# Example prompts:
# "Scan example.com for CVEs and misconfigurations"
# "Check this site for exposed sensitive files"
# "Run nuclei templates for authentication bypass"docker-compose up sqlmap-mcp -d
# Example prompts:
# "Test https://example.com/page?id=1 for SQL injection"
# "Check if this login form is vulnerable to SQLi"
# "Enumerate databases on this vulnerable endpoint"docker-compose up ffuf-mcp -d
# Example prompts:
# "Fuzz directories on example.com"
# "Find hidden API endpoints on this application"
# "Brute force parameter names for this URL"docker run -i --rm -v /path/to/binaries:/samples:ro radare2-mcp:latest
# Example prompts:
# "Disassemble /samples/malware.exe and find main function"
# "Analyze this binary for suspicious strings"
# "Decompile the authentication routine"docker-compose up binwalk-mcp -d
# Example prompts:
# "Extract filesystem from this firmware image"
# "Scan for embedded files in this binary"
# "Analyze this router firmware for security issues"docker-compose up yara-mcp -d
# Example prompts:
# "Scan this file for malware signatures"
# "Check if this binary matches ransomware patterns"docker run -i --rm -v /path/to/repo:/app/target:ro gitleaks-mcp:latest
# Example prompts:
# "Scan this repository for hardcoded secrets"
# "Find API keys in the commit history"
# "Check for AWS credentials in the codebase"docker-compose up trivy-mcp -d
# Example prompts:
# "Scan this Docker image for vulnerabilities"
# "Audit my Terraform files for misconfigurations"
# "Check this Kubernetes manifest for security issues"docker-compose up prowler-mcp -d
# Example prompts:
# "Audit my AWS account for security best practices"
# "Check Azure for compliance violations"
# "Scan GCP project for misconfigurations"mcp-security-hub/
├── reconnaissance/
│ ├── nmap-mcp/
│ ├── masscan-mcp/
│ ├── whatweb-mcp/
│ └── ...
├── web-security/
│ ├── nuclei-mcp/
│ ├── sqlmap-mcp/
│ ├── ffuf-mcp/
│ └── ...
├── binary-analysis/
│ ├── radare2-mcp/
│ ├── binwalk-mcp/
│ ├── yara-mcp/
│ └── ...
├── cloud-security/
│ ├── trivy-mcp/
│ ├── prowler-mcp/
│ └── ...
├── secrets/
│ └── gitleaks-mcp/
├── docker-compose.yml
└── examples/
└── .mcp.json (full config template)# Reconnaissance stack
docker-compose up nmap-mcp whatweb-mcp masscan-mcp -d
# Web security stack
docker-compose up nuclei-mcp sqlmap-mcp ffuf-mcp -d
# Full suite
docker-compose up -d
# Check status
docker-compose ps
# View logs
docker-compose logs -f nmap-mcp
# Stop services
docker-compose down# 1. Build required images
docker-compose build nmap-mcp whatweb-mcp
# 2. Start services
docker-compose up nmap-mcp whatweb-mcp -d
# 3. In Claude Desktop, use natural language:
# "Scan 192.168.1.0/24 for web servers, then fingerprint their technologies"# Build and start
docker-compose build nuclei-mcp sqlmap-mcp ffuf-mcp
docker-compose up nuclei-mcp sqlmap-mcp ffuf-mcp -d
# Prompt:
# "Assess example.com for vulnerabilities: scan for CVEs, test for SQL injection, and fuzz directories"# Mount your binaries directory
docker run -i --rm -v /path/to/samples:/samples:ro radare2-mcp:latest &
docker-compose up binwalk-mcp yara-mcp capa-mcp -d
# Prompt:
# "Analyze /samples/suspicious.exe: extract strings, identify capabilities, and scan for malware"# Scan repository
docker run -i --rm \
-v $(pwd):/app/target:ro \
gitleaks-mcp:latest
# In automation:
# "Scan the current repository for hardcoded secrets and API keys"{
"mcpServers": {
"radare2": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/home/user/malware:/samples:ro",
"radare2-mcp:latest"
]
},
"gitleaks": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/home/user/projects:/app/target:ro",
"gitleaks-mcp:latest"
]
}
}
}{
"mcpServers": {
"nmap": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--cap-add=NET_RAW",
"nmap-mcp:latest"
]
}
}
}{
"mcpServers": {
"shodan": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "SHODAN_API_KEY",
"shodan-mcp:latest"
],
"env": {
"SHODAN_API_KEY": "${SHODAN_API_KEY}"
}
},
"virustotal": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "VT_API_KEY",
"virustotal-mcp:latest"
],
"env": {
"VT_API_KEY": "${VT_API_KEY}"
}
}
}
}# Navigate to server directory
cd reconnaissance/nmap-mcp
# Build with Docker
docker build -t nmap-mcp:latest .
# Run directly
docker run -i --rm --cap-add=NET_RAW nmap-mcp:latest
# Or use docker-compose from root
cd ../..
docker-compose build nmap-mcp
docker-compose run --rm nmap-mcpmcpusercap_drop: ALL:rosecurity_opt: no-new-privileges:trueFROM python:3.11-alpine
# Create non-root user
RUN addgroup -g 1000 mcpuser && \
adduser -D -u 1000 -G mcpuser mcpuser
# Install tool
RUN apk add --no-cache nmap nmap-scripts
# Switch to non-root
USER mcpuser
WORKDIR /app
# Copy MCP server
COPY server.py .
CMD ["python", "server.py"]docker images | grep mcp# Validate JSON
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json | python -m json.tooldocker psNET_RAW{
"command": "docker",
"args": ["run", "-i", "--rm", "--cap-add=NET_RAW", "nmap-mcp:latest"]
}{
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/absolute/path/to/files:/samples:ro",
"radare2-mcp:latest"
]
}docker-compose logs nmap-mcp
docker logs $(docker ps -aq --filter name=nmap-mcp)docker-compose ps
docker inspect nmap-mcp:latestexport SHODAN_API_KEY="your-key-here"
export VT_API_KEY="your-key-here"
# Then start Claude Desktop from the same shell
open -a "Claude"{
"mcpServers": {
"shodan": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "SHODAN_API_KEY", "shodan-mcp:latest"],
"env": {
"SHODAN_API_KEY": "${SHODAN_API_KEY}"
}
}
}
}version: '3.8' # or higherdocker-compose build --no-cache nmap-mcp
docker system prune -anew-category/
└── newtool-mcp/
├── Dockerfile
├── server.py
├── requirements.txt
└── README.mdserver.py#!/usr/bin/env python3
import json
import subprocess
import sys
def handle_request(request):
"""Handle MCP protocol requests"""
method = request.get("method")
params = request.get("params", {})
if method == "tools/list":
return {
"tools": [
{
"name": "scan_target",
"description": "Scan target with tool",
"inputSchema": {
"type": "object",
"properties": {
"target": {"type": "string"}
},
"required": ["target"]
}
}
]
}
elif method == "tools/call":
tool_name = params.get("name")
arguments = params.get("arguments", {})
if tool_name == "scan_target":
result = subprocess.run(
["tool", "scan", arguments["target"]],
capture_output=True,
text=True,
timeout=300
)
return {"content": [{"type": "text", "text": result.stdout}]}
return {"error": "Unknown method"}
if __name__ == "__main__":
for line in sys.stdin:
request = json.loads(line)
response = handle_request(request)
print(json.dumps(response))
sys.stdout.flush()User: "Perform a full security assessment of example.com"
Claude orchestrates:
1. nmap-mcp: Port scan and service detection
2. whatweb-mcp: Technology fingerprinting
3. nuclei-mcp: CVE and misconfiguration scanning
4. sqlmap-mcp: SQL injection testing on discovered forms
5. ffuf-mcp: Directory and file fuzzing
6. gitleaks-mcp: Check if .git directory exposed and scan for secrets
Results consolidated into comprehensive report.