项目简介
Zeek-MCP 是一个基于 Model Context Protocol (MCP) 构建的服务器实现,旨在将 Zeek 网络安全监控工具的功能(特别是对 PCAP 文件进行分析并生成日志)暴露给支持 MCP 的大型语言模型 (LLM) 客户端。通过这个服务器,LLM 可以调用 Zeek 执行分析任务,并获取生成的日志数据进行处理和理解。
主要功能点
- 执行 Zeek 分析: 允许 LLM 调用 Zeek 工具,对指定的网络流量捕获文件(PCAP)进行分析,并生成相应的 Zeek 日志文件(如 conn.log, http.log 等)。
- 解析 Zeek 日志: 提供工具解析单个 Zeek 日志文件,并以结构化的数据格式(DataFrame)返回内容,便于 LLM 理解和进一步处理。
- 支持多种传输协议: 支持 Stdio 和 Server-Sent Events (SSE) 两种传输协议与客户端通信。
安装步骤
-
环境要求:
- Python 3.7+
- Zeek 工具已安装并可在系统 PATH 中访问。
- pip (Python 包管理器)
-
克隆仓库:
git clone https://github.com/Gabbo01/Zeek-MCP cd Zeek-MCP -
安装依赖: 建议使用虚拟环境。
python -m venv venv # Windows 系统 venv\Scripts\activate # Linux/macOS 系统 source venv/bin/activate # 安装所需 Python 包 (pandas 和 mcp) pip install pandas mcp
MCP 客户端配置
要让支持 MCP 协议的客户端(如 Claude Desktop, 5ire 等)连接到 Zeek-MCP 服务器并使用其功能,您需要在客户端的设置中添加一个新的 MCP 服务器配置。
这个配置通常需要指定一个服务器名称或标识符,以及用于启动服务器的命令 (command) 和其参数 (args)。
- 命令 (command): 通常设置为 'python'。
- 参数 (args): 这是包含启动脚本路径的列表。例如,应指向您克隆的 'Bridge_Zeek_MCP.py' 文件的绝对路径,如 '["/path/to/your/Zeek-MCP/Bridge_Zeek_MCP.py"]'。
- 您还可以选择性地在参数中添加 Zeek-MCP 脚本支持的命令行选项,例如:
- '--mcp-host <IP地址>':指定服务器监听的 IP 地址(默认 '127.0.0.1',仅用于 SSE)。
- '--mcp-port <端口号>':指定服务器监听的端口号(默认 '8081',仅用于 SSE)。
- '--transport <协议>':指定使用的传输协议,可以是 'stdio' 或 'sse'(默认 'sse')。
客户端将使用您提供的命令和参数来启动 Zeek-MCP 服务器实例,并与其建立连接。
基本使用流程
一旦 Zeek-MCP 服务器被客户端成功配置和启动,LLM 客户端即可通过调用暴露的工具来与 Zeek 交互:
- 调用 'execzeek' 工具: LLM 可以调用 'execzeek' 工具,并传入一个 PCAP 文件的路径作为参数。该工具会运行 Zeek 处理 PCAP 文件,并返回生成的日志文件列表(以字符串形式)。
- 调用 'parselogs' 工具: LLM 获取到日志文件名后,可以调用 'parselogs' 工具,并传入某个具体的日志文件名作为参数。该工具会读取并解析指定的 Zeek 日志文件,并以结构化的数据表格(DataFrame)形式返回其内容。LLM 可以利用这些结构化数据来理解网络活动。
例如,LLM 可能会先调用 'execzeek("/path/to/traffic.pcap")',然后收到类似 '"Generated the following files:\nconn.log, http.log, dns.log"' 的响应,接着可能调用 'parselogs("conn.log")' 来获取连接日志的详细数据。
信息
分类
AI与计算