Ramkumar2545/mcpserver-wazuh

GitHub: Ramkumar2545/mcpserver-wazuh

该项目是一个 MCP 服务器,将 Wazuh SIEM/XDR 的安全监控数据与工具接口对接给兼容 MCP 的 LLM 客户端,实现基于自然对话的安全态势分析与审计。

Stars: 0 | Forks: 0

# Wazuh 的 MCP Server 一个基于 Rust 的 [Model Context Protocol (MCP)](https://modelcontextprotocol.io) 服务器,它将 [Wazuh](https://wazuh.com) SIEM/XDR 连接到任何兼容 MCP 的 LLM 客户端,例如 Claude Code、Claude Desktop 和 IDE 扩展。 该服务器通过 JSON-RPC 2.0 将 Wazuh 安全数据作为 MCP 工具公开,支持 **stdio**(默认)传输模式,以及可选的 **Streamable HTTP** 传输模式。 ## 可用工具(共 14 个) | 类别 | 工具 | 描述 | |---|---|---| | **Alerts** | `get_wazuh_alert_summary` | 从 Wazuh Indexer 获取最近的警报 | | **Agents** | `get_wazuh_agents` | 列出 agent 及其状态和详细信息 | | | `get_wazuh_agent_processes` | 特定 agent 上的运行进程 | | | `get_wazuh_agent_ports` | 特定 agent 上打开的网络端口 | | **Vulnerabilities** | `get_wazuh_vulnerability_summary` | agent 的漏洞扫描结果 | | | `get_wazuh_critical_vulnerabilities` | 仅显示严重级别的漏洞 | | **Rules** | `get_wazuh_rules_summary` | 列出具有合规性映射的检测规则 | | **Stats** | `get_wazuh_weekly_stats` | 汇总的每周统计数据 | | | `get_wazuh_remoted_stats` | 远程 daemon 指标 | | | `get_wazuh_log_collector_stats` | 日志收集器 daemon 指标 | | | `search_wazuh_manager_logs` | 按关键字搜索 manager 日志 | | | `get_wazuh_manager_error_logs` | 错误级别的 manager 日志 | | **Cluster** | `get_wazuh_cluster_health` | 集群健康状态 | | | `get_wazuh_cluster_nodes` | 列出集群节点 | ## 设置指南(分步说明) ### 步骤 1:前置条件 请确保您的计算机上已安装以下内容: - **Rust**(1.75 或更高版本) - **Git** - 正在运行的 **Wazuh Manager**(API 端口为 55000)和 **Wazuh Indexer**(端口为 9200) 如果未安装 Rust: ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env ``` ### 步骤 2:克隆仓库 ``` git clone https://github.com/Ramkumar2545/mcpserver-wazuh.git cd mcpserver-wazuh ``` ### 步骤 3:配置环境变量 ``` cp .env.example .env ``` 在文本编辑器中打开 `.env` 并填写您的 Wazuh 凭据: ``` nano .env ``` 更新这些值以匹配您的 Wazuh 设置: ``` # Wazuh Manager API WAZUH_API_HOST=localhost # Your Wazuh Manager IP or hostname WAZUH_API_PORT=55000 WAZUH_API_USERNAME=wazuh-wui # Your Wazuh API username WAZUH_API_PASSWORD=YOUR_PASSWORD # Your Wazuh API password # Wazuh Indexer WAZUH_INDEXER_HOST=localhost # Your Wazuh Indexer IP or hostname WAZUH_INDEXER_PORT=9200 WAZUH_INDEXER_USERNAME=admin WAZUH_INDEXER_PASSWORD=YOUR_PASSWORD # SSL(对于自签名证书设置为 false) WAZUH_VERIFY_SSL=false # 日志 RUST_LOG=info ``` 保存并关闭文件。 ### 步骤 4:构建服务器 ``` cargo build --release ``` 这需要几分钟时间。完成后,二进制文件位于: ``` target/release/mcp-server-wazuh ``` ### 步骤 5:验证构建 ``` ./target/release/mcp-server-wazuh --help ``` 预期输出: ``` Wazuh SIEM MCP Server Usage: mcp-server-wazuh [OPTIONS] Options: --transport Transport mode: stdio or http [default: stdio] --host HTTP server bind address [default: 127.0.0.1] --port HTTP server port [default: 8080] -h, --help Print help ``` ### 步骤 6:测试服务器 运行以下命令以验证服务器是否响应 MCP 请求: ``` echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | timeout 5 ./target/release/mcp-server-wazuh 2>/dev/null ``` 您应该会看到包含 `"name":"mcp-server-wazuh"` 的 JSON 响应。如果您看到此内容,说明服务器工作正常。 ## 连接到 MCP 客户端 选择与您设置相匹配的客户端: ### 选项 A:Claude Code CLI (Linux, macOS, Windows) 这是 **Linux** 用户推荐的选项。 **1. 安装 Claude Code CLI:** ``` npm install -g @anthropic-ai/claude-code ``` 如果未安装 npm: ``` curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash - sudo apt-get install -y nodejs npm install -g @anthropic-ai/claude-code ``` **2. 注册 MCP 服务器:** ``` claude mcp add wazuh /path/to/mcpserver-wazuh/target/release/mcp-server-wazuh ``` 将 `/path/to/mcpserver-wazuh` 替换为您克隆仓库的实际路径。 **3. 启动 Claude Code:** ``` cd /path/to/mcpserver-wazuh claude ``` 现在可以使用这 14 个 Wazuh 工具了。您可以提出类似这样的问题: ``` > Show me all active Wazuh agents > What are the critical vulnerabilities on agent 001? > Show me recent security alerts and create a report in markdown ``` ### 选项 B:Claude Desktop (macOS 和 Windows) Claude Desktop 仅适用于 **macOS** 和 **Windows**。 **1. 下载 Claude Desktop:** 前往 [claude.ai/download](https://claude.ai/download) 并安装。 **2. 打开配置文件:** | 操作系统 | 配置文件路径 | |---|---| | macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` | | Windows | `%APPDATA%\Claude\claude_desktop_config.json` | 您也可以从 Claude Desktop 中打开它:**Settings > Developer > Edit Config** **3. 添加 MCP 服务器配置:** 将其粘贴到配置文件中: ``` { "mcpServers": { "wazuh": { "command": "/path/to/mcpserver-wazuh/target/release/mcp-server-wazuh", "args": [], "env": { "WAZUH_API_HOST": "YOUR_WAZUH_IP", "WAZUH_API_PORT": "55000", "WAZUH_API_USERNAME": "wazuh-wui", "WAZUH_API_PASSWORD": "YOUR_API_PASSWORD", "WAZUH_INDEXER_HOST": "YOUR_WAZUH_IP", "WAZUH_INDEXER_PORT": "9200", "WAZUH_INDEXER_USERNAME": "admin", "WAZUH_INDEXER_PASSWORD": "YOUR_INDEXER_PASSWORD", "WAZUH_VERIFY_SSL": "false", "RUST_LOG": "info" } } } } ``` 将 `YOUR_WAZUH_IP`、`YOUR_API_PASSWORD` 和 `YOUR_INDEXER_PASSWORD` 替换为您的实际值。 **4. 重启 Claude Desktop。** Wazuh 工具将出现在新聊天的锤子图标下。 ### 选项 C:Docker ``` # 拉取 image docker pull ghcr.io/ramkumar2545/mcpserver-wazuh:latest # 使用 env 文件运行 docker run --rm -i --env-file /path/to/.env ghcr.io/ramkumar2545/mcpserver-wazuh:latest ``` Docker 的 Claude Desktop 配置: ``` { "mcpServers": { "wazuh": { "command": "docker", "args": [ "run", "--rm", "-i", "--env-file", "/absolute/path/to/your/.env", "ghcr.io/ramkumar2545/mcpserver-wazuh:latest" ] } } } ``` ## 使用示例 连接到 Claude Code 或 Claude Desktop 后,您可以询问: **安全概述:** ``` Show me all active Wazuh agents and their status ``` **漏洞分析:** ``` Get critical vulnerabilities for agent 001 and create a detailed report ``` **警报调查:** ``` Show me the latest 50 security alerts and summarize the top threats ``` **日志分析:** ``` Search manager logs for "authentication" errors in the last 24 hours ``` **合规性报告:** ``` List all rules with HIPAA and PCI DSS compliance mappings and save as report.md ``` **集群监控:** ``` Check cluster health and list all connected nodes ``` **生成格式化报告:** ``` Get all critical vulnerabilities, active agents, and recent alerts. Create a security audit report in markdown format and save it to audit-report.md ``` ## 传输模式 ### stdio(默认) ``` ./target/release/mcp-server-wazuh ``` Claude Code 和 Claude Desktop 会自动使用此模式。 ### Streamable HTTP(可选) 构建支持 HTTP 的版本: ``` cargo build --release --features http ``` 运行 HTTP 服务器: ``` ./target/release/mcp-server-wazuh --transport http --host 0.0.0.0 --port 8080 ``` | 参数 | 默认值 | 描述 | |---|---|---| | `--transport` | `stdio` | `stdio` 或 `http` | | `--host` | `127.0.0.1` | HTTP 绑定地址 | | `--port` | `8080` | HTTP 端口 | ## 环境变量参考 | 变量 | 默认值 | 描述 | |---|---|---| | `WAZUH_API_HOST` | `localhost` | Wazuh Manager API 主机 | | `WAZUH_API_PORT` | `55000` | Wazuh Manager API 端口 | | `WAZUH_API_USERNAME` | `wazuh` | Manager API 用户名 | | `WAZUH_API_PASSWORD` | `wazuh` | Manager API 密码 | | `WAZUH_INDEXER_HOST` | `localhost` | Wazuh Indexer 主机 | | `WAZUH_INDEXER_PORT` | `9200` | Wazuh Indexer 端口 | | `WAZUH_INDEXER_USERNAME` | `admin` | Indexer 用户名 | | `WAZUH_INDEXER_PASSWORD` | `admin` | Indexer 密码 | | `WAZUH_VERIFY_SSL` | `false` | SSL 证书验证 | | `RUST_LOG` | `info` | 日志级别 (`debug`, `info`, `warn`, `error`) | ## 故障排除 | 问题 | 解决方案 | |---|---| | `cargo build` 失败 | 确保已安装 Rust:`rustc --version` | | 连接被拒绝 | 验证 Wazuh API 是否可访问:`curl -k https://YOUR_WAZUH_IP:55000` | | SSL 错误 | 在 `.env` 中设置 `WAZUH_VERIFY_SSL=false` | | 工具未在 Claude Desktop 中显示 | 检查配置文件中的 JSON 语法,完全重启 Claude Desktop | | 二进制文件无法运行 (macOS) | 运行:`xattr -d com.apple.quarantine mcp-server-wazuh-macos-arm64` | | 权限被拒绝 | 运行:`chmod +x target/release/mcp-server-wazuh` | | 服务器已启动但无响应 | 检查工作目录中是否存在 `.env` 文件 | | Claude Desktop 不支持 Linux | 改用 Claude Code CLI(参见上面的选项 A) | ## 开发 ``` # 运行所有 tests cargo test # 使用 debug 日志运行 RUST_LOG=debug cargo test # Format 检查 cargo fmt --check # Lint cargo clippy -- -D warnings ``` ### Docker 开发环境 启动本地 Wazuh 技术栈进行开发: ``` docker compose -f docker/docker-compose.yml up -d ``` ## 发布 ``` # 1. 在 Cargo.toml 中提升 version # 2. 提交并打 tag git add Cargo.toml git commit -m "release: v0.4.0" git tag v0.4.0 git push origin main --tags # GitHub Actions 自动构建所有平台 + Docker image ``` ## 许可证 [MIT](LICENSE) - 版权所有 (c) 2026 Ramkumar G, Security Engineer 😎
标签:LLM集成, MCP, Rust, Wazuh, 可视化界面, 安全运营, 扫描框架, 漏洞分析, 网络流量审计, 请求拦截, 路径探测, 通知系统