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 <noreply@anthropic.com>
This commit is contained in:
58
CLAUDE.md
58
CLAUDE.md
@@ -60,6 +60,20 @@ journalctl -u haproxy-mcp -f # Logs
|
|||||||
- External: `https://mcp.inouter.com/mcp` (via HAProxy)
|
- External: `https://mcp.inouter.com/mcp` (via HAProxy)
|
||||||
- **Auto-restore:** Servers restored from `servers.json` on startup
|
- **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
|
## Zero-Reload Domain Management
|
||||||
|
|
||||||
### How It Works
|
### 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}'
|
-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
|
### Domain Management
|
||||||
| Tool | Description |
|
| Tool | Description |
|
||||||
@@ -199,7 +245,13 @@ curl -X POST https://mcp.inouter.com/mcp \
|
|||||||
| `haproxy_remove_server` | Remove server from slot, auto-saved |
|
| `haproxy_remove_server` | Remove server from slot, auto-saved |
|
||||||
| `haproxy_set_server_state` | Set state: ready/drain/maint |
|
| `haproxy_set_server_state` | Set state: ready/drain/maint |
|
||||||
| `haproxy_set_server_weight` | Set weight (0-256) |
|
| `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
|
### Monitoring
|
||||||
| Tool | Description |
|
| Tool | Description |
|
||||||
@@ -270,7 +322,7 @@ echo "set server pool_1/pool_1_1 state ready" | nc localhost 9999
|
|||||||
```
|
```
|
||||||
/opt/haproxy/
|
/opt/haproxy/
|
||||||
├── mcp/ # MCP server (streamable-http)
|
├── mcp/ # MCP server (streamable-http)
|
||||||
│ └── server.py # Main MCP server (~1100 lines, 17 tools)
|
│ └── server.py # Main MCP server (~1300 lines, 19 tools)
|
||||||
├── conf/
|
├── conf/
|
||||||
│ ├── haproxy.cfg # Main HAProxy config (100 pool backends)
|
│ ├── haproxy.cfg # Main HAProxy config (100 pool backends)
|
||||||
│ ├── domains.map # Domain → Pool mapping
|
│ ├── domains.map # Domain → Pool mapping
|
||||||
|
|||||||
Reference in New Issue
Block a user