wazuh-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WAZUH_API_URL | No | URL of the Wazuh Manager API, e.g. https://wazuh.example.com:55000 | |
| WAZUH_TIMEOUT | No | Per-request timeout in seconds, default 30 | 30 |
| WAZUH_API_USER | No | API username | |
| WAZUH_BIND_HOST | No | Bind address, default 127.0.0.1 | 127.0.0.1 |
| WAZUH_BIND_PORT | No | Bind port, default 8080 | 8080 |
| WAZUH_CA_BUNDLE | No | Path to Wazuh root CA certificate | |
| WAZUH_HTTP_PATH | No | URL path, default /mcp | /mcp |
| WAZUH_TRANSPORT | No | stdio or http, default stdio | stdio |
| WAZUH_PUBLIC_URL | No | Required for http transport, the URL clients reach | |
| WAZUH_VERIFY_SSL | No | Whether to verify TLS, default true | true |
| WAZUH_ALLOW_WRITE | No | Enables state-changing tools, default false | false |
| WAZUH_AUTH_TOKENS | No | Required for http transport, comma-separated bearer tokens | |
| WAZUH_INDEXER_URL | No | URL of the Wazuh Indexer, e.g. https://wazuh.example.com:9200 | |
| WAZUH_MAX_RESULTS | No | Ceiling on result sets, default 500 | 500 |
| WAZUH_ALERTS_INDEX | No | Alert index pattern, default wazuh-alerts-* | wazuh-alerts-* |
| WAZUH_API_PASSWORD | No | API password | |
| WAZUH_INDEXER_USER | No | Indexer username | |
| WAZUH_ALLOWED_HOSTS | No | Accepted Host values, default from public_url | |
| WAZUH_INDEXER_PASSWORD | No | Indexer password | |
| WAZUH_VULNERABILITY_INDEX | No | Vulnerability state index pattern, default wazuh-states-vulnerabilities-* | wazuh-states-vulnerabilities-* |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| wazuh_healthA | One-call situational awareness: manager version and uptime, the state of every Wazuh daemon, cluster status, agent connection counts and Indexer cluster health. Call this first when asked 'is Wazuh healthy' or when starting an investigation. |
| wazuh_cluster_statusA | Detailed cluster view: whether clustering is enabled, each node's role and address, and the manager's own healthcheck output including per-node sync status and agent distribution. |
| wazuh_manager_logsA | Read and filter ossec.log entries from the manager. Use this to diagnose ingestion problems, integration failures or daemon errors — filter to level='error' to see only what is broken. |
| wazuh_manager_statsA | Event-processing statistics from the manager: analysisd queue usage and event rates, remoted reception counts, or hourly/weekly alert volumes. Use analysisd stats to spot dropped events and queue saturation. |
| wazuh_manager_configA | Read the manager's running ossec.conf configuration, optionally narrowed to one section. Use this to confirm what is actually enabled — which modules, integrations, log sources or remote settings. |
| wazuh_api_requestA | Escape hatch for Manager API endpoints without a dedicated tool — for example /agents/stats/distinct, /tasks/status, /security/users, /overview/agents, or /experimental/* inventory endpoints. GET only, so it cannot change state. Prefer the purpose-built tools when one fits; they shape their output for readability. |
| wazuh_list_agentsA | List and filter agents enrolled with the Wazuh manager. Use this to answer 'which endpoints are disconnected', 'what agents are in group X', or 'which agents run an outdated version'. Supports server-side filtering, sorting and paging. |
| wazuh_get_agentA | Full picture of a single agent: registration and connection state, operating system, hardware, group membership and installed-package count. Start here when investigating a specific endpoint. |
| wazuh_agent_summaryA | Aggregate health of the whole agent fleet: connection-state counts, OS distribution, agents on outdated versions and agents with no group. The fastest way to answer 'how healthy is my deployment'. |
| wazuh_list_groupsA | List configured agent groups with their member counts and configuration checksums. Pass a group name to list its members instead. |
| wazuh_agent_configA | Fetch the configuration a running agent has actually loaded for one module — useful for confirming a group change or centralised config reached the endpoint. Common pairs: component='syscheck' configuration='syscheck', component='wmodules' configuration='wmodules', component='agent' configuration='client'. |
| wazuh_restart_agentsA | Restart one or more agents. This interrupts monitoring on the target endpoints while they come back up, and requires WAZUH_ALLOW_WRITE=true. |
| wazuh_search_alertsA | Search security alerts in the Wazuh Indexer over a time window. This is the main tool for questions like 'show me critical alerts in the last hour', 'what fired on server-db-01 yesterday', 'find SSH brute force attempts', or 'alerts matching MITRE T1110'. Returns a compact projection of each alert by default. |
| wazuh_alert_statsA | Group alerts by one or two fields and return counts — the tool for 'top 10 rules today', 'which agents are noisiest', 'alert counts by MITRE tactic', or 'top source IPs per agent'. Far cheaper than fetching alerts and counting them yourself. |
| wazuh_alert_timelineA | Bucket alert counts into time intervals to show trend and spikes — 'was there a spike overnight', 'alert volume per hour this week'. Optionally splits each interval by a field such as severity or agent. |
| wazuh_indexer_queryA | Escape hatch: send a raw OpenSearch query DSL body to a Wazuh index for anything the purpose-built alert tools cannot express — unusual aggregations, scripted fields, composite queries. Restricted to wazuh-* indices and read-only _search. |
| wazuh_list_indicesA | List the wazuh-* indices with health, document counts and sizes, plus Indexer cluster health. Use this to confirm what data exists and how far back it goes before querying. |
| wazuh_vulnerabilitiesA | List CVEs Wazuh has detected on endpoints, filterable by agent, severity, CVE ID and package. Answers 'what critical CVEs do we have', 'is CVE-2024-3094 anywhere in the estate', or 'which vulnerable packages are on this host'. Works on both 4.8+ (Indexer state) and earlier (Manager API) deployments. |
| wazuh_vulnerability_summaryA | Aggregate vulnerability exposure across the fleet: counts by severity, the most affected agents, the most common CVEs and the worst offending packages. Use this for exposure reporting and to decide where to look in detail. |
| wazuh_list_rulesA | Search the manager's ruleset. Use this to explain why an alert fired, to find every rule covering a compliance control ('which rules map to PCI DSS 10.2.4'), or to audit which high-severity rules are enabled. |
| wazuh_get_ruleA | Fetch a single rule including its full XML definition, so you can explain exactly what conditions trigger it and what it is mapped to. |
| wazuh_rule_groupsA | Enumerate the rule groups in the ruleset, or every value present for one compliance framework. Useful for discovering valid filter values before calling wazuh_list_rules or wazuh_search_alerts. |
| wazuh_list_decodersA | Search the decoders that parse raw logs into fields. Use this when an alert's fields look wrong or absent, to see how a log source is being parsed. |
| wazuh_mitreA | Look up MITRE ATT&CK techniques, tactics, groups, software or mitigations from the manager's bundled catalogue. Use it to expand a technique ID seen in an alert into its description, tactics and mitigations. |
| wazuh_cdb_listsB | List the CDB (constant database) lists used by rules for lookups such as known-bad IPs, allowed users or audit keys, optionally including their contents. |
| wazuh_sca_policiesA | List an agent's Security Configuration Assessment policies with pass/fail counts and hardening scores — CIS benchmarks and similar. Use this to answer 'how well hardened is this host' before drilling into individual failed checks. |
| wazuh_sca_checksA | List the individual configuration checks in one SCA policy, including the remediation text for each. Filter to result='failed' to get an actionable hardening list for a host. |
| wazuh_fim_findingsA | Query File Integrity Monitoring (syscheck) state for an agent: which monitored files and registry keys exist, their hashes, permissions and how many times they have changed. Use it to answer 'was this binary modified' or 'what changed in /etc'. |
| wazuh_rootcheckA | Read rootcheck findings for an agent — rootkit signatures, hidden processes and legacy policy-monitoring hits. Note this is Wazuh's older assessment module; SCA (wazuh_sca_checks) is the modern equivalent and usually more useful. |
| wazuh_run_scanA | Ask agents to start a syscheck (FIM) scan now instead of waiting for the schedule. This puts load on the target endpoints and requires WAZUH_ALLOW_WRITE=true. |
| wazuh_agent_inventoryA | Read collected inventory from one endpoint: installed packages, running processes, listening ports, network interfaces and addresses, hardware, OS or Windows hotfixes. Use it for questions like 'what is listening on this host', 'is package X installed', or 'what patches are missing'. |
| wazuh_find_softwareA | Search for a package across every agent at once — the tool for vulnerability response questions like 'which hosts have log4j installed' or 'who is still on OpenSSL 1.1.1'. Returns the matching package and version per agent. |
| wazuh_generate_reportA | Build a ready-to-share report by combining several Wazuh sources into one narrative with a markdown rendering. Report types: executive_summary (posture overview for leadership), threat_activity (top threats, MITRE breakdown, attacking IPs), agent_health (connectivity and version drift), vulnerability_exposure (CVE exposure by severity and host), compliance (control coverage for a framework), file_integrity (FIM change activity), authentication (login failures and brute-force patterns). Use this instead of stitching many tool calls together by hand. |
| wazuh_active_responseA | Execute an active-response command on agents — blocking an IP with firewall-drop, disabling an account, null-routing a host. This changes the state of production endpoints and can cut off network access, so it requires WAZUH_ALLOW_WRITE=true and should be confirmed with a human before use. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |