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`.
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues