Wraps four security scanning tools (Nikto, Nuclei, Wapiti, shcheck) in an MCP interface for web application security testing. You get individual tools for server vulnerability scans, template-based CVE detection, app-level injection testing, and security header analysis, plus a full_scan that runs all four in parallel. Each tool takes a host and optional port, returns paginated results, and logs to SQLite so you can query execution history later. Ships as a Docker container that listens on HTTP and survives restarts without losing state. Intended for authorized penetration testing and security assessments where you need to coordinate multiple scanners through a conversational interface rather than CLI invocations.
A Model Context Protocol (MCP) server for web application security scanning.
docker run -p 127.0.0.1:8989:8989 tb0hdan/wass-mcp
Example command to add WASS-MCP server to Claude MCP clients:
claude mcp add wass-mcp --transport http http://127.0.0.1:8989
or Gemini:
gemini mcp add wass-mcp --transport http http://127.0.0.1:8989
Perform web server vulnerability scans using Nikto.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
host | string | Yes | Target hostname or IP address |
port | integer | No | Target port (default: 80) |
vhost | string | No | Virtual host header |
max_lines | integer | No | Maximum output lines |
offset | integer | No | Output line offset |
Example:
{
"host": "192.168.1.100",
"port": 443
}
Perform template-based vulnerability scanning using Nuclei.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
host | string | Yes | Target hostname or IP address |
port | integer | No | Target port (default: 80) |
vhost | string | No | Virtual host header |
max_lines | integer | No | Maximum output lines |
offset | integer | No | Output line offset |
Vulnerabilities Detected:
Example:
{
"host": "192.168.1.100",
"port": 443
}
Perform comprehensive web application vulnerability scans using Wapiti.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
host | string | Yes | Target hostname or IP address |
port | integer | No | Target port (default: 80) |
vhost | string | No | Virtual host header |
max_lines | integer | No | Maximum output lines |
offset | integer | No | Output line offset |
Vulnerabilities Detected:
Example:
{
"host": "192.168.1.100",
"port": 8080
}
Analyze HTTP security headers using shcheck.py.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
host | string | Yes | Target hostname or IP address |
port | integer | No | Target port (default: 80) |
vhost | string | No | Virtual host header |
max_lines | integer | No | Maximum output lines |
offset | integer | No | Output line offset |
Headers Analyzed:
Example:
{
"host": "example.com",
"port": 443
}
Perform a comprehensive security scan using all available scanners in parallel.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
host | string | Yes | Target hostname or IP address |
port | integer | No | Target port (default: 80) |
vhost | string | No | Virtual host header |
max_lines | integer | No | Maximum output lines |
offset | integer | No | Output line offset |
Features:
Example:
{
"host": "192.168.1.100",
"port": 8080
}
Browse and manage tool execution history.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
action | string | Yes | One of: list, get, delete, clear |
id | integer | For get/delete | Execution ID |
limit | integer | No | Results per page (default: 10) |
offset | integer | No | Pagination offset |
Actions:
list - List execution history with paginationget - Get full details of a specific executiondelete - Delete a specific execution by IDclear - Delete all execution history| Endpoint | Description |
|---|---|
POST /mcp | MCP protocol endpoint |
GET / | Service information (JSON) |
GET /debug/pprof/* | Profiling endpoints |
apt install nikto or equivalent)go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest)apt install wapiti or equivalent)pip install shcheck or from GitHub)# Clone the repository
git clone https://github.com/tb0hdan/wass-mcp.git
cd wass-mcp
# Build
make build
# Run
./build/wass-mcp
# Default (localhost:8989)
./build/wass-mcp
# Custom bind address
./build/wass-mcp --bind 0.0.0.0:8080
# Custom database path
./build/wass-mcp --db /var/lib/wass-mcp/data.db
# Debug mode
./build/wass-mcp --debug
| Flag | Default | Description |
|---|---|---|
--bind | localhost:8989 | HTTP server bind address |
--db | ./wass-mcp.db | SQLite database file path |
--debug | false | Enable debug logging |
--version | - | Print version and exit |
make lint
make test
wass-mcp/
├── cmd/wass-mcp/ # Application entry point
├── pkg/
│ ├── server/ # MCP server wrapper
│ ├── storage/ # Database layer (SQLite/GORM)
│ ├── models/ # Data models
│ ├── tools/ # MCP tool implementations
│ │ ├── nikto/ # Nikto web server scanner
│ │ ├── wapiti/ # Wapiti web app scanner
│ │ ├── nuclei/ # Nuclei template scanner
│ │ ├── shcheck/ # Security headers checker
│ │ ├── fullscan/ # Parallel full scan
│ │ └── history/ # History management
│ └── types/ # Shared types and constants
├── docs/ # Documentation
└── build/ # Build output and coverage reports
This tool is intended for authorized security testing only. Ensure you have proper authorization before scanning any systems. Unauthorized scanning may be illegal in your jurisdiction.
For complete project notes, design decisions, and architecture overview, please refer to the Project Notes document.
BSD 3-Clause License - Copyright (c) 2026, Bohdan Turkynevych. See LICENSE for details.
git checkout -b feature/new-tool)git commit -am 'Add new scanning tool')git push origin feature/new-tool)com.exploit-intel/eip-mcp
dmontgomery40/pentest-mcp
pantheon-security/notebooklm-mcp-secure
cyanheads/pentest-mcp-server
io.github.akhilucky/ai-firewall-mcp