MCP server wrapper for Suricata — network intrusion detection and prevention system (IDS/IPS).
Suricata (suricata) is a security tool that provides: high-performance network intrusion detection (IDS), intrusion prevention (IPS), and network security monitoring. It inspects network traffic using rules and signatures to detect threats, malware, and policy violations.
See suricata.io and the OISF/suricata repository for full documentation.
No API keys required — Suricata runs locally inside the Docker container with default rules from Emerging Threats.
Summary. MCP server wrapper for Suricata — network intrusion detection and prevention system.
Tools:
run_suricata — Run suricata with the given arguments. Returns command output.analyze_pcap — Analyze a PCAP file and return alerts and EVE JSON events.download_file — Download files/repos from URLs into the container for analysis.cleanup_downloads — Clean up downloaded files from the container workspace.run_suricataRun suricata with the given arguments. Returns command output.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
arguments | string | Yes | — | Command-line arguments (e.g. "-V" or "-r /path/to/file.pcap -l /app/output") |
source_url | string | No | "" | HTTP(S) URL to download; use {source} placeholder in arguments |
timeout_seconds | integer | No | 600 | Maximum execution time in seconds |
This is Suricata version 6.0.10 RELEASE
analyze_pcapAnalyze a PCAP file with Suricata and return alerts from fast.log and EVE JSON events.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
pcap_path | string | No | "" | Path to a PCAP file already in the container |
source_url | string | No | "" | HTTP(S) URL to download the PCAP from |
timeout_seconds | integer | No | 600 | Maximum execution time in seconds |
{
"return_code": 0,
"alerts": "03/15/2026-12:00:00.000000 [**] [1:2001219:20] ET SCAN ...",
"eve_events_count": 42,
"alert_events": [...]
}
download_fileDownload a file or repository from a URL into the container workspace.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | — | HTTP(S) URL, GitHub/GitLab repo URL, or data: URI |
extract | boolean | No | true | Automatically extract archives (.zip, .tar.gz, etc.) |
cleanup_downloadsClean up downloaded files from the container workspace.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
job_id | string | No | "" | Specific job ID to clean up. If empty, removes all downloads. |
Here are example prompts you can use with Claude (or any MCP client) when this tool is connected:
docker-compose up -d
docker run -i --rm hackerdogs/suricata-mcp:latest
docker run -d -p 8365:8365 \
-e MCP_TRANSPORT=streamable-http \
-e MCP_PORT=8365 \
hackerdogs/suricata-mcp:latest
Add to your Claude Desktop or Cursor MCP config:
{
"mcpServers": {
"suricata-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT", "hackerdogs/suricata-mcp:latest"],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
First, start the server using Docker Compose or docker run with HTTP mode (see Deploy above), then point your MCP client at the running server:
{
"mcpServers": {
"suricata-mcp": {
"url": "http://localhost:8365/mcp"
}
}
}
When to use HTTP mode: HTTP mode is ideal for shared/remote deployments, multi-user setups, and Hackerdogs scheduled prompts. The server runs as a long-lived process and accepts connections from multiple MCP clients concurrently.
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT | stdio | Transport mode: stdio or streamable-http |
MCP_PORT | 8365 | HTTP port (only used with streamable-http) |
SURICATA_BIN | suricata | Path or name of the Suricata binary |
The fastest way to get started is through Hackerdogs:
Give it a couple of minutes to go live. Then start querying by asking Hackerdogs to use the tool explicitly (e.g. "Use Suricata to analyze this PCAP capture"). If you don't specify, Hackerdogs will automatically choose the best tool for the job — it may choose this one on its own.
Want to contribute or chat with the team? Join our Discord.
docker build -t hackerdogs/suricata-mcp:latest .
./test.sh
1. Start the server in HTTP mode:
docker run -d --rm --name suricata-mcp-test -p 8365:8365 \
-e MCP_TRANSPORT=streamable-http \
hackerdogs/suricata-mcp:latest
2. Initialize the MCP session:
SESSION_ID=$(curl -s -D - -X POST http://localhost:8365/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1"}}}' \
2>&1 | grep -i mcp-session-id | awk '{print $2}' | tr -d '\r\n')
curl -s -X POST http://localhost:8365/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
3. Call a tool:
curl -s -X POST http://localhost:8365/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"run_suricata","arguments":{"arguments":"-V"}}}'
4. Clean up:
docker stop suricata-mcp-test
You can run Suricata directly in the same container by overriding the entrypoint to analyze traffic without starting the MCP server.
Show version:
docker run --rm --entrypoint suricata hackerdogs/suricata-mcp:latest -V
Show build info:
docker run --rm --entrypoint suricata hackerdogs/suricata-mcp:latest --build-info
Analyze a PCAP file:
docker run --rm -v /path/to/captures:/data --entrypoint suricata hackerdogs/suricata-mcp:latest -r /data/capture.pcap -l /data/output
Content type
Image
Digest
sha256:bfe2da8af…
Size
116.4 MB
Last updated
3 months ago
docker pull hackerdogs/suricata-mcp