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, 可视化界面, 安全运营, 扫描框架, 漏洞分析, 网络流量审计, 请求拦截, 路径探测, 通知系统