wazuh-mcp
一个用于 Wazuh SIEM/XDR 平台的 模型上下文协议 (MCP) 服务器。直接从 Claude 或任何兼容 MCP 的客户端查询代理、安全警报、检测规则和解码器。
功能特性
25 个 MCP 工具 - 代理、警报、规则、解码器、SCA、syscollector、FIM、rootcheck、组和管理器
3 个 MCP 资源 - 预构建的代理、近期警报和规则摘要视图
3 个 MCP 提示词 - 警报调查、代理健康检查和安全概览
JWT 身份验证 - 自动令牌管理,过期时自动刷新
完全合规性映射 - PCI-DSS、GDPR、HIPAA、NIST 800-53、MITRE ATT&CK
分页 - 所有列表端点均支持 limit/offset 分页
类型安全 - 完整的 TypeScript 支持,包含严格模式和 Zod 模式验证
先决条件
Node.js 20+
运行中的 Wazuh 管理器,且具有 API 访问权限(默认端口 55000)
Wazuh API 凭据(用户名/密码)
(可选) 用于警报查询的 Wazuh Indexer (OpenSearch) 访问权限
安装
git clone https://github.com/solomonneas/wazuh-mcp.git
cd wazuh-mcp
npm install
npm run build配置
设置以下环境变量:
变量 | 必需 | 默认值 | 描述 |
| WAZUH_URL | 是 | - | Wazuh API URL (例如 https://10.0.0.2:55000) |
| WAZUH_USERNAME | 是 | - | API 用户名 |
| WAZUH_PASSWORD | 是 | - | API 密码 |
| WAZUH_VERIFY_SSL | 否 | false | 设置为 true 以验证 SSL 证书 |
同时也支持替代变量名 WAZUH_BASE_URL 和 WAZUH_USER。
Wazuh Indexer (OpenSearch) - 警报必需
Wazuh 4.x 将警报存储在 Wazuh Indexer (OpenSearch) 中,而不是 REST API 中。要启用警报工具 (get_alerts, get_alert, search_alerts) 和 wazuh://alerts/recent 资源,请配置索引器连接:
变量 | 必需 | 默认值 | 描述 |
| WAZUH_INDEXER_URL | 否 | - | Wazuh Indexer URL (例如 https://10.0.0.2:9200) |
| WAZUH_INDEXER_USERNAME | 否 | admin | 索引器用户名 |
| WAZUH_INDEXER_PASSWORD | 否 | - | 索引器密码 |
| WAZUH_INDEXER_VERIFY_SSL | 否 | false | 设置为 true 以验证 SSL 证书 |
如果未设置 WAZUH_INDEXER_URL,警报工具将返回一条有用的配置消息。所有其他工具(代理、规则、解码器、版本)无需索引器即可工作。
使用方法
Claude Desktop
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"wazuh": {
"command": "wazuh-mcp",
"env": {
"WAZUH_URL": "https://your-wazuh-manager:55000",
"WAZUH_USERNAME": "wazuh-wui",
"WAZUH_PASSWORD": "your-password",
"WAZUH_INDEXER_URL": "https://your-wazuh-indexer:9200",
"WAZUH_INDEXER_USERNAME": "admin",
"WAZUH_INDEXER_PASSWORD": "your-indexer-password"
}
}
}
}Claude Code
claude mcp add wazuh \
--env WAZUH_URL=https://your-wazuh-manager:55000 \
--env WAZUH_USERNAME=wazuh-wui \
--env WAZUH_PASSWORD=your-password \
--env WAZUH_INDEXER_URL=https://your-wazuh-indexer:9200 \
--env WAZUH_INDEXER_USERNAME=admin \
--env WAZUH_INDEXER_PASSWORD=your-indexer-password \
-- wazuh-mcp添加 --scope user 以使其在任何目录中可用,而不仅仅是当前项目。
OpenClaw
如果您是从源代码检出运行,而不是从 npm 安装的二进制文件运行,请将 command/args 指向构建好的 dist/index.js:
openclaw mcp set wazuh '{
"command": "node",
"args": ["/absolute/path/to/wazuh-mcp/dist/index.js"],
"env": {
"WAZUH_URL": "https://your-wazuh-manager:55000",
"WAZUH_USERNAME": "wazuh-wui",
"WAZUH_PASSWORD": "your-password",
"WAZUH_INDEXER_URL": "https://your-wazuh-indexer:9200",
"WAZUH_INDEXER_USERNAME": "admin",
"WAZUH_INDEXER_PASSWORD": "your-indexer-password"
}
}'或者,使用全局 npm 安装:
openclaw mcp set wazuh '{
"command": "wazuh-mcp",
"env": {
"WAZUH_URL": "https://your-wazuh-manager:55000",
"WAZUH_USERNAME": "wazuh-wui",
"WAZUH_PASSWORD": "your-password",
"WAZUH_INDEXER_URL": "https://your-wazuh-indexer:9200",
"WAZUH_INDEXER_USERNAME": "admin",
"WAZUH_INDEXER_PASSWORD": "your-indexer-password"
}
}'然后重启 OpenClaw 网关以加载新服务器:
systemctl --user restart openclaw-gateway
openclaw mcp list # confirm "wazuh" is registeredHermes Agent
Hermes Agent 从 ~/.hermes/config.yaml 中的 mcp_servers 键读取 MCP 配置。添加一个条目:
mcp_servers:
wazuh:
command: "wazuh-mcp"
env:
WAZUH_URL: "https://your-wazuh-manager:55000"
WAZUH_USERNAME: "wazuh-wui"
WAZUH_PASSWORD: "your-password"
WAZUH_INDEXER_URL: "https://your-wazuh-indexer:9200"
WAZUH_INDEXER_USERNAME: "admin"
WAZUH_INDEXER_PASSWORD: "your-indexer-password"或者,从源代码检出运行而不是全局 npm 安装时:
mcp_servers:
wazuh:
command: "node"
args: ["/absolute/path/to/wazuh-mcp/dist/index.js"]
env:
WAZUH_URL: "https://your-wazuh-manager:55000"
WAZUH_USERNAME: "wazuh-wui"
WAZUH_PASSWORD: "your-password"
WAZUH_INDEXER_URL: "https://your-wazuh-indexer:9200"
WAZUH_INDEXER_USERNAME: "admin"
WAZUH_INDEXER_PASSWORD: "your-indexer-password"然后在 Hermes 会话中重新加载 MCP:
/reload-mcpCodex CLI
Codex CLI 通过 codex mcp add 注册 MCP 服务器:
codex mcp add wazuh \
--env WAZUH_URL=https://your-wazuh-manager:55000 \
--env WAZUH_USERNAME=wazuh-wui \
--env WAZUH_PASSWORD=your-password \
--env WAZUH_INDEXER_URL=https://your-wazuh-indexer:9200 \
--env WAZUH_INDEXER_USERNAME=admin \
--env WAZUH_INDEXER_PASSWORD=your-indexer-password \
-- wazuh-mcp或者,从源代码检出运行:
codex mcp add wazuh \
--env WAZUH_URL=https://your-wazuh-manager:55000 \
--env WAZUH_USERNAME=wazuh-wui \
--env WAZUH_PASSWORD=your-password \
-- node /absolute/path/to/wazuh-mcp/dist/index.jsCodex 将条目写入 ~/.codex/config.toml 下的 [mcp_servers.wazuh]。使用以下命令验证:
codex mcp list独立运行
export WAZUH_URL=https://your-wazuh-manager:55000
export WAZUH_USERNAME=wazuh-wui
export WAZUH_PASSWORD=your-password
npm start开发
npm run dev # Watch mode with tsx
npm run lint # Type checking
npm test # Run testsMCP 工具
代理工具
工具 | 描述 |
| 列出所有代理,支持可选的状态过滤 (active, disconnected, never_connected, pending) |
| 通过 ID 获取特定代理的详细信息 |
| 获取代理的 CPU、内存和磁盘统计信息 |
警报工具
工具 | 描述 |
| 获取近期警报,支持按级别、代理、规则和文本搜索进行过滤 |
| 通过 ID 获取单个警报 |
| 在所有警报中进行全文搜索 |
规则工具
工具 | 描述 |
| 列出检测规则,支持级别和组过滤 |
| 获取完整的规则详细信息,包括合规性映射 |
| 按描述文本搜索规则 |
SCA 工具 (安全配置评估)
工具 | 描述 |
| 列出代理的 SCA 策略和评分 (CIS 基准等) |
| 获取单个检查结果,包含补救步骤和合规性映射 |
Syscollector 工具 (系统清单)
工具 | 描述 |
| 获取操作系统信息 (名称、版本、架构、主机名) |
| 列出已安装的软件包及其版本 |
| 列出正在运行的进程及其 PID 和命令行 |
| 列出开放的网络端口及其关联进程 |
| 列出网络接口和 IP 地址 |
| 列出已安装的 Windows 修补程序/补丁 |
FIM & Rootcheck 工具
工具 | 描述 |
| 获取文件完整性监控结果 (文件、注册表项、哈希值) |
| 获取 Rootkit 检测扫描结果 |
管理器工具
工具 | 描述 |
| 获取按级别和模块过滤的 Wazuh 管理器日志 |
| 按部分获取活动的管理器配置 |
组工具
工具 | 描述 |
| 列出所有代理组 |
| 列出特定组中的代理 |
其他工具
工具 | 描述 |
| 列出日志解码器,支持可选的名称过滤 |
| 获取 Wazuh 管理器版本和 API 信息 |
MCP 资源
资源 URI | 描述 |
| 所有已注册的代理及其状态 |
| 最近 25 条安全警报 |
| 按严重性排序的检测规则 |
MCP 提示词
提示词 | 描述 |
| 带有 MITRE 映射和补救措施的分步警报调查 |
| 全面的代理健康评估 (状态、资源、警报) |
| 包含合规性覆盖范围的完整环境安全摘要 |
示例
列出活跃代理
Use list_agents with status "active" to see all connected agents.调查暴力破解尝试
Search alerts for "brute force" and investigate the top result,
including the MITRE ATT&CK technique and remediation steps.检查代理健康状况
Run an agent health check on agent 001 - check its connection status,
resource usage, and any recent critical alerts.查找高严重性规则
List all rules with level 12 or higher to see critical detection rules
and their compliance framework mappings.测试
npm test # Run all tests
npm run test:watch # Watch mode测试使用模拟的 Wazuh API 响应 - 无需实时 Wazuh 实例。
项目结构
wazuh-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── config.ts # Environment configuration
│ ├── client.ts # Wazuh REST API client (JWT auth)
│ ├── indexer-client.ts # Wazuh Indexer (OpenSearch) client
│ ├── types.ts # TypeScript type definitions
│ ├── resources.ts # MCP resource handlers
│ ├── prompts.ts # MCP prompt templates
│ └── tools/
│ ├── agents.ts # Agent management tools
│ ├── alerts.ts # Alert query tools
│ ├── rules.ts # Rule query tools
│ ├── decoders.ts # Decoder listing tool
│ ├── version.ts # Version info tool
│ ├── sca.ts # Security Configuration Assessment
│ ├── syscollector.ts # System inventory (OS, packages, ports, etc.)
│ ├── syscheck.ts # File Integrity Monitoring
│ ├── rootcheck.ts # Rootkit detection
│ ├── manager.ts # Manager logs and configuration
│ └── groups.ts # Agent group management
├── tests/
│ ├── client.test.ts # API client unit tests
│ └── tools.test.ts # Tool handler unit tests
├── package.json
├── tsconfig.json
├── tsup.config.ts
└── vitest.config.ts许可证
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/solomonneas/wazuh-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server