Kali Mcp Go
FreeNot checkedLet AI agents run nmap, metasploit, sqlmap, hydra and more in parallel — MCP server built for pentesting and CTF
About
Let AI agents run nmap, metasploit, sqlmap, hydra and more in parallel — MCP server built for pentesting and CTF
README
Go reimplementation of MCP-Kali-Server, built to eliminate the bottlenecks encountered when running multiple AI agents simultaneously.
Background
MCP-Kali-Server by @Wh0am123 was the project that first proved connecting AI agents to Kali Linux tools over MCP works — it's even shipped as an official Kali package. This project owes a lot to that work.
The rewrite was motivated by running into real bottlenecks when spinning up multiple AI agents in parallel against CTF challenges:
| MCP-Kali-Server (Python) | kali-mcp-go (Go) | |
|---|---|---|
| Concurrency | Flask single-worker — agents block each other | Fiber v3 / fasthttp — fully concurrent |
| Output delivery | Buffered: full output returned when process exits | SSE streaming: output delivered line by line |
| Authentication | None | Bearer token (SHA-256 constant-time comparison) |
| Metasploit temp files | Hardcoded /tmp/mks_msf_resource.rc |
os.CreateTemp — race-free, unique filenames |
| Prompt injection defense | — | Safety instructions baked into MCP server |
Architecture
[AI Client]
(Claude / Claude Code / Codex / OpenCode / ...)
│ MCP stdio
▼
[mcp-client] ← runs on your local machine
│ HTTP + Bearer token
▼
[kali-server] ← runs where security tools are installed
│ exec
▼
[nmap · gobuster · sqlmap · msfconsole · ...]
Prerequisites
| Component | Requirement |
|---|---|
kali-server host |
Any environment with the required security tools installed (Kali Linux, other Linux distros, macOS, etc.) |
mcp-client host |
Linux, Windows, or macOS |
| Build from source | Go 1.26+ |
Required tools: nmap, gobuster, dirb, nikto, tshark, sqlmap, msfconsole, hydra, john, wpscan, enum4linux
Installation
Option A — Pre-built binaries (recommended)
Download the latest binaries from the Releases page.
kali-server:
# x86_64
curl -L https://github.com/found-cake/kali-mcp-go/releases/latest/download/kali-server_linux_amd64 \
-o kali-server && chmod +x kali-server
# arm64
curl -L https://github.com/found-cake/kali-mcp-go/releases/latest/download/kali-server_linux_arm64 \
-o kali-server && chmod +x kali-server
mcp-client:
# Linux x64
curl -L https://github.com/found-cake/kali-mcp-go/releases/latest/download/mcp-client_linux_amd64 \
-o mcp-client && chmod +x mcp-client
# Linux arm64
curl -L https://github.com/found-cake/kali-mcp-go/releases/latest/download/mcp-client_linux_arm64 \
-o mcp-client && chmod +x mcp-client
# macOS Apple Silicon
curl -L https://github.com/found-cake/kali-mcp-go/releases/latest/download/mcp-client_darwin_arm64 \
-o mcp-client && chmod +x mcp-client
# macOS Intel
curl -L https://github.com/found-cake/kali-mcp-go/releases/latest/download/mcp-client_darwin_amd64 \
-o mcp-client && chmod +x mcp-client
# Windows x64
curl -L https://github.com/found-cake/kali-mcp-go/releases/latest/download/mcp-client_windows_amd64.exe -o mcp-client.exe
# Windows arm64
curl -L https://github.com/found-cake/kali-mcp-go/releases/latest/download/mcp-client_windows_arm64.exe -o mcp-client.exe
Verify integrity with checksums.txt from the same release:
sha256sum -c checksums.txt
Option B — Build from source
git clone https://github.com/found-cake/kali-mcp-go.git
cd kali-mcp-go
# kali-server (Linux target)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -trimpath -ldflags="-s -w" -o kali-server ./cmd/kali-server
# mcp-client (native OS)
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o mcp-client ./cmd/mcp-client
Usage
1. Start kali-server
Set a strong API token and start the server on the machine where your security tools are installed. The default port is 5000.
export KALI_MCP_API_TOKEN="your-secret-token"
./kali-server # binds to 127.0.0.1:5000
./kali-server --ip 0.0.0.0 --port 5000 # expose on all interfaces
./kali-server --debug # verbose logging
./kali-server --max-concurrent 30 # allow up to 30 concurrent execution requests
kali-server limits concurrent execution requests to protect server resources. When the limit is exceeded, the server returns 503 Service Unavailable.
Tip: Use an SSH tunnel instead of exposing
kali-serverdirectly on the network — it's simpler and more secure:# On your local machine: forward localhost:5000 → remote:5000 ssh -L 5000:127.0.0.1:5000 user@kali-host -NThen point
mcp-clientathttp://127.0.0.1:5000as usual.
2. Connect your AI client
Set the same token in your local environment, then add mcp-client to your AI client's MCP configuration.
Claude Desktop
{
"mcpServers": {
"kali-mcp": {
"command": "/path/to/mcp-client",
"args": ["--server", "http://127.0.0.1:5000"],
"env": {
"KALI_MCP_API_TOKEN": "your-secret-token"
}
}
}
}
Claude Code
claude mcp add kali-mcp \
-e KALI_MCP_API_TOKEN=your-secret-token \
-- /path/to/mcp-client --server http://127.0.0.1:5000
OpenAI Codex
{
"mcpServers": {
"kali-mcp": {
"command": "/path/to/mcp-client",
"args": [
"--server", "http://127.0.0.1:5000",
"--timeout", "3600"
],
"env": {
"KALI_MCP_API_TOKEN": "your-secret-token"
}
}
}
}
OpenCode
For OpenCode, prefer a config that raises both:
- the host-side MCP timeout via
experimental.mcp_timeout - the mcp-client base request timeout via
--timeout
This is the recommended setup for long-running tools such as dirb_scan, nikto_scan, sqlmap_scan, and long execute_command sessions.
{
"$schema": "https://opencode.ai/config.json",
"experimental": {
"mcp_timeout": 3600000
},
"mcp": {
"kali-mcp": {
"type": "local",
"command": [
"/path/to/mcp-client",
"--server", "http://127.0.0.1:5000",
"--timeout", "3600"
],
"environment": {
"KALI_MCP_API_TOKEN": "your-secret-token"
}
}
}
}
Notes:
experimental.mcp_timeoutcontrols the OpenCode-side MCP tool-call timeout.--timeoutcontrols themcp-clientbase request timeout in seconds.- For long-running scans, set both. Raising only one layer may still leave the other layer timing out early.
mcp-client flags
| Flag | Default | Description |
|---|---|---|
--server |
http://127.0.0.1:5000 |
kali-server URL |
--timeout |
300 |
Base request timeout in seconds; individual streaming tools can raise this per request with their timeout field |
--debug |
false |
Verbose stderr logging |
kali-server flags
| Flag | Default | Description |
|---|---|---|
--ip |
127.0.0.1 |
Bind address |
--port |
5000 |
Listen port |
--debug |
false |
Verbose request logging |
--max-concurrent |
10 |
Maximum number of concurrent execution requests before the server returns 503 Service Unavailable |
Environment variables
| Variable | Component | Description |
|---|---|---|
KALI_MCP_API_TOKEN |
both | Required. Bearer token for API authentication |
KALI_MCP_DIR_WORDLIST |
kali-server | Override default dir wordlist (default: /usr/share/wordlists/dirb/common.txt) |
KALI_MCP_JOHN_WORDLIST |
kali-server | Override default John wordlist (default: /usr/share/wordlists/rockyou.txt) |
ReadTimeoutis enforced for incoming request bodies, while streaming responses remain unrestricted byWriteTimeout.
Available Tools
| MCP tool | Description |
|---|---|
server_health |
Check server status and tool availability |
execute_command |
Execute an arbitrary shell command (SSE streaming) |
nmap_scan |
Nmap port and service scan (SSE streaming) |
gobuster_scan |
Directory / DNS / vhost brute-force (POST result) |
dirb_scan |
Web content scanner (SSE streaming) |
nikto_scan |
Web server vulnerability scanner (SSE streaming) |
tshark_capture |
Packet capture and analysis (SSE streaming) |
sqlmap_scan |
SQL injection scanner (SSE streaming) |
metasploit_run |
Execute a Metasploit module via msfconsole |
hydra_attack |
Password brute-force for quick single-credential checks (POST result) |
hydra_attack_stream |
Password brute-force for long-running or file-based jobs with streaming progress |
john_crack |
Password hash cracker |
wpscan_analyze |
WordPress vulnerability scanner (SSE streaming) |
enum4linux_scan |
Windows / Samba enumeration (SSE streaming) |
SSE support summary
These MCP tools now stream incremental output over SSE instead of waiting for a buffered final result:
execute_commandnmap_scandirb_scannikto_scanwpscan_analyzeenum4linux_scansqlmap_scantshark_capture
Streaming requests support an optional timeout field (seconds) to override the default 300-second request limit for that specific run. For tshark_capture, this request timeout is distinct from the capture duration field.
When using OpenCode, the per-tool request timeout is not enough by itself for long scans. You should also raise OpenCode's MCP timeout (experimental.mcp_timeout) and the local mcp-client --timeout value as shown above.
For Codex and other MCP hosts, you may still want a larger mcp-client --timeout value for long-running tools, but the OpenCode-specific experimental.mcp_timeout setting does not apply there.
Quiet streams may also emit lightweight heartbeat SSE events to keep the connection active until the final done event arrives.
These tools still use a normal POST request/response flow:
gobuster_scanmetasploit_runjohn_crackserver_health
Choosing between hydra_attack and hydra_attack_stream
- Use
hydra_attackfor quick checks such as a single username/password attempt or other short runs where a buffered final result is sufficient. - Use
hydra_attack_streamfor long-running Hydra jobs when you want progress as it happens, especially withusername_fileand/orpassword_fileinputs.
Project Structure
kali-mcp-go/
├── cmd/
│ ├── kali-server/ # HTTP API server
│ └── mcp-client/ # MCP stdio bridge
├── internal/
│ ├── executor/ # Command execution + SSE streaming
│ ├── kaliclient/ # HTTP client for kali-server
│ └── tools/ # Tool argument builders + validation
└── pkg/
└── dto/ # Shared request/response types
Security Notice
⚠️ Only target systems you own or have explicit written permission to test.
execute_commandruns arbitrary shell commands as the server process user — restrict network access appropriately and prefer an SSH tunnel over direct exposure.
Acknowledgments
This project exists because MCP-Kali-Server by @Wh0am123 proved the concept and shaped the two-tier architecture. Full credit to the original for pioneering AI-assisted pentesting over MCP.
Installing Kali Mcp Go
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/found-cake/kali-mcp-goFAQ
Is Kali Mcp Go MCP free?
Yes, Kali Mcp Go MCP is free — one-click install via Unyly at no cost.
Does Kali Mcp Go need an API key?
No, Kali Mcp Go runs without API keys or environment variables.
Is Kali Mcp Go hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Kali Mcp Go in Claude Desktop, Claude Code or Cursor?
Open Kali Mcp Go on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Kali Mcp Go with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
