# GLPI

Wtyczka GLPI łączy Claude z instancją GLPI 11, platformą o otwartym kodzie do zarządzania usługami IT i zasobami. Jak każdą wtyczkę Speedwave, także tę pisze, rozwija i dostarcza wyłącznie Speednet.

## Co to robi

GLPI przechowuje twoje dane o usługach IT i zasobach: zgłoszenia, zmiany, problemy, komputery i inne zasoby, użytkowników, grupy, bazę wiedzy oraz projekty. Ta wtyczka pozwala Claude czytać i zapisywać te dane za pomocą 22 narzędzi, które obejmują cykl życia zgłoszenia, wyszukiwanie zasobów oraz obiekty katalogowe, takie jak użytkownicy i grupy. Pytasz zwykłym językiem, na przykład o listę otwartych zgłoszeń albo o komputery wyszukane po nazwie, a Claude sam dobiera właściwe narzędzie.

## Z czego się składa

Wtyczka to pojedynczy bezstanowy worker MCP: serwer Express na Node 24 i TypeScript, który łączy Claude z interfejsem High-Level REST API v2 GLPI (`api.php`), a nie ze starszym `apirest.php` v1. Jest przeznaczony konkretnie dla GLPI 11. Worker nie przechowuje żadnych danych GLPI między wywołaniami i nie utrzymuje własnej sesji poza swoim tokenem OAuth. Kontener działa z odebranymi wszystkimi uprawnieniami (capabilities), bez możliwości eskalacji uprawnień, z systemem plików tylko do odczytu i jednym punktem montowania `/tokens` w trybie tylko do odczytu. Nie udostępnia hostowi żadnego portu i jest osiągalny wyłącznie przez MCP Hub w sieci projektu.

Wspomniane 22 narzędzia dzielą się na trzy warstwy: warstwę odkrywania (status, sesja, listowanie endpointów, specyfikacja OpenAPI, GraphQL tylko do odczytu), uniwersalną warstwę CRUD, która działa na dowolnej ścieżce zasobu HL API v2, oraz wygodne wrappery dla obiektów ITIL (zgłoszenia, zmiany, problemy), zasobów (komputery, monitory i podobne) i obiektów katalogowych (użytkownicy, grupy, jednostki, profile). Wszystko to spina jedna dołączona umiejętność; opisujemy ją niżej.

## Umiejętności i komendy

| Nazwa | Co robi |
| --- | --- |
| `glpi-operations` | Umiejętność do pracy z instancją GLPI: znajduje, odczytuje, tworzy i aktualizuje zgłoszenia, zmiany i problemy, przegląda i edytuje zasoby oraz użytkowników, a do każdego innego zasobu dociera, odkrywając endpointy na bieżąco. Tworzenie i aktualizacja to operacje destrukcyjne; Claude prosi o potwierdzenie, zanim je wykona. |

Wtyczka nie ma żadnych samodzielnych komend, tylko tę umiejętność.

## Narzędzia

Powyższa umiejętność korzysta z tych 22 narzędzi. Narzędzia do odkrywania i odczytu działają bez pytania; tworzenie, aktualizacja i narzędzie awaryjne uruchamiają się dopiero, gdy to potwierdzisz. `glpi_delete` jest destrukcyjne i zawsze pyta najpierw.

**Odkrywanie**

| Narzędzie | Co robi |
| --- | --- |
| `glpi_status` | Sprawdza, czy instancja GLPI i jej API są dostępne. |
| `glpi_session` | Pokazuje, jako kto jest zalogowany bieżący token OAuth. |
| `glpi_list_endpoints` | Wypisuje przestrzenie nazw zasobów udostępniane przez API, jako punkt wyjścia do dalszego przeglądania. |
| `glpi_get_openapi` | Pobiera specyfikację OpenAPI instancji, opcjonalnie filtrowaną do pasujących ścieżek. |
| `glpi_graphql` | Wykonuje zapytanie GraphQL tylko do odczytu, dla bogatszych lub bardziej wybiórczych danych niż REST. |
| `glpi_graphql_schema` | Pobiera schemat GraphQL, dzięki czemu można poprawnie zbudować zapytanie. |

**Uniwersalny CRUD**

| Narzędzie | Co robi |
| --- | --- |
| `glpi_list` | Listuje elementy pod dowolną ścieżką zasobu, z filtrowaniem, sortowaniem i paginacją. |
| `glpi_get` | Odczytuje pojedynczy element pod dowolną ścieżką zasobu. |
| `glpi_create` | Tworzy element pod dowolną ścieżką zasobu. |
| `glpi_update` | Zmienia pola istniejącego elementu pod dowolną ścieżką zasobu. |
| `glpi_delete` | Usuwa element pod dowolną ścieżką zasobu. Destrukcyjne; Speedwave prosi o potwierdzenie przed wykonaniem. |
| `glpi_request` | Narzędzie awaryjne dla dowolnej metody i ścieżki, której nie obejmują pozostałe, na przykład podzasobów albo akcji wtyczek. |

