wazuh-mcp
MCP server for Wazuh SIEM/XDR platform integration.
A. 模型上下文协议 (MCP)服务器 华苏 SIEM/XDR平台。直接从Claude或任何兼容MCP的客户端查询代理、安全警报、检测规则和解码器。
特性
- 25个MCP工具 -代理、警报、规则、解码器、SCA、系统收集器、FIM、rootcheck、组和管理器
- 3 MCP资源 -代理、最近警报和规则摘要的预构建视图
- 3个MCP提示 -警报调查、代理健康检查和安全概述
- JWT身份验证 -自动令牌管理,到期时刷新
- 完全合规性映射 - PCI-DSS,GDPR,HIPAA,NIST 800-53,MITRE ATT&CK
- 分页 -所有列表端点都支持限制/偏移分页
- 类型安全 -具有严格模式和Zod模式验证的完整TypeScript
先决条件
- Node.js 20+
- 具有API访问权限的正在运行的Wazuh管理器(默认端口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 |是|-|neneneba API用户名| | WAZUH_PASSWORD |是|-|neneneba 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索引器URL(例如。, https://10.0.0.2:9200) | | WAZUH_INDEXER_USERNAME |没有| admin |索引器用户名| | WAZUH_INDEXER_PASSWORD |无|-|索引器密码| | WAZUH_INDEXER_VERIFY_SSL |没有| false |设置为 true 验证SSL证书|
如果 WAZUH_INDEXER_URL 如果未设置,警报工具将返回一条有用的配置消息。所有其他工具(代理、规则、解码器、版本)都可以在没有索引器的情况下工作。
用法
克劳德桌面版
添加 ~/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 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 使其可从任何目录访问,而不仅仅是当前项目。
开爪
如果你从源代码签出而不是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 registered赫尔墨斯代理
赫尔墨斯代理 从读取MCP配置 ~/.hermes/config.yaml 在...之下 mcp_servers 钥匙。添加条目:
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 通过注册MCP服务器 codex mcp add:
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工具
代理工具
| 工具 | 说明 |
|---|---|
list_agents | 列出所有具有可选状态筛选(活动、断开连接、从未连接、挂起)的代理 |
get_agent | 按ID获取特定代理的详细信息 |
get_agent_stats | 获取代理的CPU、内存和磁盘统计信息 |
警报工具
| 工具 | 说明 |
|---|---|
get_alerts | 通过按级别、代理、规则和文本搜索进行筛选来检索最近的警报 |
get_alert | 按ID检索单个警报 |
search_alerts | 在所有警报中进行全文搜索 |
规则工具
| 工具 | 说明 |
|---|---|
list_rules | 列出具有级别和组过滤的检测规则 |
get_rule | 获取完整的规则详细信息,包括合规性映射 |
search_rules | 按描述文本搜索规则 |
SCA工具(安全配置评估)
| 工具 | 说明 |
|---|---|
get_sca_policies | 列出代理的SCA策略和分数(CIS基准等) |
get_sca_checks | 通过补救步骤和合规性映射获取个人检查结果 |
Syscollector工具(系统资源清册)
| 工具 | 说明 |
|---|---|
get_agent_os | 获取操作系统信息(名称、版本、体系结构、主机名) |
get_agent_packages | 列出已安装的软件包及其版本 |
get_agent_processes | 使用PID和命令行列出正在运行的进程 |
get_agent_ports | 列出具有关联进程的开放网络端口 |
get_agent_network | 列出网络接口和IP地址 |
get_agent_hotfixes | 列出已安装的Windows修补程序/补丁 |
FIM和根检查工具
| 工具 | 说明 |
|---|---|
get_fim_files | 获取文件完整性监控结果(文件、注册表项、哈希) |
get_rootcheck | 获取rootkit检测扫描结果 |
经理工具
| 工具 | 说明 |
|---|---|
get_manager_logs | 获取按级别和模块过滤的Wazuh管理器日志 |
get_manager_config | 按部分获取活动管理器配置 |
组工具
| 工具 | 说明 |
|---|---|
list_groups | 列出所有代理组 |
get_group_agents | 列出特定组中的代理 |
其他工具
| 工具 | 说明 |
|---|---|
list_decoders | 列出具有可选名称过滤的日志解码器 |
get_wazuh_version | 获取Wazuh管理器版本和API信息 |
MCP资源
| 资源URI | 描述 |
|---|---|
wazuh://agents | 所有注册代理人及其身份 |
wazuh://alerts/recent | 25个最新安全警报 |
wazuh://rules/summary | 按严重程度排序的检测规则 |
MCP提示
| 提示 | 描述 |
|---|---|
investigate-alert | 通过MITRE映射和补救措施进行逐步警报调查 |
agent-health-check | 全面的代理健康评估(状态、资源、警报) |
security-overview | 完整的环境安全摘要,涵盖合规性 |
示例
列出活动代理
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许可证
麻省理工学院
