Skip to main content
Glama

wazuh-mcp

TypeScript Node.js MCP License: MIT

A Model Context Protocol (MCP) server for the Wazuh SIEM/XDR platform. Query agents, security alerts, detection rules, and decoders directly from Claude or any MCP-compatible client.

Features

  • 11 MCP Tools - Agents, alerts, rules, decoders, and version info

  • 3 MCP Resources - Pre-built views for agents, recent alerts, and rule summaries

  • 3 MCP Prompts - Alert investigation, agent health checks, and security overviews

  • JWT Authentication - Automatic token management with refresh on expiry

  • Full Compliance Mapping - PCI-DSS, GDPR, HIPAA, NIST 800-53, MITRE ATT&CK

  • Pagination - All list endpoints support limit/offset pagination

  • Type-Safe - Full TypeScript with strict mode and Zod schema validation

Prerequisites

  • Node.js 20+

  • A running Wazuh manager with API access (default port 55000)

  • Wazuh API credentials (username/password)

Installation

git clone https://github.com/solomonneas/wazuh-mcp.git
cd wazuh-mcp
npm install
npm run build

Configuration

Set the following environment variables:

Variable

Required

Default

Description

WAZUH_URL

Yes

-

Wazuh API URL (e.g., https://10.0.0.2:55000)

WAZUH_USERNAME

Yes

-

API username

WAZUH_PASSWORD

Yes

-

API password

WAZUH_VERIFY_SSL

No

false

Set to true to verify SSL certificates

Alternative variable names WAZUH_BASE_URL and WAZUH_USER are also supported.

Usage

Claude Desktop

Add to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "wazuh": {
      "command": "node",
      "args": ["/path/to/wazuh-mcp/dist/index.js"],
      "env": {
        "WAZUH_URL": "https://your-wazuh-manager:55000",
        "WAZUH_USERNAME": "wazuh-wui",
        "WAZUH_PASSWORD": "your-password"
      }
    }
  }
}

Standalone

export WAZUH_URL=https://your-wazuh-manager:55000
export WAZUH_USERNAME=wazuh-wui
export WAZUH_PASSWORD=your-password
npm start

Development

npm run dev    # Watch mode with tsx
npm run lint   # Type checking
npm test       # Run tests

MCP Tools

Agent Tools

Tool

Description

list_agents

List all agents with optional status filtering (active, disconnected, never_connected, pending)

get_agent

Get detailed info for a specific agent by ID

get_agent_stats

Get CPU, memory, and disk statistics for an agent

Alert Tools

Tool

Description

get_alerts

Retrieve recent alerts with filtering by level, agent, rule, and text search

get_alert

Retrieve a single alert by ID

search_alerts

Full-text search across all alerts

Rule Tools

Tool

Description

list_rules

List detection rules with level and group filtering

get_rule

Get full rule details including compliance mappings

search_rules

Search rules by description text

Other Tools

Tool

Description

list_decoders

List log decoders with optional name filtering

get_wazuh_version

Get Wazuh manager version and API info

MCP Resources

Resource URI

Description

wazuh://agents

All registered agents and their status

wazuh://alerts/recent

25 most recent security alerts

wazuh://rules/summary

Detection rules sorted by severity

MCP Prompts

Prompt

Description

investigate-alert

Step-by-step alert investigation with MITRE mapping and remediation

agent-health-check

Comprehensive agent health assessment (status, resources, alerts)

security-overview

Full environment security summary with compliance coverage

Examples

List active agents

Use list_agents with status "active" to see all connected agents.

Investigate a brute force attempt

Search alerts for "brute force" and investigate the top result,
including the MITRE ATT&CK technique and remediation steps.

Check agent health

Run an agent health check on agent 001 - check its connection status,
resource usage, and any recent critical alerts.

Find high-severity rules

List all rules with level 12 or higher to see critical detection rules
and their compliance framework mappings.

Testing

npm test              # Run all tests
npm run test:watch    # Watch mode

Tests use mocked Wazuh API responses - no live Wazuh instance needed.

Project Structure

wazuh-mcp/
├── src/
│   ├── index.ts           # MCP server entry point
│   ├── config.ts          # Environment configuration
│   ├── client.ts          # Wazuh REST API client (JWT auth)
│   ├── 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
├── 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

License

MIT

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