Skip to main content
ClaudeWave

Governed AI-ops for Traefik + Caddy + HAProxy reverse proxies / load balancers: routes, services, up

MCP ServersRegistry oficial0 estrellas0 forksPythonMITActualizado yesterday
Install in Claude Code / Claude Desktop
Method: UVX (Python) · proxy-aiops
Claude Code CLI
claude mcp add proxy-aiops -- uvx proxy-aiops
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "proxy-aiops": {
      "command": "uvx",
      "args": ["proxy-aiops"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Package name inferred from the repository name. Verify it exists on PyPI, or clone https://github.com/AIops-tools/Proxy-AIops and follow its README.
Casos de uso

Resumen de MCP Servers

<!-- mcp-name: io.github.AIops-tools/proxy-aiops -->

# Proxy AIops

Governed, audited AI-ops for **Traefik**, **Caddy** and **HAProxy** reverse proxies / load balancers — for AI agents (via MCP) and humans (via CLI).

> **Disclaimer**: Community-maintained open-source project. **Not affiliated with, endorsed by, or sponsored by Traefik Labs, the Caddy project, HAProxy Technologies, or the HAProxy project.** Traefik, Caddy and HAProxy are trademarks of their respective owners. MIT licensed.

proxy-aiops speaks to three proxy platforms behind one MCP server — **Traefik**
(its API under `/api/...`, metrics-text counters via `/metrics`), **Caddy** (the
admin API, default `localhost:2019`) and **HAProxy** (the Data Plane API v2 under
`/v2/...`, HTTP Basic auth) — with the **same tools working on all three**. Each
target in the config names its own `platform`; a name-keyed platform registry
selects the API shape (auth + resource paths), and an explicit **support matrix**
raises teaching errors for ops a platform genuinely cannot do — e.g. Traefik
writes point you at its providers (file, container labels, orchestrator CRDs), never
a silent no-op.

Every tool runs through a **built-in governance harness** (vendored, zero external
dependency): audit log, token/call budget with runaway circuit-breaker,
descriptive risk-tier labelling, undo-token recording, and output sanitisation.

## Why this exists

- **One server, three proxies** — Traefik, Caddy and HAProxy in a mixed edge,
  spoken to through identical tool names. Adding another proxy later is a new
  platform descriptor, not a rewrite.
- **Read the whole edge** — version, entrypoints/listeners, routes (routers /
  caddy routes / frontends) with parsed hosts+paths, services and server-level
  upstream health, middlewares, TLS domain inventory, traffic/error counters,
  and the live config tree (snapshot + search).
- **Flagship RCA analyses** — transparent heuristics that show their numbers,
  never a black-box verdict: `backend_health_rca` (down upstreams → cause class
  L4/L6/L7/DNS/maint + action), `cert_expiry_sweep` (days-to-expiry buckets +
  per-platform renewal hints), `error_rate_rca` (5xx share vs the fleet
  baseline, dominant code → 502/503/504/500 cause), and
  `route_conflict_analysis` (shadowed routes, dead routes, redirect loops).
- **Governed writes** — caddy config `set` / `delete` / full `load` (the prior
  subtree/config is fetched first, so the recorded undo replays a real restore)
  and haproxy runtime server `state` (ready/drain/maint) and `weight` (undo
  restores the prior value) — all with `dry_run` previews; delete/load are
  **risk=high** with double confirmation at the CLI.

## What this tool does, and does not, decide

It delivers proxy operations — reads and writes — accurately and efficiently,
and records every one of them. It does **not** decide whether a write is allowed
to happen. That is the agent's judgement, or the permission of the account you
connect it with: give the HAProxy Data Plane API a read-only role, or scope down
the Traefik/Caddy admin API you point it at, and the writes fail at the server —
the place that actually owns the permission.

So there is no read-only switch, no policy file, no approval gate to configure.
The one thing the tool guarantees is that nothing is silent: **every call, over
MCP and over the CLI alike, lands an audit row** in `~/.proxy-aiops/audit.db`,
and reversible writes still capture their before-state and record an inverse.

> Each tool declares a `risk_level`, kept in agreement with its `[READ]`/`[WRITE]`
> documentation tag by a test, and carried into the audit row as a descriptive
> tier — so a reviewer can see at a glance that a row was a high-risk delete. It
> is a label, not a gate.

Running a smaller / local model? See
[agent-guardrails.md](skills/proxy-aiops/references/agent-guardrails.md) — it lists
the guardrails this tool now enforces for you (so you don't spend prompt budget
restating them) and gives a ready-made system prompt for what's left.

## Tool inventory (28 tools)

| Domain | Tools | # | Kind |
|--------|-------|:-:|------|
| **Status** | `proxy_overview`, `version_info`, `list_entrypoints` | 3 | read |
| **Routes** | `list_routes`, `route_detail`, `find_route` | 3 | read |
| **Services** | `list_services`, `service_detail`, `list_upstreams`, `upstream_detail`, `list_middlewares` | 5 | read |
| **Certificates** | `list_certificates` | 1 | read |
| **Traffic** | `traffic_stats`, `error_counters` | 2 | read |
| **Config** | `config_snapshot`, `search_config`, `get_config_value` | 3 | read |
| **Flagship analyses** | `backend_health_rca`, `cert_expiry_sweep`, `error_rate_rca`, `route_conflict_analysis` | 4 | read |
| **Writes (caddy)** | `set_config_value` | 1 | write (**med**) |
| **Writes (caddy)** | `delete_config_path`, `load_config` | 2 | write (**high**) |
| **Writes (haproxy)** | `set_server_state`, `set_server_weight` | 2 | write (**med**) |
| **Undo** | `undo_list`, `undo_apply` | 2 | read / write |

Reversible writes record an inverse **undo descriptor** built from the real fetched
before-state (`set_config_value` restores the prior subtree; `delete_config_path`
re-creates it; `load_config` re-loads the snapshotted config; server state/weight
restore the prior value). The undo params match each tool's own signature, so the
descriptor replays as-is.

### Per-platform support matrix

| Capability | traefik | caddy | haproxy |
|------------|:-------:|:-----:|:-------:|
| Routes / services / upstream health | ✅ | ✅ | ✅ |
| Middlewares list | ✅ | teaching note (inline handlers) | teaching note (haproxy.cfg) |
| TLS cert inventory + expiry sweep | ✅ | ✅ | teaching note (.pem files) |
| Error counters / error-rate RCA | ✅ (/metrics) | teaching note (no per-route counters) | ✅ (stats) |
| Config snapshot / search | ✅ (rawdata, read-only) | ✅ | teaching note |
| Config writes | teaching error → edit the **provider** | ✅ (the write surface) | teaching error → runtime writes |
| Runtime server state / weight | teaching error → provider | teaching error → config tree | ✅ |

Unsupported combinations **raise a teaching error that says what to use instead**
— never a silent empty result.

## Install

```bash
uv tool install proxy-aiops        # or: pipx install proxy-aiops
```

## Quick start

```bash
proxy-aiops init                     # wizard: pick platform (traefik/caddy/haproxy) + optional encrypted secret
proxy-aiops doctor                   # verify config, secrets, and connectivity
proxy-aiops overview                 # one-shot: version + route/service counts + upstream health
proxy-aiops routes list              # normalised route table
proxy-aiops services upstreams       # server-level upstream health
proxy-aiops analyze health           # backend/upstream health RCA
proxy-aiops analyze errors           # 5xx error-rate RCA
proxy-aiops analyze conflicts        # shadowed/dead routes, redirect loops
proxy-aiops certs --sweep            # TLS cert expiry sweep (traefik/caddy)
proxy-aiops server state app web1 drain --dry-run   # governed haproxy write preview
proxy-aiops config set apps/http/servers/srv0 '{"listen":[":8080"]}' --dry-run
```

Run the MCP server (stdio) for an agent:

```bash
proxy-aiops mcp                      # or: proxy-aiops-mcp
```

### MCP client config

```json
{
  "mcpServers": {
    "proxy-aiops": {
      "command": "uvx",
      "args": ["--from", "proxy-aiops", "proxy-aiops-mcp"],
      "env": { "PROXY_AIOPS_MASTER_PASSWORD": "your-master-password" }
    }
  }
}
```

> **Env-block caveat**: the `env` block is only needed when a credential is
> stored (haproxy always; traefik/caddy only behind Basic auth). MCP clients do
> **not** inherit your shell profile — set `PROXY_AIOPS_MASTER_PASSWORD` (and
> `PROXY_AIOPS_CONFIG` / `PROXY_AIOPS_HOME` if you relocated them) explicitly in
> the client config, or the server cannot unlock `secrets.enc`.

## Configuration

`~/.proxy-aiops/config.yaml` (non-secret connection details only):

```yaml
targets:
  - name: edge1
    platform: traefik        # traefik | caddy | haproxy
    base_url: http://192.0.2.10:8080
    verify_ssl: true
  - name: caddy1
    platform: caddy
    base_url: http://127.0.0.1:2019
  - name: lb1
    platform: haproxy
    base_url: http://192.0.2.20:5555
    username: dpapi          # Data Plane API user
```

The **secret** — the HAProxy Data Plane API password, or an optional Basic-auth
password in front of Traefik/Caddy — is stored **encrypted** in
`~/.proxy-aiops/secrets.enc` (Fernet + scrypt-derived key), never plaintext on
disk. Traefik and Caddy commonly run unauthenticated on localhost, so their
secret is **optional** (like a local socket); HAProxy's is required. Set it with
`proxy-aiops secret set <target>` or the `init` wizard. The store is unlocked by
a master password from `PROXY_AIOPS_MASTER_PASSWORD` (non-interactive/MCP/CI) or
an interactive prompt (CLI on a TTY). A legacy plaintext env var
`PROXY_<TARGET>_SECRET` is honoured as a fallback (migrate with
`proxy-aiops secret migrate`).

## Governance

Every MCP tool — and every CLI write, which routes through the same governed
functions — passes through `@governed_tool`. It records; it does not authorize
(see above).

- **Audit** — every call is logged to `~/.proxy-aiops/audit.db` (tool, params with
  secrets redacted, status, duration, risk tier, and any operator-supplied
  approver/rationale). The CLI writes the same row the MCP path does — there is no
  unaudited entry point.
- **Budget / runaway guard** — a safety backstop, not an authorization gate:
  per-process token/call caps and a repeat-call circuit breaker stop a stuck agent
  from burning unbounded calls/time (`PROXY_MAX_TOOL_CALLS`, `PROXY_RUNAWAY_MAX`,
  …; disable the breaker with `PROXY_RUNAWAY_MAX=0`).
- **Undo recording** — reversible writes record an inverse descriptor to
  `~/.proxy-aiops/undo.db` from the fetched before-state (recording only; an
  exte

Lo que la gente pregunta sobre Proxy-AIops

¿Qué es AIops-tools/Proxy-AIops?

+

AIops-tools/Proxy-AIops es mcp servers para el ecosistema de Claude AI. Governed AI-ops for Traefik + Caddy + HAProxy reverse proxies / load balancers: routes, services, up Tiene 0 estrellas en GitHub y se actualizó por última vez yesterday.

¿Cómo se instala Proxy-AIops?

+

Puedes instalar Proxy-AIops clonando el repositorio (https://github.com/AIops-tools/Proxy-AIops) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar AIops-tools/Proxy-AIops?

+

AIops-tools/Proxy-AIops aún no ha sido auditado por nuestro agente de seguridad. Revisa el repositorio original en GitHub antes de usarlo en producción.

¿Quién mantiene AIops-tools/Proxy-AIops?

+

AIops-tools/Proxy-AIops es mantenido por AIops-tools. La última actividad registrada en GitHub es de yesterday, con 0 issues abiertos.

¿Hay alternativas a Proxy-AIops?

+

Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.

Despliega Proxy-AIops en tu cloud

Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.

¿Mantienes este repo? Añade un badge a tu README

Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.

Featured on ClaudeWave: AIops-tools/Proxy-AIops
[![Featured on ClaudeWave](https://claudewave.com/api/badge/aiops-tools-proxy-aiops)](https://claudewave.com/repo/aiops-tools-proxy-aiops)
<a href="https://claudewave.com/repo/aiops-tools-proxy-aiops"><img src="https://claudewave.com/api/badge/aiops-tools-proxy-aiops" alt="Featured on ClaudeWave: AIops-tools/Proxy-AIops" width="320" height="64" /></a>

Más MCP Servers

Alternativas a Proxy-AIops