Skip to main content
Glama
JessePP

uipath-anomaly-detector

by JessePP
README.md
# UiPath Orchestrator – Anomaly Detection MCP Server

Serwer MCP wywoływany przez Claude, który pobiera logi z UiPath Orchestrator,
wykrywa anomalie i zwraca bezpieczne, ustrukturyzowane podsumowanie.

Opis celu i działania projektu (dla nietechnicznych odbiorców) znajduje się
w `IPA_opis_projektu.md`. Ten plik zawiera instrukcję instalacji i konfiguracji.

Działa w dwóch trybach:
- **mock** – generuje syntetyczne dane testowe z wstrzykniętymi anomaliami,
  nie wymaga żadnego konta UiPath. Domyślny tryb.
- **live** – łączy się z prawdziwym Orchestratorem (Cloud lub on-premise).

## Instalacja

```bash
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
```

## Konfiguracja

Skopiuj `.env.example` do `.env` i uzupełnij wartości.

Tryb mock (domyślny, do testów bez konta UiPath):
```
UIPATH_MODE=mock
```

Tryb live – Cloud Orchestrator:
```
UIPATH_MODE=live
UIPATH_DEPLOYMENT=cloud
UIPATH_ORCHESTRATOR_URL=https://cloud.uipath.com
UIPATH_ACCOUNT_NAME=twoje-konto
UIPATH_TENANT_NAME=twoj-tenant
UIPATH_CLIENT_ID=...
UIPATH_CLIENT_SECRET=...
UIPATH_ORGANIZATION_UNIT_ID=...
```

Tryb live – Orchestrator on-premise:
```
UIPATH_MODE=live
UIPATH_DEPLOYMENT=onprem
UIPATH_ONPREM_URL=https://twoj-orchestrator.local
UIPATH_ONPREM_TENANCY=Default
UIPATH_ONPREM_USERNAME=...
UIPATH_ONPREM_PASSWORD=...
```

## Testy

```bash
.venv/bin/python -m pytest -v
```

## Uruchomienie lokalne (inspekcja MCP)

```bash
.venv/bin/mcp dev src/mcp_server.py
```

## Podłączenie do Claude Desktop / Claude Code

Dodaj do konfiguracji MCP (np. `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "uipath-anomaly-detector": {
      "command": "/sciezka/do/projektu/.venv/bin/python",
      "args": ["-m", "src.mcp_server"],
      "env": {
        "UIPATH_MODE": "mock"
      }
    }
  }
}
```

## Narzędzie MCP

`analyze_uipath_logs(time_range_hours=24, folder=None, process=None)`

Zwraca JSON z polami: `period_start`, `period_end`, `mode`, `total_logs_analyzed`,
`anomalies` (lista wykrytych anomalii z poziomem ważności), `risk_level`,
`recommendations`. Żadne surowe logi ani dane wrażliwe nie są zwracane.

## Ograniczenia obecnej implementacji

- Wykrywanie odstających czasów wykonania w trybie `live` wymaga rozszerzenia
  klienta o zapytania do `/odata/Jobs` (obecnie pole `duration_ms` jest tam
  zawsze `None` — w trybie `mock` jest w pełni wypełnione).
- Reguły anomalii są proste i statystyczne (próg, z-score) — łatwe do
  rozszerzenia w `src/anomaly_detector.py`.

Maintenance

ActivityStale
ResponsivenessNo issues