wazuh-mcp
Wazuh SIEM/XDR 플랫폼을 위한 Model Context Protocol (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 페이지네이션 지원
타입 안전성 - 엄격 모드 및 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 | 예 | - | API 사용자 이름 |
| WAZUH_PASSWORD | 예 | - | API 비밀번호 |
| WAZUH_VERIFY_SSL | 아니요 | false | SSL 인증서 확인을 위해 true로 설정 |
대체 변수 이름인 WAZUH_BASE_URL 및 WAZUH_USER도 지원됩니다.
Wazuh Indexer (OpenSearch) - 경고에 필수
Wazuh 4.x는 경고를 REST API가 아닌 Wazuh Indexer(OpenSearch)에 저장합니다. 경고 도구(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 | SSL 인증서 확인을 위해 true로 설정 |
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는 mcp_servers 키 아래의 ~/.hermes/config.yaml에서 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는 [mcp_servers.wazuh] 아래의 ~/.codex/config.toml에 항목을 작성합니다. 다음으로 확인하세요:
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 도구 (시스템 인벤토리)
도구 | 설명 |
| OS 정보 가져오기 (이름, 버전, 아키텍처, 호스트 이름) |
| 버전이 포함된 설치된 소프트웨어 패키지 나열 |
| PID 및 명령줄이 포함된 실행 중인 프로세스 나열 |
| 관련 프로세스가 포함된 열린 네트워크 포트 나열 |
| 네트워크 인터페이스 및 IP 주소 나열 |
| 설치된 Windows 핫픽스/패치 나열 |
FIM 및 Rootcheck 도구
도구 | 설명 |
| 파일 무결성 모니터링 결과 가져오기 (파일, 레지스트리 키, 해시) |
| 루트킷 탐지 스캔 결과 가져오기 |
관리자 도구
도구 | 설명 |
| 레벨 및 모듈별로 필터링된 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