Skip to main content

Cyberstrike is now open source! AI-powered penetration testing for security professionals. Star on GitHub

Bolt

Bolt is a containerized MCP server that provides security tools. It runs in a Docker container (Ubuntu 24.04) and exposes each tool directly โ€” no meta-tools, no dynamic loading, just call the tool you need.

๐Ÿ“ธ SCREENSHOT: bolt-hero.png

Bolt running nmap scan through Cyberstrike

Why Bolt?

Bolt solves the problem of running security tools that need a Linux environment. Instead of installing tools locally, Bolt runs them in an isolated container.

FeatureWithout BoltWith Bolt
Tool installationManual for each toolPre-installed
Platform supportLinux-only for most toolsAny platform with Docker
IsolationTools run on your systemSandboxed in the container
UpdatesManualdocker pull

Whatโ€™s Inside

Bolt (bolt.config.json, port 3001) exposes tools two ways:

  • 7 native plugins โ€” subfinder, nmap, nuclei, httpx, ffuf, run-command, wordlist
  • ~26 aggregated stdio MCP servers โ€” e.g. dnsx, amass, katana, sqlmap, wpscan, gobuster, masscan, hydra, hashcat, john, impacket, and more

Each is a directly callable tool โ€” the agent calls it in a single turn, no search/load step.

Quick Start

1. Start the Bolt container

Terminal window
docker run -d \
--name bolt \
--restart unless-stopped \
-p 3001:3001 \
-v bolt-data:/data \
-e MCP_ADMIN_TOKEN=$(openssl rand -hex 32) \
--cap-add NET_RAW \
--cap-add NET_ADMIN \
ghcr.io/cyberstrikeus/bolt:latest
# View the admin token (used once, to pair)
docker logs bolt | grep -i token

2. Pair it with Cyberstrike

Open the /bolt dialog in the TUI, press a to add, enter the URL http://localhost:3001, and provide the admin token. Cyberstrike pairs with the server (see Authentication) and stores the credentials โ€” the token itself is not written to your config.

3. Use the tools

> Run nmap against 192.168.1.1 with service detection
> Use subfinder to enumerate subdomains of example.com

Configuration

Bolt servers are configured under their own top-level bolt key โ€” not under mcp. Each entry only needs a url (Cyberstrike appends the /mcp path itself):

~/.config/cyberstrike/cyberstrike.json
{
"bolt": {
"local": {
"url": "http://localhost:3001",
"enabled": true,
"timeout": 30000
}
}
}
FieldTypeDescription
urlstringRequired. Base URL of the Bolt server (e.g. http://localhost:3001).
enabledbooleanOptional. Connect on launch (default: true).
timeoutnumberOptional. Request timeout in ms (default: 30000).

Caution

Bolt is not an mcp entry. There is no type: "remote", no bolt: true flag, and no Authorization header in the config โ€” authentication is handled by Ed25519 pairing, and the admin token lives only in the pairing step.

Authentication

Bolt uses Ed25519 request signing, bootstrapped by a one-time pairing with the admin token:

  1. POST /pair with the admin token โ†’ a pairing code
  2. Cyberstrike generates an Ed25519 keypair
  3. POST /pair/exchange with the code + client public key โ†’ server public key + client ID
  4. From then on, every request is signed with the clientโ€™s private key

The admin token is used only during step 1 โ€” it is not a persistent bearer credential and is never stored in cyberstrike.json.

TUI Management

Two separate dialogs:

  • /bolt โ€” manages Bolt servers (add/pair, toggle, remove).
  • /mcps โ€” manages regular local/remote MCP servers.

In the /bolt dialog: a to add, space to toggle a server, esc to close.

Usage Examples

> Use bolt to scan 192.168.1.0/24 for open ports and services # nmap
> Find all subdomains of example.com # subfinder
> Scan https://target.com with nuclei # nuclei
> Fuzz directories on https://target.com # ffuf
> Run "dig +short example.com" # run-command escape hatch

Each maps to a direct tool call โ€” no loading step.

Container Configuration

Environment variables

VariableDefaultDescription
PORT3001HTTP server port
HOST0.0.0.0Bind address
MCP_ADMIN_TOKENโ€”Admin token used for pairing
DATA_DIR/dataPersistent data directory

Docker capabilities

CapabilityPurpose
NET_RAWRaw sockets for nmap SYN scans
NET_ADMINNetwork configuration for tools needing elevated access

API Reference

EndpointPurpose
GET /healthHealth check โ€” returns { "status": "ok" } (authenticated admin requests get detailed info, including tool counts)
POST /mcpMCP JSON-RPC endpoint (signed requests)
POST /pairBegin Ed25519 pairing with the admin token
POST /pair/exchangeExchange the pairing code + public keys
Terminal window
curl http://localhost:3001/health

Troubleshooting

  • Connection refused โ€” check the container is up (docker ps), the port is mapped (docker port bolt), and curl http://localhost:3001/health responds.
  • Re-pairing required โ€” if the Bolt URL changes, Cyberstrike drops the stored credentials and you must pair again via /bolt.
  • Tools not available โ€” confirm the server is connected in /bolt, and use a direct-API model (e.g. anthropic/claude-sonnet-4-20250514, openai/gpt-4o).

Danger

Only use Bolt tools against authorized targets. Unauthorized penetration testing is illegal.