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.
| Feature | Without Bolt | With Bolt |
|---|---|---|
| Tool installation | Manual for each tool | Pre-installed |
| Platform support | Linux-only for most tools | Any platform with Docker |
| Isolation | Tools run on your system | Sandboxed in the container |
| Updates | Manual | docker 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
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 token2. 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.comConfiguration
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):
{ "bolt": { "local": { "url": "http://localhost:3001", "enabled": true, "timeout": 30000 } }}| Field | Type | Description |
|---|---|---|
url | string | Required. Base URL of the Bolt server (e.g. http://localhost:3001). |
enabled | boolean | Optional. Connect on launch (default: true). |
timeout | number | Optional. 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:
POST /pairwith the admin token โ a pairing code- Cyberstrike generates an Ed25519 keypair
POST /pair/exchangewith the code + client public key โ server public key + client ID- 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 hatchEach maps to a direct tool call โ no loading step.
Container Configuration
Environment variables
| Variable | Default | Description |
|---|---|---|
PORT | 3001 | HTTP server port |
HOST | 0.0.0.0 | Bind address |
MCP_ADMIN_TOKEN | โ | Admin token used for pairing |
DATA_DIR | /data | Persistent data directory |
Docker capabilities
| Capability | Purpose |
|---|---|
NET_RAW | Raw sockets for nmap SYN scans |
NET_ADMIN | Network configuration for tools needing elevated access |
API Reference
| Endpoint | Purpose |
|---|---|
GET /health | Health check โ returns { "status": "ok" } (authenticated admin requests get detailed info, including tool counts) |
POST /mcp | MCP JSON-RPC endpoint (signed requests) |
POST /pair | Begin Ed25519 pairing with the admin token |
POST /pair/exchange | Exchange the pairing code + public keys |
curl http://localhost:3001/healthTroubleshooting
- Connection refused โ check the container is up (
docker ps), the port is mapped (docker port bolt), andcurl http://localhost:3001/healthresponds. - 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).
Related Documentation
- Bolt / MCP Overview - Architecture and concepts
- Remote Servers - Remote MCP configuration
- Local Servers - Local stdio MCP setup
- Permissions - Tool permissions
Danger
Only use Bolt tools against authorized targets. Unauthorized penetration testing is illegal.