From d51e982f7cf6fe1ef73b34ce4fb377ad2bb27242 Mon Sep 17 00:00:00 2001 From: kaffa Date: Sun, 1 Feb 2026 13:10:42 +0000 Subject: [PATCH] docs: Update CLAUDE.md with health checks and environment variables - Add Environment Variables table with all configurable options - Add Health Check section with haproxy_health and haproxy_domain_health examples - Update MCP Tools count from 17 to 19 - Add new Health Check tools section - Update server.py description (line count and tool count) Co-Authored-By: Claude Opus 4.5 --- CLAUDE.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 598ac90..87829c5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -60,6 +60,20 @@ journalctl -u haproxy-mcp -f # Logs - External: `https://mcp.inouter.com/mcp` (via HAProxy) - **Auto-restore:** Servers restored from `servers.json` on startup +### Environment Variables +| Variable | Default | Description | +|----------|---------|-------------| +| `MCP_HOST` | `0.0.0.0` | MCP server bind host | +| `MCP_PORT` | `8000` | MCP server port | +| `HAPROXY_HOST` | `localhost` | HAProxy Runtime API host | +| `HAPROXY_PORT` | `9999` | HAProxy Runtime API port | +| `HAPROXY_STATE_FILE` | `/opt/haproxy/data/servers.state` | State file path | +| `HAPROXY_MAP_FILE` | `/opt/haproxy/conf/domains.map` | Map file path | +| `HAPROXY_SERVERS_FILE` | `/opt/haproxy/conf/servers.json` | Servers config path | +| `HAPROXY_POOL_COUNT` | `100` | Number of pool backends | +| `HAPROXY_MAX_SLOTS` | `10` | Max servers per pool | +| `LOG_LEVEL` | `INFO` | Logging level (DEBUG/INFO/WARNING/ERROR) | + ## Zero-Reload Domain Management ### How It Works @@ -182,7 +196,39 @@ curl -X POST https://mcp.inouter.com/mcp \ -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}},"id":0}' ``` -## MCP Tools (17 total) +## Health Check + +### System Health (`haproxy_health`) +Returns overall system status: +```json +{ + "status": "healthy", + "components": { + "mcp": {"status": "ok"}, + "haproxy": {"status": "ok", "version": "3.3.2", "uptime_sec": 3600}, + "config_files": {"status": "ok", "files": {"map_file": "ok", "servers_file": "ok"}} + } +} +``` + +### Domain Health (`haproxy_domain_health`) +Returns backend server status for a specific domain: +```json +{ + "domain": "api.example.com", + "backend": "pool_3", + "status": "healthy", + "servers": [ + {"name": "pool_3_1", "addr": "10.0.0.1:80", "status": "UP", "check_status": "L4OK"} + ], + "healthy_count": 1, + "total_count": 1 +} +``` + +**Status values:** `healthy` (all UP), `degraded` (partial UP), `down` (all DOWN), `no_servers` + +## MCP Tools (19 total) ### Domain Management | Tool | Description | @@ -199,7 +245,13 @@ curl -X POST https://mcp.inouter.com/mcp \ | `haproxy_remove_server` | Remove server from slot, auto-saved | | `haproxy_set_server_state` | Set state: ready/drain/maint | | `haproxy_set_server_weight` | Set weight (0-256) | -| `haproxy_get_server_health` | Get UP/DOWN/MAINT status | + +### Health Check +| Tool | Description | +|------|-------------| +| `haproxy_health` | System health (MCP, HAProxy, config files) | +| `haproxy_domain_health` | Domain-specific health with server status | +| `haproxy_get_server_health` | Get UP/DOWN/MAINT status for all servers | ### Monitoring | Tool | Description | @@ -270,7 +322,7 @@ echo "set server pool_1/pool_1_1 state ready" | nc localhost 9999 ``` /opt/haproxy/ ├── mcp/ # MCP server (streamable-http) -│ └── server.py # Main MCP server (~1100 lines, 17 tools) +│ └── server.py # Main MCP server (~1300 lines, 19 tools) ├── conf/ │ ├── haproxy.cfg # Main HAProxy config (100 pool backends) │ ├── domains.map # Domain → Pool mapping