Skip to content

Commit a9636fb

Browse files
committed
Bump version to 4.0.7
1 parent 3e1e7be commit a9636fb

File tree

8 files changed

+42
-10
lines changed

8 files changed

+42
-10
lines changed

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [4.0.7] - 2026-02-25
9+
10+
### Added
11+
- 19 new action/verification/rollback tools (48 tools total):
12+
- 9 active response tools: block_ip, isolate_host, kill_process, disable_user, quarantine_file, active_response, firewall_drop, host_deny, restart
13+
- 5 verification tools: check_blocked_ip, check_agent_isolation, check_process, check_user_status, check_file_quarantine
14+
- 5 rollback tools: unisolate_host, enable_user, restore_file, firewall_allow, host_allow
15+
- Input validation for action tool parameters (IP addresses, file paths, usernames, AR commands)
16+
- Batch request size limit (MAX_BATCH_SIZE=100) to prevent resource exhaustion
17+
- SSE keepalive loop cancellation on client disconnect
18+
- `fastmcp>=2.14.0` added to pyproject.toml dependencies
19+
20+
### Fixed
21+
- **Circuit breaker race condition**: State transitions now use asyncio.Lock for thread safety
22+
- **Retry on non-transient errors**: Narrowed retry scope to 5xx and connection errors only (was retrying 400/401/404)
23+
- **Circuit breaker monitoring always "unknown"**: Fixed `cb._state``cb.state.value` attribute mismatch
24+
- **Unbounded Prometheus metric cardinality**: Endpoint labels now normalized to fixed set
25+
- **JSONDecodeError crashes**: Added handling at all 5 `response.json()` call sites in wazuh_client.py and wazuh_indexer.py
26+
- **Wazuh Indexer init race condition**: Added asyncio.Lock with double-check pattern
27+
- **Non-deterministic cache keys**: Replaced `hash()` with `sorted()` for stable cross-process keys
28+
- **Premature metrics increment**: Removed hardcoded status_code=200 counter before request processing
29+
- **Session cleanup on every request**: Throttled to run at most every 60 seconds
30+
- **10 broken MCP tools** calling non-existent Wazuh Manager API endpoints
31+
- **get_wazuh_alerts** now queries Wazuh Indexer instead of non-existent Manager API endpoint
32+
- **3 broken endpoints**: `/manager/stats/all``/manager/stats`, `/cluster/health``/cluster/healthcheck`, `/manager/stats/logcollector``/manager/stats/analysisd`
33+
- **get_rules_summary** calling non-existent `/rules/summary` endpoint — now aggregates from `/rules`
34+
- **CI release workflow**: Removed `|| true` that silenced test failures
35+
- **CI security workflow**: Replaced `|| true` with `continue-on-error: true` for proper visibility
36+
37+
### Removed
38+
- 4 dead-code methods with non-existent API endpoints (get_incidents, create_incident, update_incident, get_manager_version_check)
39+
840
## [4.0.6] - 2025-02-14
941

1042
### Added

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
ARG PYTHON_VERSION=3.13
77
ARG BUILD_DATE
8-
ARG VERSION=4.0.6
8+
ARG VERSION=4.0.7
99

1010
# Stage 1: Build dependencies
1111
FROM python:${PYTHON_VERSION}-alpine AS builder

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
**Production-ready MCP server connecting AI assistants to Wazuh SIEM.**
99

10-
> **Version 4.0.6** | Wazuh 4.8.0 - 4.14.3 | [Full Changelog](CHANGELOG.md)
10+
> **Version 4.0.7** | Wazuh 4.8.0 - 4.14.3 | [Full Changelog](CHANGELOG.md)
1111
1212
---
1313

compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ services:
1313
args:
1414
BUILD_DATE: ${BUILD_DATE}
1515
PYTHON_VERSION: ${PYTHON_VERSION:-3.13}
16-
VERSION: ${VERSION:-4.0.6}
16+
VERSION: ${VERSION:-4.0.7}
1717
target: production
1818

19-
image: wazuh-mcp-remote-server:${VERSION:-4.0.6}
19+
image: wazuh-mcp-remote-server:${VERSION:-4.0.7}
2020
container_name: wazuh-mcp-remote-server
2121
hostname: wazuh-mcp-remote-server
2222

deploy.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python3
22
"""
3-
OS-Agnostic Deployment Script for Wazuh MCP Server v4.0.6
3+
OS-Agnostic Deployment Script for Wazuh MCP Server v4.0.7
44
Works on Windows, macOS, and Linux with Docker installed.
55
"""
66

@@ -39,7 +39,7 @@ def print_header():
3939
"""Print deployment header"""
4040
print(f"{Colors.CYAN}{'=' * 70}{Colors.NC}")
4141
print(f"{Colors.CYAN} WAZUH MCP REMOTE SERVER - PRODUCTION DEPLOYMENT{Colors.NC}")
42-
print(f"{Colors.CYAN} Version: 4.0.6 | OS-Agnostic Docker Deployment{Colors.NC}")
42+
print(f"{Colors.CYAN} Version: 4.0.7 | OS-Agnostic Docker Deployment{Colors.NC}")
4343
print(f"{Colors.CYAN}{'=' * 70}{Colors.NC}\n")
4444

4545

@@ -182,7 +182,7 @@ def build_and_deploy():
182182

183183
# Set build metadata
184184
os.environ['BUILD_DATE'] = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
185-
os.environ['VERSION'] = os.environ.get('VERSION', '4.0.6')
185+
os.environ['VERSION'] = os.environ.get('VERSION', '4.0.7')
186186
os.environ['PYTHON_VERSION'] = os.environ.get('PYTHON_VERSION', '3.13')
187187

188188
# Build with Docker Compose

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "wazuh-mcp-server"
7-
version = "4.0.6"
7+
version = "4.0.7"
88
description = "Production-grade MCP remote server for Wazuh SIEM integration with SSE transport"
99
readme = "README.md"
1010
license = {text = "MIT"}

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Wazuh MCP Server v4.0.6 - Production Grade
1+
# Wazuh MCP Server v4.0.7 - Production Grade
22
# MCP-compliant remote server with comprehensive monitoring
33
# Updated: February 2026
44

src/wazuh_mcp_server/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
through the Model Context Protocol (MCP), enabling natural language security operations.
55
"""
66

7-
__version__ = "4.0.6"
7+
__version__ = "4.0.7"
88
__all__ = ["__version__"]

0 commit comments

Comments
 (0)