**Zgłoszenia, zmiany i problemy**

| Narzędzie | Co robi |
| --- | --- |
| `glpi_itil_list` | Listuje zgłoszenia, zmiany lub problemy. |
| `glpi_itil_get` | Odczytuje jedno zgłoszenie, zmianę lub problem po id. |
| `glpi_itil_create` | Otwiera nowe zgłoszenie, zmianę lub problem. |
| `glpi_itil_update` | Aktualizuje jedno z nich, na przykład jego status lub przypisanie. |
| `glpi_itil_get_timeline` | Odczytuje wpisy z osi czasu jednego z nich, opcjonalnie zawężone do typu, na przykład komentarza czy zadania. |
| `glpi_itil_add_timeline` | Dodaje wpis do osi czasu, na przykład komentarz, zadanie, prośbę o zatwierdzenie lub rozwiązanie. |

**Zasoby i katalog**

| Narzędzie | Co robi |
| --- | --- |
| `glpi_asset_list` | Listuje zasoby danego typu, na przykład komputery, monitory lub drukarki. |
| `glpi_asset_get` | Odczytuje jeden zasób po typie i id. |
| `glpi_user_me` | Zwraca rekord użytkownika, do którego należy token OAuth. |
| `glpi_admin_list` | Listuje obiekty katalogowe: użytkowników, grupy, jednostki lub profile. |

## Jak to działa

GLPI korzysta z OAuth2 sterowanego przez hosta, z grantem authorization-code. Host uruchamia proces logowania w przeglądarce i przechowuje token odświeżający oraz sekret klienta poza punktem montowania, w `~/.speedwave/oauth/<project>/glpi.json`; do punktu montowania `/tokens` workera, w trybie tylko do odczytu, trafia jedynie krótkotrwały token dostępu. Worker odczytuje udostępniony mu adres bazowy z `/tokens/glpi_url` oraz token typu bearer z `/tokens/access_token` i nigdy nie widzi samego sekretu klienta ani tokenu odświeżającego.

Podczas obsługi żądań wywołania zasobów trafiają pod `<base>/v2/<path>`, wywołania rdzenia (status, sesja, OpenAPI) pod główną ścieżkę `api.php`, a zapytania GraphQL pod `<base>/GraphQL`. Przy wygasłym tokenie GLPI zwraca `400` zamiast standardowego `401`, więc worker traktuje oba kody jako błąd uwierzytelnienia: prosi hostowy worker OAuth o odświeżenie, ponownie odczytuje odświeżony token dostępu i jednokrotnie ponawia żądanie. Blokada szereguje odświeżenia, dzięki czemu seria błędów wyzwala jedno odświeżenie, a nie wiele. Claude prosi cię o potwierdzenie przed każdym utworzeniem, aktualizacją czy usunięciem; odczyty (list, get, search, discovery, GraphQL) działają bez pytania.

## Skonfiguruj to

Konfiguracja obejmuje rejestrację klienta OAuth w GLPI, a następnie logowanie z poziomu Speedwave.

1. W GLPI przejdź do **Setup → OAuth Clients** i utwórz klienta OAuth.
2. Zarejestruj URI przekierowania dokładnie jako `http://127.0.0.1:9123/callback`. Użyj dosłownie `127.0.0.1`, nie `localhost`.
3. W Speedwave wpisz bazowy adres URL API (`api.php`), identyfikator klienta oraz sekret klienta, a następnie kliknij **Save**.
4. Kliknij **Sign in with GLPI**, aby przejść przez proces OAuth. Jeśli później natrafisz na błąd uwierzytelnienia, użyj **Reconnect**.

<DesktopFrame screen="plugins" />

O tym, jak zainstalować i włączyć wtyczkę w projekcie przed tą konfiguracją, przeczytasz w [Używanie wtyczek](/pl/docs/plugins/using-plugins/).
**Note:** Bazowy adres URL API musi używać `https://` i wskazywać na bazowy adres API twojego GLPI (`api.php`).

## Granice bezpieczeństwa

Worker przechowuje wyłącznie krótkotrwały token dostępu wystawiony przez hosta, zamontowany w trybie tylko do odczytu. Nigdy nie widzi sekretu klienta OAuth ani tokenu odświeżającego; oba pozostają poza punktem montowania, na hoście. Kontener nie udostępnia hostowi żadnych portów, więc jest osiągalny wyłącznie przez MCP Hub, a jego system plików jest tylko do odczytu poza tym jednym punktem montowania tokenu. Zobacz [Jak obsługiwane są dane uwierzytelniające](/pl/docs/security/credentials/), aby dowiedzieć się, jak wpisuje się to w szerszy model izolacji Speedwave.