nuclei_mcp
by kannanprabu
README.md
# nuclei_mcp
A standalone Python MCP (Model Context Protocol) server that wraps [Nuclei](https://github.com/projectdiscovery/nuclei), enabling Claude Desktop to run real vulnerability scans through natural language.
> Kannan Prabu Ramamoorthy & Swarup Natukula
---
## Demo
Type this in Claude Desktop:
```
Run a nuclei scan on https://scanme.sh
```
**Expected output — 19 findings in ~7 seconds:**
```
[nuclei] 19 finding(s) on https://scanme.sh:
[INFO] OpenSSH Service - Detect | matched: scanme.sh:22 | template: openssh-detect
[INFO] SSH Server Software Enumeration | matched: scanme.sh:22 | template: ssh-server-enumeration
[INFO] SSH Password-based Authentication | matched: scanme.sh:22 | template: ssh-password-auth
[INFO] SSH SHA-1 HMAC Algorithms Enabled | matched: scanme.sh:22 | template: ssh-sha1-hmac-algo
[INFO] Deprecated TLS Detection | matched: scanme.sh:443 | template: deprecated-tls
[LOW] Weak Cipher Suites Detection | matched: scanme.sh:443 | template: weak-cipher-suites
[LOW] Self Signed SSL Certificate | matched: scanme.sh:443 | template: self-signed-ssl
[INFO] Mismatched SSL Certificate | matched: scanme.sh:443 | template: mismatched-ssl-certificate
[INFO] TLS Version - Detect | matched: scanme.sh:443 | template: tls-version
[INFO] CAA Record | matched: scanme.sh | template: caa-fingerprint
[INFO] NS Record Detection | matched: scanme.sh | template: nameserver-fingerprint
[INFO] AAAA Record - IPv6 Detection | matched: scanme.sh | template: aaaa-fingerprint
...
```
---
## MCP Tools
| Tool | Description | Speed |
|------|-------------|-------|
| `nuclei_scan` | Full scan with severity + template tag filters | ~7s (fast tags) |
| `nuclei_basic_scan` | Quick scan, fast defaults (ssl,ssh,dns) | ~7s |
| `nuclei_list_templates` | Browse templates by tag | instant |
---
## Requirements
- macOS (Apple Silicon M1/M2/M3/M4) — tested on M4 Pro, macOS Tahoe
- [Claude Desktop](https://claude.ai/download)
- Python 3.8+
- curl (pre-installed on macOS)
---
## Installation
### Option A — Automated (recommended)
```bash
git clone https://github.com/kannanprabu/nuclei_mcp.git
cd nuclei_mcp
chmod +x setup.sh
./setup.sh
```
The script will:
1. Install Nuclei binary (official arm64 binary — NOT brew)
2. Create Python venv and install MCP library
3. Print your exact Claude Desktop config to copy-paste
### Option B — Manual Step by Step
#### Step 1 — Install Nuclei
> ⚠️ **Do NOT use `brew install nuclei`** — the Homebrew bottle crashes on Apple Silicon with a SIGSEGV/cgo bug. Use the official binary:
```bash
# Download official arm64 binary
curl -L https://github.com/projectdiscovery/nuclei/releases/download/v3.3.9/nuclei_3.3.9_macOS_arm64.zip -o /tmp/nuclei.zip
# Install
unzip /tmp/nuclei.zip -d /tmp/nuclei-bin/
chmod +x /tmp/nuclei-bin/nuclei
sudo mv /tmp/nuclei-bin/nuclei /usr/local/bin/nuclei
# Fix Gatekeeper if needed
xattr -d com.apple.quarantine /usr/local/bin/nuclei
# Verify
nuclei -version
# Update to latest + download templates
sudo nuclei -update
nuclei -update-templates
```
#### Step 2 — Clone repo and set up Python
```bash
git clone https://github.com/kannanprabu/nuclei_mcp.git
cd nuclei_mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
#### Step 3 — Get your exact Python path
```bash
source venv/bin/activate
which python3
# Example: /Users/yourname/nuclei_mcp/venv/bin/python3
```
#### Step 4 — Configure Claude Desktop
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"nuclei-scanner": {
"command": "/Users/yourname/nuclei_mcp/venv/bin/python3",
"args": ["/Users/yourname/nuclei_mcp/nuclei-server.py"]
}
}
}
```
Replace `/Users/yourname` with your actual path from Step 3.
#### Step 5 — Restart Claude Desktop
```bash
pkill -x "Claude"
open -a Claude
```
#### Step 6 — Test it
In Claude Desktop, type:
```
Run a nuclei scan on https://scanme.sh
```
You should see 19 findings in ~7 seconds.
---
## Demo Prompts
```
# Quick scan
Run a nuclei basic scan on https://scanme.sh
# Scan with all severities
Run a nuclei scan on https://scanme.sh
# Target specific vulnerability classes
Run a nuclei scan on https://scanme.sh with templates ssl,ssh,dns
# Browse templates
List nuclei templates for tag "ssh"
List nuclei templates for tag "cve"
# Scan your own authorized target
Run a nuclei scan on https://yourauthorizedtarget.com
```
---
## Troubleshooting
### `SIGSEGV: segmentation violation` when running nuclei
This is the `go-m1cpu` cgo bug in Homebrew's nuclei bottle. Use the official binary from Step 1.
### `ModuleNotFoundError: No module named 'mcp'`
You're using system Python instead of the venv:
```bash
source venv/bin/activate
pip install -r requirements.txt
# Make sure config uses venv python path
```
### Tools don't appear in Claude Desktop
- Validate your JSON (no trailing commas)
- Confirm python path in config matches `which python3` inside the venv
- Fully quit Claude Desktop with `Cmd+Q`, then reopen
- Check logs: `~/Library/Logs/Claude/`
### Scan times out
The default `ssl,ssh,dns` tags finish in ~7 seconds. If you override with broader tags like `misconfig` or remove the tag filter, scans can take 3-4 minutes and will exceed Claude Desktop's MCP timeout. Stick to the fast tag set for demos.
### No findings returned
```bash
# Verify nuclei works standalone
nuclei -target https://scanme.sh -tags ssl,ssh,dns -no-color
# Should return 19 findings
```
---
## Related
- [BsidesMCPDemo](https://github.com/kannanprabu/BsidesMCPDemo) — main workshop repo with 7 pentest tools
- [Nuclei](https://github.com/projectdiscovery/nuclei) — ProjectDiscovery's vulnerability scanner
- [MCP Protocol](https://modelcontextprotocol.io) — Model Context Protocol docs
- [scanme.sh](https://scanme.sh) — Official ProjectDiscovery scan-me target
---
## License
MIT
---
*Tested on macOS Tahoe, Apple Silicon M4 Pro, March 2026.*
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues