Serwer MCP
Pozwól asystentowi AI sprawdzać flotę urządzeń i zasady, a także opcjonalnie wysyłać polecenia do jednego urządzenia naraz, korzystając z Sign in with Nomid lub klucza API Nomid.
Co robi serwer MCP
Model Context Protocol (MCP) to otwarty standard, który umożliwia asystentom AI wywoływanie narzędzi w innych systemach. Serwer MCP Nomid pozwala asystentom takim jak claude.ai, ChatGPT, Claude Code, Codex czy Cursor odpowiadać na pytania dotyczące floty w języku naturalnym — na przykład ile urządzeń korzysta z danej zasady lub które urządzenia nie były widziane od określonej daty — bez konieczności otwierania portalu. Może również diagnozować, dlaczego nie można zdalnie połączyć się z urządzeniem, generować łącza do urządzenia, zasady lub aplikacji w portalu, a także sprawdzać publiczne plany i ceny katalogowe Nomid. Z dodatkowym uprawnieniem może wysyłać polecenia do jednego urządzenia naraz (np. zablokowanie, ponowne uruchomienie czy zmiana zasady) lub tworzyć kody QR do aprowizacji. Osobne uprawnienie zezwala na polecenia niszczące, takie jak wyczyszczenie danych (wipe).
Endpoint i transport
POST https://api.nomid.tech/emm/api/mcp Serwer korzysta z MCP Streamable HTTP w trybie bezstanowym. Każde wywołanie JSON-RPC jest niezależnym żądaniem HTTPS, więc nie trzeba utrzymywać sesji ani otwartego strumienia zdarzeń.
Połącz się za pomocą Sign in with Nomid (OAuth) lub klucza API. Prześlij klucz API jako token bearer lub w nagłówku X-API-Key. Większość klientów MCP obsługuje wyłącznie formę tokena bearer. Brakujący, nieprawidłowy lub wygasły klucz albo token zwraca błąd 401.
Klucz API lub połączenie Sign in with Nomid jednoznacznie określa firmę. Żadne narzędzie nie przyjmuje argumentu dzierżawcy (tenant) ani firmy, a połączenie widzi wyłącznie urządzenia i zasady własnej firmy.
Sign in with Nomid
Logowanie za pomocą Nomid (Sign in with Nomid) to mechanizm OAuth dla klientów MCP, dostępny dla każdej firmy. Zamiast korzystać z klucza, użytkownik loguje się do usługi Nomid w przeglądarce i zatwierdza uprawnienia asystenta. Następnie asystent działa w imieniu tego użytkownika w danej firmie i widzi tylko te urządzenia oraz zasady, na które pozwalają rola użytkownika i jego uprawnienia do zasad.
claude.ai, ChatGPT i Claude Code łączą się za pomocą Sign in with Nomid: dodaj powyższy adres URL punktu końcowego jako niestandardowy łącznik lub serwer MCP, bez klucza, a następnie zaloguj się, gdy klient o to poprosi. Poniższe przykłady dla Codex i Cursor używają klucza API.
W Claude Code dodaj serwer bez nagłówka, a następnie uruchom polecenie /mcp w Claude Code i wybierz serwer, aby się zalogować.
claude mcp add --transport http nomid-mdm https://api.nomid.tech/emm/api/mcp Połączenie przenosi zakresy OAuth, które zastępują uprawnienia klucza API.
| Zakres | Na co pozwala |
|---|---|
| mcp:read | Narzędzia odczytu. Rola użytkownika wymaga uprawnień do przeglądania urządzeń, zasad lub biblioteki; każde narzędzie nadal wymaga własnych uprawnień. |
| mcp:devices:command | Narzędzia poleceń. Wymaga włączenia w firmie ustawienia poleceń urządzeń oraz użytkownika z uprawnieniami do wysyłania poleceń do urządzeń. |
| mcp:devices:destructive | Narzędzia poleceń destrukcyjnych. Wymaga włączenia w firmie ustawienia poleceń destrukcyjnych oraz użytkownika z uprawnieniami do wysyłania poleceń do urządzeń. |
| mcp:provisioning | create_provisioning_qr_code. Wymaga włączenia w firmie ustawienia aprowizacji oraz użytkownika z uprawnieniami do aprowizowania urządzeń i przeglądania zasad. |
| mcp:policies:write | Narzędzia zmiany zasad. Wymaga włączenia w firmie ustawienia zmian zasad oraz użytkownika z uprawnieniami do edycji i przeglądania zasad. Przyznanie tego zakresu daje również zakres mcp:read. |
Klienci domyślnie proszą o mcp:read, mcp:devices:command i mcp:provisioning. Zakresy mcp:devices:destructive i mcp:policies:write nigdy nie są żądane automatycznie: klient musi poprosić o nie jawnie.
Na stronie zgody użytkownik może odznaczyć zakresy, a Nomid odrzuca każdy zakres, na który nie pozwala rola użytkownika lub firmowe ustawienia dostępu agentów AI. Zatwierdzenie zakresu poleceń, poleceń destrukcyjnych lub zmiany zasad wymaga niedawnego zalogowania się.
Każde żądanie ponownie weryfikuje połączenie. Jeśli użytkownik utraci dostęp do firmy lub uprawnienia roli wymagane przez narzędzie, bądź jeśli firma wyłączy dostęp agentów AI, żądania będą odrzucane tak długo, jak trwa ten stan.
Utwórz klucz API
Serwer MCP korzysta z tych samych kluczy API co REST API. Utwórz dedykowany klucz dla każdego asystenta, aby móc go unieważnić bez wpływu na inne integracje.
- 1
W portalu Nomid otwórz Ustawienia i wybierz zakładkę API.
- 2
Kliknij Utwórz klucz API i wprowadź nazwę identyfikującą asystenta, na przykład Claude Code tylko do odczytu.
- 3
Wybierz uprawnienia opisane poniżej. Jeśli chcesz, aby klucz przestał działać po określonym czasie, ustaw datę wygaśnięcia.
- 4
Skopiuj klucz, gdy zostanie wyświetlony. Zostanie pokazany tylko raz.
Klucz tylko do odczytu
Włącz uprawnienia do odczytu urządzeń i zasad (DEVICES_READ oraz POLICIES_READ). Jest to wystarczające dla każdego narzędzia odczytującego i stanowi zalecany punkt wyjścia.
Klucz do poleceń
Aby umożliwić asystentowi wysyłanie poleceń do urządzeń, włącz dodatkowo uprawnienie do wykonywania poleceń na urządzeniach (DEVICES_COMMAND). Klucz poleceń musi posiadać również uprawnienie DEVICES_READ, a zmiana zasady urządzenia wymaga ponadto POLICIES_READ. Tylko użytkownik portalu, który ma prawo wysyłać polecenia do urządzeń i ma dostęp do wszystkich zasad, może utworzyć klucz z tym uprawnieniem.
Klucz komend niszczących
Aby zezwolić asystentowi na wyczyszczenie urządzenia, zresetowanie lub zmianę blokady ekranu bądź zrzeczenie się własności, włącz uprawnienie do niszczących komend urządzeń (DEVICES_COMMAND_DESTRUCTIVE) wraz z DEVICES_READ. Firma musi również włączyć komendy niszczące w sekcji dostępu agenta AI w portalu. Obowiązują te same reguły użytkownika portalu, co w przypadku klucza komend.
Klucz aprowizacji
Aby umożliwić asystentowi tworzenie kodów QR do aprowizacji, włącz uprawnienie do aprowizacji (PROVISIONING) wraz z POLICIES_READ. Tylko użytkownik portalu uprawniony do aprowizowania urządzeń i mający dostęp do wszystkich zasad może utworzyć klucz z tym uprawnieniem.
Połącz swojego asystenta
Zapisz klucz w zmiennej środowiskowej o nazwie NOMID_API_KEY i nigdy nie zatwierdzaj go do repozytorium. Adres URL w każdym przykładzie to produkcyjny punkt końcowy.
Claude Code
Uruchom to raz w powłoce. Powłoka rozwija zmienną podczas uruchamiania polecenia, a Claude Code zapisuje wynikowy klucz jako zwykły tekst we własnym pliku konfiguracyjnym. Użyj do tego dedykowanego klucza tylko do odczytu.
claude mcp add --transport http nomid-mdm https://api.nomid.tech/emm/api/mcp \
--header "Authorization: Bearer ${NOMID_API_KEY}" Codex
Dodaj to do ~/.codex/config.toml. Codex odczytuje token ze wskazanej zmiennej środowiskowej. Nie rozwija zmiennych zapisanych wewnątrz pliku.
[mcp_servers.nomid]
url = "https://api.nomid.tech/emm/api/mcp"
bearer_token_env_var = "NOMID_API_KEY" Cursor
Dodaj to do .cursor/mcp.json. Cursor rozwija zmienne środowiskowe w wartości nagłówka, jak pokazano.
{
"mcpServers": {
"nomid-mdm": {
"url": "https://api.nomid.tech/emm/api/mcp",
"headers": {
"Authorization": "Bearer ${env:NOMID_API_KEY}"
}
}
}
} Inni klienci
Każdy klient MCP obsługujący serwery Streamable HTTP z niestandardowymi nagłówkami może połączyć się za pomocą adresu URL punktu końcowego i nagłówka Authorization: Bearer.
Dostępne narzędzia
Każde narzędzie ma zakres powiązany z firmą przypisaną do klucza lub połączenia. Urządzenie jest identyfikowane przez assetId, czyli pathName zwracane przez search_devices i get_device. Zasada jest identyfikowana przez policyId, czyli pathName zwracane przez list_policies.
Narzędzia do odczytu
Narzędzia do odczytu nigdy niczego nie zmieniają. Większość zwraca te same dane, co odpowiadające im punkty końcowe REST. diagnose_device, get_portal_link, search_nomid_site oraz argument query funkcji search_devices nie mają odpowiedników w REST.
| Narzędzie | Wymagane uprawnienie | Działanie |
|---|---|---|
| search_devices | DEVICES_READ | Wyszukuj urządzenia z opcjonalnymi filtrami status, policy i lastSeenBefore. Wyniki są stronicowane: page zaczyna się od 0, a domyślna wartość parametru size to 10 (maksymalnie 25). Aby znaleźć urządzenie podane z nazwy przez użytkownika, przekaż wyłącznie parametr query (od 2 do 100 znaków), który dopasowuje nazwę, numer seryjny, IMEI, model lub tag. Nie można go łączyć z filtrami status, policy, lastSeenBefore ani page. Zwraca maksymalnie size najlepiej dopasowanych wyników, każdy z pathName i matchedField, a parametr truncated informuje, czy dopasowano więcej wyników. |
| count_devices | DEVICES_READ | Zliczaj urządzenia z tymi samymi opcjonalnymi filtrami status, policy i lastSeenBefore. |
| get_device | DEVICES_READ | Pełne szczegóły dotyczące jednego urządzenia, w tym poziom naładowania baterii, łączna pamięć operacyjna i pamięć masowa urządzenia oraz przyczyny niezgodności z zasadami. |
| get_fleet_summary | DEVICES_READ | Zbiorcze dane dotyczące floty: łączna liczba urządzeń, podział według statusu oraz podsumowanie stanu bezpieczeństwa. Nigdy nie zwraca listy urządzeń. |
| list_device_commands | DEVICES_READ | Ostatnie polecenia wysłane do urządzenia, od najnowszych, wraz z typem, statusem, znacznikami czasu i krótkim kodem wyniku. limit domyślnie wynosi 20 i jest ograniczony do 50. Ładunki poleceń nigdy nie są zwracane. |
| list_policies | POLICIES_READ | Wyświetl listę zasad. Zwraca tylko przegląd, bez szczegółów konfiguracji. |
| get_policy | POLICIES_READ | Przegląd jednej zasady. |
| diagnose_device | DEVICES_READ | Diagnozuj obszar problemu na jednym urządzeniu na podstawie assetId i area. Jedynym dostępnym obecnie obszarem jest remote_access: dlaczego nie można nawiązać połączenia z urządzeniem lub sterować nim zdalnie, na podstawie jego synchronizacji i stanu, tego, czy jego zasady obejmują NomidRemote, czy NomidRemote jest zainstalowany, aktualny i czy się melduje, a także jego ostatnich żądań i sesji dostępu zdalnego. Zwraca pola findings (prawdopodobne przyczyny, od najbardziej prawdopodobnej, każda z dowodami i kolejnym krokiem) oraz unknowns (to, czego nie udało się ustalić, o co należy zapytać użytkownika). Nigdy nie zwraca danych uwierzytelniających, kluczy ani identyfikatorów dostępu zdalnego. |
| get_portal_link | DEVICES_READ / POLICIES_READ | Adres URL w portalu Nomid dla urządzenia (kind asset, wg assetId), zasady (kind policy, wg policyId) lub aplikacji z biblioteki (kind app, wg nazwy pakietu). Urządzenie wymaga DEVICES_READ; zasada lub aplikacja wymaga POLICIES_READ. Obiekt, który nie istnieje w firmie, zwraca błąd narzędzia. Łącze jedynie otwiera stronę: portal nadal stosuje uprawnienia zalogowanego użytkownika. |
| search_nomid_site | DEVICES_READ / POLICIES_READ | Przeszukuj publiczną stronę internetową Nomid pod kątem planów i cennika: plany i ich limity urządzeń, ceny katalogowe za urządzenie z systemem Android i VR w USD, EUR i BRL, zawartość każdego planu oraz często zadawane pytania dotyczące cennika. Parametr locale jest opcjonalny: en, es lub pt. Zwraca maksymalnie 5 fragmentów z adresem URL ich strony. Są to publiczne ceny katalogowe, a nie umowa czy faktura danej firmy. Wystarczy dowolne uprawnienie do odczytu. |
Narzędzia poleceń
Narzędzia poleceń działają na dokładnie jednym fizycznym urządzeniu na wywołanie. Nie ma opcji operacji zbiorczych. Każde narzędzie wymaga uprawnienia DEVICES_COMMAND, a change_device_policy wymaga również POLICIES_READ.
| Narzędzie | Wymagane uprawnienie | Działanie |
|---|---|---|
| lock_device | DEVICES_COMMAND + DEVICES_READ | Zablokuj ekran urządzenia natychmiast. Użytkownik może go normalnie odblokować. |
| start_lost_mode | DEVICES_COMMAND + DEVICES_READ | Zablokuj urządzenie i wyświetl wiadomość z opcjonalnymi danymi kontaktowymi na jego ekranie blokady. Pole message jest wymagane i może zawierać do 4096 znaków. Pola phoneNumber, email, streetAddress i organization są opcjonalne. |
| stop_lost_mode | DEVICES_COMMAND + DEVICES_READ | Zakończ tryb utraconego urządzenia. Nic się nie stanie i żaden błąd nie zostanie zwrócony, jeśli urządzenie nie było w trybie utraconym. |
| send_device_message | DEVICES_COMMAND + DEVICES_READ | Wyświetl zwykłe powiadomienie tekstowe push na urządzeniu. Pola title (do 60 znaków) oraz body (do 500 znaków) są wymagane. Ponowne wysłanie tej samej wiadomości powoduje wyświetlenie drugiego powiadomienia. |
| request_status_report | DEVICES_COMMAND + DEVICES_READ | Zażądaj od urządzenia natychmiastowego przesłania świeżego raportu o stanie. Raport nadejdzie później: odczytaj go za pomocą get_device. |
| force_location_update | DEVICES_COMMAND + DEVICES_READ | Zażądaj od urządzenia natychmiastowego zgłoszenia bieżącej lokalizacji. Lokalizacja nadejdzie później: odczytaj ją za pomocą get_device. |
| sync_policy | DEVICES_COMMAND + DEVICES_READ | Wyślij ponownie do urządzenia jego bieżące zasady. Dotyczy wyłącznie urządzeń zarządzanych przez agenta Nomid (AOSP). Urządzenia z systemem Android Management otrzymują zmiany zasad automatycznie. |
| reboot_device | DEVICES_COMMAND + DEVICES_READ | Uruchom urządzenie ponownie teraz. Praca osoby korzystającej z niego zostanie przerwana, a niezapisane dane mogą zostać utracone. |
| shutdown_device | DEVICES_COMMAND + DEVICES_READ | Wyłącz urządzenie teraz. Nie można go włączyć ponownie zdalnie. Dotyczy wyłącznie urządzeń zarządzanych przez agenta Nomid (AOSP). |
| launch_app | DEVICES_COMMAND + DEVICES_READ | Otwórz zainstalowaną aplikację na urządzeniu za pomocą jej parametru packageName. Dotyczy wyłącznie urządzeń zarządzanych przez agenta Nomid (AOSP). |
| clear_app_data | DEVICES_COMMAND + DEVICES_READ | Usuń wszystkie dane aplikacji podanych w packageNames (od 1 do 20 nazw pakietów), tak jakby dopiero zostały zainstalowane. Tej operacji nie można cofnąć. Dotyczy wyłącznie urządzeń Android Management. |
| change_device_policy | DEVICES_COMMAND + DEVICES_READ + POLICIES_READ | Przenieś urządzenie do innych zasad firmy, określonych przez policyId. Wszystko, co zawierały wyłącznie bieżące zasady, zostanie usunięte. Kończy się niepowodzeniem, jeśli urządzenie już korzysta z tych zasad. Wymaga również POLICIES_READ. |
Narzędzia komend niszczących
| Narzędzie | Wymagane uprawnienie | Działanie |
|---|---|---|
| wipe_device | DEVICES_COMMAND_DESTRUCTIVE + DEVICES_READ | Usuń urządzenie z zarządzania i wyczyść jego zarządzane dane. Urządzenie firmowe zostanie przywrócone do ustawień fabrycznych: wszystkie aplikacje i dane na nim zostaną usunięte. Na urządzeniu prywatnym z profilem służbowym usuwany jest tylko profil służbowy oraz jego aplikacje i dane; prywatne aplikacje i dane pozostają nienaruszone. Działanie nieodwracalne. |
| reset_screen_lock | DEVICES_COMMAND_DESTRUCTIVE + DEVICES_READ | Usuń blokadę ekranu urządzenia (PIN, wzór lub hasło), aby można je było odblokować bez niej. Tylko urządzenia Android Management. |
| change_screen_lock_password | DEVICES_COMMAND_DESTRUCTIVE + DEVICES_READ | Ustaw nowe hasło blokady ekranu, podane jako newPassword (od 4 do 128 znaków, bez spacji początkowych i końcowych). Urządzenie zablokuje się i tylko nowe hasło je odblokuje. Hasło nigdy nie jest przechowywane, zwracane ani rejestrowane. Tylko urządzenia Android Management. |
| relinquish_ownership | DEVICES_COMMAND_DESTRUCTIVE + DEVICES_READ | Przekaż urządzenie firmowe jego użytkownikowi. Profil służbowy i jego dane zostaną usunięte, a urządzenie przestanie być zarządzane. Działanie nieodwracalne. |
Klienci MCP łączący się za pomocą Sign in with Nomid zamiast klucza API wymagają zakresu mcp:devices:destructive dla tych narzędzi oraz mcp:devices:command dla narzędzi poleceń.
Które urządzenia mogą odbierać polecenia
- Tylko zarejestrowane urządzenia mogą odbierać polecenia (ze statusem ACTIVE, INACTIVE lub SYNCHRONIZING). Usunięte, ponownie skonfigurowane oraz wyrejestrowane zasoby są odrzucane.
- Niektóre polecenia działają tylko na jednym typie urządzeń. Lock, lost mode, clear_app_data, reset_screen_lock oraz change_screen_lock_password wymagają urządzenia z Android Management (zarządzanego przez Google). sync_policy, shutdown_device i launch_app wymagają urządzenia zarządzanego przez agenta Nomid (AOSP). W przypadku innych urządzeń narzędzie zgłasza błąd.
- Wiadomość to powiadomienie push wysyłane do agenta Nomid na urządzeniu, dlatego urządzenie musi mieć zarejestrowany token push.
- Zasób należący do innej firmy zachowuje się dokładnie tak, jak zasób, który nie istnieje.
Niedostępne za pośrednictwem MCP ani REST API: rozpoczynanie sesji zdalnego dostępu oraz wyświetlanie lub unieważnianie tokenów rejestracji. Kod QR do obsługi administracyjnej tworzy własny token rejestracji. Zmiany zasad mają własny przepływ proponowania i zatwierdzania (propose-and-apply).
Narzędzie aprowizacji
Każde wywołanie tworzy nowy token rejestracji, dlatego asystent powinien generować kod QR tylko na wyraźną prośbę użytkownika i nigdy nie używać ponownie starszego kodu.
| Narzędzie | Wymagane uprawnienie | Działanie |
|---|---|---|
| create_provisioning_qr_code | PROVISIONING + POLICIES_READ | Utwórz kod QR, który rejestruje nowe lub zresetowane do ustawień fabrycznych urządzenie z systemem Android w firmie z zasadami określonymi przez policyId. personalUsage oraz sieć Wi-Fi do konfiguracji (wifiSsid, wifiPassword, wifiSecurity, wifiHidden) są opcjonalne. Kod przestaje działać po upływie 24 godz. od jego utworzenia. Zasady przeznaczone wyłącznie dla urządzeń VR nie mogą być aprowizowane za pomocą kodu QR. |
Kod QR jest zwracany jako blok obrazu MCP obok wyniku tekstowego, dzięki czemu klient może wyświetlić go użytkownikowi. Wynik tekstowy zawiera policyId, policyName, personalUsage, expiresAt oraz, jeśli podano sieć, wifiSsid. Nigdy nie zawiera tokena rejestracji ani hasła Wi-Fi.
Połączenia Sign in with Nomid wymagają zakresu mcp:provisioning oraz firmowego ustawienia aprowizacji w sekcji dostępu agentów AI. Klucz API z uprawnieniem PROVISIONING nie wymaga tego ustawienia.
Zmiany zasad
Każda zmiana wymaga dwóch kroków. Najpierw ją proponujesz: API rejestruje wniosek i zwraca listę zmian z bieżącą i nową wartością każdego ustawienia, wpływem oraz terminem wygaśnięcia wniosku. W zasadzie nic się jeszcze nie zmienia. Następnie stosujesz wniosek na podstawie jego proposalId, po tym jak osoba odpowiedzialna przejrzy listę zmian.
| Narzędzie | Wymagane uprawnienie | Działanie |
|---|---|---|
| get_policy_settings | POLICIES_READ | Odczytaj edytowalne ustawienia zasad wraz z ich bieżącymi i dozwolonymi wartościami. |
| list_policy_revisions | POLICIES_READ | Wyświetl listę zapisanych wersji zasad, od najnowszej. |
| get_policy_proposal | POLICIES_READ | Odczytaj wniosek złożony przy użyciu tego samego klucza lub połączenia wraz z jego statusem. |
| update_policy_settings | POLICIES_WRITE + POLICIES_READ | Zaproponuj zmiany ustawień w istniejącej zasadzie. |
| create_policy | POLICIES_WRITE + POLICIES_READ | Zaproponuj nową zasadę jako kopię istniejącej, z opcjonalnymi zmianami ustawień. |
| rollback_policy | POLICIES_WRITE + POLICIES_READ | Zaproponuj przywrócenie zasady do wcześniejszej wersji. |
| apply_policy_proposal | POLICIES_WRITE + POLICIES_READ | Zastosuj oczekujący wniosek na podstawie jego identyfikatora proposalId, z potwierdzeniem, gdy ma on status HIGH impact. |
Asystent musi pokazać użytkownikowi listę zmian i uzyskać jego wyraźną zgodę w konwersacji, zanim wywoła apply_policy_proposal. W przypadku wniosku o statusie HIGH impact musi poprosić użytkownika o wpisanie nazwy zasady i przekazać dokładnie to, co wpisał.
Bezpieczeństwo i audyt
Polecenie zmienia coś, co człowiek trzyma w ręku. Traktuj każde z nich jako działanie wymagające decyzji człowieka.
- Zawsze potwierdzaj z użytkownikiem przed wykonaniem jakiegokolwiek polecenia. Opisy narzędzi proszą model o takie działanie, ale serwer tego nie wymusza. Zostaw włączone zatwierdzanie poszczególnych narzędzi w swoim kliencie dla narzędzi wykonujących polecenia, zamiast zatwierdzać je automatycznie.
- Nigdy nie wysyłaj polecenia ponownie po niepotwierdzonym wyniku. Jeśli wynik jest nieznany, sprawdź list_device_commands po tym, jak urządzenie miało czas na odpowiedź, i zapytaj użytkownika przed ponownym wysłaniem. Ponowne wysłanie może zduplikować polecenie, które zostało już dostarczone, a wiadomość wyświetli drugie powiadomienie.
- Wynik informujący, że polecenie nie zostało wysłane, można bezpiecznie ponowić. Polecenie nigdy nie opuściło Nomid.
- Każde polecenie jest rejestrowane w historii poleceń urządzenia w portalu Nomid. Polecenie wysłane za pomocą klucza API jest przypisywane do klucza, a nie do osoby: wpis zawiera api-key, identyfikator klucza oraz prefiks klucza. Polecenie wysłane za pośrednictwem połączenia Sign in with Nomid jest przypisywane do użytkownika, który się zalogował. Historia zwracana przez list_device_commands zawiera tylko type, status, sygnatury czasowe i outcome, bez informacji o tym, kto wysłał polecenie.
- Jeśli komputer lub plik konfiguracyjny zostanie naruszony, unieważnij klucz w Ustawienia, API. Unieważnionych kluczy nie można przywrócić. Aby zakończyć połączenie Sign in with Nomid, unieważnij je na liście połączeń na stronie agentów AI w portalu lub odłącz je w kliencie, który unieważnia tokeny przy odłączeniu. W obu przypadkach połączenie i wszystkie jego tokeny natychmiast przestają działać. Każdy użytkownik może unieważnić własne połączenia, a użytkownik, który może zarządzać kluczami API, może unieważnić dowolne połączenie w firmie.
Limity szybkości (Rate limits)
Limity są naliczane na klucz API lub na połączenie Sign in with Nomid w stałych oknach jednominutowych. Po przekroczeniu limitu żądań MCP serwer odpowiada kodem HTTP 429 Too Many Requests z nagłówkiem Retry-After wskazującym liczbę sekund do zresetowania okna.
| Limit | Dozwolone |
|---|---|
| Wszystkie żądania MCP, każde narzędzie | 60 na minutę na klucz lub połączenie |
| Polecenia urządzenia, zmiany zasad i kody QR do obsługi administracyjnej, łącznie REST i MCP | 10 na minutę na klucz lub połączenie |
Wywołanie narzędzia poleceń, każde wywołanie propose lub apply narzędzia do zmiany zasad oraz każde wywołanie create_provisioning_qr_code liczą się do obu limitów. Gdy takie wywołanie przekroczy współdzielony limit zapisu, serwer zwraca błąd narzędzia zamiast kodu HTTP 429. Jest to normalna odpowiedź oznaczona jako błąd, a jej treść informuje, ile sekund należy odczekać. Punkty końcowe odczytu REST nie korzystają z limitu MCP.
Rozwiązywanie problemów
| Objaw | Prawdopodobna przyczyna i rozwiązanie |
|---|---|
| 401 Unauthorized z kluczem API | Klucz jest brakujący, nieprawidłowy, wygasły lub unieważniony. Upewnij się, że klient przesyła nagłówek Authorization: Bearer, a po nim klucz, oraz że zmienna środowiskowa była ustawiona podczas uruchamiania polecenia instalacji. |
| 401 Unauthorized lub klient prosi o ponowne zalogowanie przy użyciu Sign in with Nomid | Token dostępu wygasł i nie można go było odświeżyć albo połączenie zostało unieważnione. Żądania są również odrzucane, gdy użytkownik nie jest już członkiem firmy, jego rola nie zezwala już na żaden z przyznanych zakresów lub firma wyłączyła dostęp agenta AI; połączenie wyłączonego użytkownika zostaje unieważnione. Zaloguj się ponownie lub połącz łącznik na nowo. Jeśli problem nadal występuje, poproś administratora firmy o sprawdzenie w portalu Twojego członkostwa, roli oraz dostępu agenta AI. |
| Błąd narzędzia z informacją, że klucz nie ma wymaganego uprawnienia lub firma go nie włączyła (HTTP 403 w REST API) | Klucz został utworzony bez uprawnienia wymaganego przez to narzędzie lub ustawienie firmy jest wyłączone. Narzędzia poleceń wymagają DEVICES_COMMAND i DEVICES_READ, a change_device_policy wymaga także POLICIES_READ. Narzędzia destrukcyjne wymagają DEVICES_COMMAND_DESTRUCTIVE i DEVICES_READ oraz włączonego firmowego ustawienia poleceń destrukcyjnych. Narzędzia zmiany zasad wymagają POLICIES_WRITE i POLICIES_READ oraz włączonego firmowego ustawienia zmian zasad. create_provisioning_qr_code wymaga PROVISIONING i POLICIES_READ. |
| Błąd narzędzia z informacją o braku wymaganego uprawnienia lub o tym, że administrator nie włączył dla niego dostępu agenta AI (Sign in with Nomid) | Połączenie nie posiada zakresu wymaganego przez narzędzie, Twoja rola nie ma odpowiedniego uprawnienia lub ustawienie firmowe w sekcji dostępu agenta AI jest wyłączone. Połącz ponownie i zatwierdź zakres na stronie zgody; mcp:devices:destructive i mcp:policies:write pojawiają się tylko wtedy, gdy zażąda ich klient. W przypadku wyłączonego ustawienia poproś administratora firmy o jego włączenie. |
| HTTP 429 Too Many Requests lub błąd narzędzia informujący o przekroczeniu limitu zapytań | Przekroczono limit zapytań. W przypadku błędu HTTP 429 odczekaj liczbę sekund wskazaną w nagłówku Retry-After. W przypadku błędu narzędzia odczekaj liczbę sekund podaną w jego komunikacie. |
| Błąd narzędzia dotyczący urządzenia, które nie zostało odnalezione lub nie może przyjąć polecenia | Użyj pathName z search_devices jako assetId. Upewnij się, że urządzenie jest zarejestrowane oraz że polecenie obsługuje dany typ urządzenia (zobacz: Które urządzenia mogą odbierać polecenia). |
| Błąd narzędzia informujący, że wynik jest nieznany | Nie wysyłaj ponownie. Sprawdź list_device_commands, gdy urządzenie będzie miało czas na odpowiedź, i zapytaj użytkownika przed ponownym wysłaniem. |
| Asystent nie wyświetla żadnych narzędzi Nomid | W przypadku klucza API upewnij się, że Twój klient obsługuje serwery Streamable HTTP z niestandardowymi nagłówkami, a adres URL dokładnie odpowiada powyższemu punktowi końcowemu. W przypadku Sign in with Nomid dokończ logowanie lub odłącz łącznik i podłącz go ponownie. Zalogowane połączenie wyświetla każde narzędzie, więc brakujący zakres pojawia się jako błąd narzędzia, a nie jako brakujące narzędzie. |