Skip to main content
Glama
fairyming

Suricata MCP

by fairyming
README.md
# Suricata MCP

MCP service for validating Suricata rules against pcap files.

## Installation

```bash
# 安装依赖
source /path/to/venv/bin/activate
pip install -e .
```

## Usage

### 运行 MCP Server

```bash
suricata-mcp
```

或在 Claude Desktop 配置中添加:

```json
{
  "mcpServers": {
    "suricata": {
      "command": "python",
      "args": ["-m", "suricata_mcp.server"],
      "env": {
        "SURICATA_PATH": "/usr/local/bin/suricata"
      }
    }
  }
}
```

## Tools

### validate_suricata_rule

验证 Suricata 规则语法是否正确。

**参数:**
- `rule_content` (string, 必需): Suricata 规则内容


### validate_suricata_rule_file

验证 Suricata 规则文件语法是否正确。

**参数:**
- `rule_path` (string, 必需): 规则文件路径

**示例:**
```json
{
  "rule_path": "/path/to/rules.rules"
}
```

### test_suricata_rule

测试 Suricata 规则对 pcap 文件是否生效,验证规则是否能匹配到预期告警。

**参数:**
- `rule_content` (string, 必需): Suricata 规则内容
- `pcap_path` (string, 必需): pcap 文件路径
- `expected_sid` (integer, 可选): 预期匹配的 signature ID,不提供则从规则中提取

### test_suricata_rule_file

测试 Suricata 规则文件对 pcap 文件是否生效。

**参数:**
- `rule_path` (string, 必需): 规则文件路径
- `pcap_path` (string, 必需): pcap 文件路径
- `expected_sids` (array of integers, 可选): 预期匹配的 signature IDs


## 工作流程

1. **规则语法验证**: 使用 `suricata -S <rule_path> -T` 验证规则语法
2. **pcap 测试**: 使用 `suricata -r <pcap_path> -S <rule_path> -l <log_path>` 运行测试
3. **告警解析**: 解析 `eve.json` 中 `event_type` 为 `alert` 的记录
4. **sid 匹配**: 验证规则的 sid 与告警日志中的 `signature_id` 是否一致

## 自动编写规则

配合: https://github.com/fairyming/tshark_mcp, 可以实现自动分析,编写规则并验证

![image.png](./images/ScreenShot_2026-03-19_161007_624.png)
![image.png](./images/ScreenShot_2026-03-19_161110_414.png)
![image.png](./images/ScreenShot_2026-03-19_161156_160.png)

Maintenance

ActivityInactive
ResponsivenessNo issues