Serwer MCP
Przegląd
serwer MCP Zabbix to proces umożliwiający agentom AI pracę z Zabbix za pomocą Model Context Protocol (MCP). serwer MCP komunikuje się z klientami MCP i API Zabbix.
Za pomocą serwera MCP agent AI może:
- Pobierać grupy hostów, grupy szablonów, hosty, szablony, pozycje, reguły LLD, interfejsy, makra, wyzwalacze, problemy, okresy utrzymania oraz dane historii pozycji (z wyjątkiem pozycji binarnych);
- Wykonywać aktualizacje problemów: dodawać komentarze, potwierdzać lub anulować potwierdzenie, zmieniać ważność, wyciszać lub anulować wyciszenie oraz zamykać problemy;
- Tworzyć, aktualizować i usuwać okresy utrzymania.
Tokeny API Zabbix są używane do autoryzacji; tokeny są wysyłane z każdym żądaniem. Dostęp jest ograniczony uprawnieniami właściciela tokenu: widoczne są tylko dane z grup hostów dostępnych dla tego użytkownika, a działania, do których użytkownik nie ma uprawnień, są odrzucane.
serwer MCP jest bezstanowy: między żądaniami nie jest przechowywana żadna sesja.
Chociaż serwer MCP Zabbix może działać ze starszymi lub nowszymi wersjami Zabbix, jego zgodność jest oficjalnie obsługiwana wyłącznie z tą samą wersją Zabbix, co wersja samego serwera MCP.
Zobacz także:
Instalacja
Oficjalny pakiet zabbix-mcp-server jest dostępny w repozytorium Zabbix.
Aby zainstalować Zabbix MCP server ze źródeł, zbuduj go za pomocą polecenia make.
Aby skonfigurować Zabbix MCP server, zaktualizuj parametry pliku konfiguracyjnego MCP server.
Należy ustawić co najmniej parametry FrontendURL i AllowedIP.
Domyślny plik konfiguracyjny (zabbix_mcp_server.conf) znajduje się w katalogu /etc/zabbix/; odmawia on dostępu do narzędzi, które najczęściej ujawniają dane wrażliwe. Aby włączyć narzędzie, usuń odpowiednią linię DenyTool.
Zobacz także: Najlepsze praktyki dotyczące bezpieczeństwa
Uruchamianie
Aby uruchomić serwer MCP, wykonaj:
zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf
Aby sprawdzić plik konfiguracyjny i zakończyć działanie bez uruchamiania serwera, użyj opcji -T:
zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf -T
Obsługiwane są następujące opcje wiersza poleceń:
| Opcja | Opis |
|---|---|
-c <file> |
Ścieżka do pliku konfiguracyjnego. Domyślnie jest to /etc/zabbix/zabbix_mcp_server.conf. |
-T |
Sprawdź poprawność pliku konfiguracyjnego i zakończ działanie. |
-h |
Wyświetl informacje pomocy. |
-V |
Wyświetl numer wersji. |
Jeśli serwer MCP został zainstalowany ze źródeł, jednostkę systemd należy utworzyć ręcznie, na przykład:
[Unit]
Description=Zabbix MCP server
After=network-online.target
[Service]
User=zabbix
ExecStart=/usr/local/sbin/zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
Łączenie klienta MCP
Każdy klient MCP obsługujący transport Streamable HTTP może zostać połączony z serwerem MCP. Wymagane są następujące ustawienia:
| Ustawienie | Wartość |
|---|---|
| Transport | Streamable HTTP |
| URL | https://<host>:<ListenPort>/mcp |
| Nagłówek | Authorization: Bearer <Zabbix API token>, wysyłany z każdym żądaniem |
Każdy użytkownik musi skonfigurować własny token API.
Aby zweryfikować konfigurację, wyślij pojedyncze żądanie do serwera MCP:
curl -sS https://mcp.example.com:8443/mcp \
-H "Authorization: Bearer $ZABBIX_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Kod stanu HTTP 200 oraz lista dostępnych narzędzi w odpowiedzi potwierdzają, że serwer MCP jest osiągalny i akceptuje token; lista pokazuje, które narzędzia są udostępnione.
Inne kody stanu wskazują następujące problemy:
400- nagłówekAcceptnie zawiera obu typów multimediów wymaganych przez transport;401- brakuje nagłówkaAuthorizationz tokenem;403- adres klienta nie znajduje się na liście w parametrzeAllowedIP.
Zatwierdzanie i dostęp do narzędzi
Jeśli klient MCP obsługuje wywoływanie formularzy, każda zmiana musi zostać zatwierdzona przez użytkownika przed wysłaniem jej do Zabbix. Klient MCP pokazuje użytkownikowi, co zostanie zmienione, a zmiana jest stosowana tylko wtedy, gdy użytkownik ją potwierdzi; jeśli użytkownik odrzuci lub zamknie żądanie, w Zabbix nie zostaną wprowadzone żadne zmiany. Zatwierdzenie jest ważne przez pięć minut i dotyczy wyłącznie dokładnie pokazanej zmiany; w tym czasie można je wykorzystać ponownie.
Jeśli klient MCP nie obsługuje wywoływania formularzy (w tym klientów obsługujących tylko wywoływanie adresów URL), zmiany są stosowane natychmiast, bez zatwierdzenia. W takim przypadku należy ograniczyć narzędzia zapisu i uprawnienia API Zabbix.
Zatwierdzanie jest szczególnie ważne, ponieważ dane wyjściowe narzędzi mogą zawierać niezaufany tekst z monitorowanych systemów, który może wpływać na agenta.
Użyj AllowTool, DenyTool, AllowToolRegexp i DenyToolRegexp, aby kontrolować, które narzędzia serwer MCP udostępnia. Zablokowanych narzędzi nie można wywoływać ani wyświetlać, a powiązane z nimi zasoby nie są dostępne.
Reguły AllowTool, DenyTool, AllowToolRegexp i DenyToolRegexp ograniczają dostęp MCP, ale nie zmieniają uprawnień tokenu Zabbix. Jeśli adres frontend zostanie ujawniony agentowi AI, agent może próbować wysyłać bezpośrednie wywołania API. Należy uniemożliwić agentowi dostęp do lokalizacji frontend Zabbix i konfiguracji serwera MCP, aby żądania musiały przechodzić przez serwer MCP i jego mechanizmy kontroli bezpieczeństwa.
Najlepsze praktyki w zakresie bezpieczeństwa
Tokeny API
Uwierzytelnianie i autoryzacja są w całości obsługiwane przez Zabbix. Klient MCP wysyła token API Zabbix z każdym żądaniem; serwer MCP przekazuje go bez przechowywania ani rejestrowania, natomiast Zabbix weryfikuje token, egzekwuje uprawnienia i rejestruje działania w dzienniku audytu.
Dla każdego agenta i użytkownika używaj osobnego tokenu z minimalnymi uprawnieniami i określonym terminem wygaśnięcia. Przechowuj tokeny w bezpiecznej lokalizacji i regularnie je zmieniaj.
Szyfrowanie TLS
Aby zapobiec przesyłaniu tokenów w postaci jawnego tekstu, ustaw TLSAccept=cert i określ certyfikat oraz klucz (TLSCertFile i TLSKeyFile) albo uruchom serwer MCP za zaufanym odwrotnym proxy kończącym połączenie TLS i ustaw TLSAccept=unencrypted.
Nieszyfrowany protokół HTTP jest akceptowalny wyłącznie w zaufanej sieci.
Ograniczenia dostępu
Ogranicz parametr AllowedIP do adresów zaufanych klientów MCP i używaj uprawnień Zabbix, aby ograniczyć zakres działań tokenów API.
serwer MCP nie zapewnia ograniczania częstotliwości żądań. Każde żądanie MCP zwykle skutkuje jednym wywołaniem API Zabbix, jednak agent działający w pętli nadal może generować znaczne obciążenie.
Ochrona danych wrażliwych
Klucze pozycji mogą zawierać dane uwierzytelniające (na przykład w pozycjach SSH, JMX, ODBC i HTTP agent), wartości makr mogą zawierać hasła i ciągi community, interfejsy ujawniają adresy wewnętrzne, a wartości pozycji typu log lub tekst mogą zawierać dowolne dane.
Z tego powodu narzędzia item_get, lld_get, interface_get, macro_get i history_get są domyślnie zablokowane w dostarczonym pliku konfiguracyjnym.
Aby uniknąć ujawnienia wrażliwych wartości makr dostawcy LLM podłączonego agenta, użyj makr tajnych; ich wartości nigdy nie są zwracane przez API.