Serwer MCP NetCrunch
NetCrunch udostępnia swój interfejs REST API jako serwer MCP (Model Context Protocol), umożliwiając asystentom AI i narzędziom opartym na LLM programowe wykrywanie i wywoływanie interfejsu zarządzania NetCrunch.
Serwer MCP współdzieli z REST API te same klucze API, limity liczby żądań i moduły obsługi zaplecza — każde narzędzie odpowiada dokładnie jednemu punktowi końcowemu REST.
Punkty końcowe
Serwer MCP obsługuje dwa mechanizmy transportu. Oba są dostępne pod ścieżką /api/mcp.
| Mechanizm transportu | Metoda | URL | Opis |
|---|---|---|---|
| Streamable HTTP | POST |
/api/mcp |
Nowoczesny transport z pojedynczym punktem końcowym (zalecany) |
| SSE | GET |
/api/mcp/sse |
Otwiera strumień Server-Sent Events |
| Wiadomości SSE | POST |
/api/mcp/messages?sessionId=… |
Wysyła wiadomości JSON-RPC do sesji SSE |
Streamable HTTP jest bezstanowy — każde żądanie tworzy nową sesję MCP. Jest to najprostszy sposób integracji i działa ze wszystkimi klientami MCP.
SSE to stanowy mechanizm awaryjny dla klientów wymagających stałego połączenia. Klient najpierw otwiera /api/mcp/sse, aby uzyskać identyfikator sesji, a następnie wysyła żądania do /api/mcp/messages?sessionId=<id>.
Uwierzytelnianie
Każde żądanie musi zawierać prawidłowy klucz API NetCrunch. Serwer MCP akceptuje klucz w jednej z poniższych lokalizacji (sprawdzanych w podanej kolejności):
| Metoda | Przykład |
|---|---|
Nagłówek Authorization |
Authorization: Bearer YOUR_API_KEY |
Nagłówek x-api-key |
x-api-key: YOUR_API_KEY |
| Parametr zapytania | ?api_key=YOUR_API_KEY |
Klucze API są tworzone w NetCrunch Administration Console w sekcji User Profiles → API Keys. Klucz określa, do których węzłów i operacji wywołujący ma dostęp — ten sam kontekst zabezpieczeń ma zastosowanie zarówno do MCP, jak i REST.
Żądania bez prawidłowego klucza API otrzymują odpowiedź błędu:
{ "error": "No API Key" }
Ograniczanie liczby żądań
Żądania MCP korzystają z tego samego zasobnika tokenów dla każdego klucza API co REST API. Domyślne limity (konfigurowane w server.cfg.yml):
| Ustawienie | Wartość domyślna |
|---|---|
| Maksymalna liczba żądań w oknie | 100 |
| Długość okna | 60 sekund |
Po przekroczeniu limitu wywołania narzędzi zwracają wynik błędu. Niewykorzystane tokeny są uzupełniane w sposób ciągły.
Konfiguracja klienta
Claude Desktop
Dodaj do pliku claude_desktop_config.json:
{ "mcpServers": { "netcrunch": { "url": "https://YOUR_SERVER/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }
Cursor / VS Code (Copilot)
Dodaj do ustawień MCP (.cursor/mcp.json lub konfiguracji MCP VS Code):
{ "servers": { "netcrunch": { "url": "https://YOUR_SERVER/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }
Python (mcp client library)
from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_clientasync with streamablehttp_client( "https://YOUR_SERVER/api/mcp", headers={"Authorization": "Bearer YOUR_API_KEY"} ) as (read, write, _): async with ClientSession(read, write) as session: await session.initialize()
# List available tools tools = await session.list_tools() # Call a tool result = await session.call_tool("nodes.getProperties", { "node": "10.0.0.1", "properties": "Name,Address,OverallState" }) print(result)
Dostępne narzędzia
Serwer MCP udostępnia 50 narzędzi zorganizowanych w 8 grup. Każde narzędzie odpowiada punktowi końcowemu REST API i przyjmuje te same parametry. Wymagane parametry są oznaczone symbolem *.
Węzły (19 narzędzi)
Zarządzanie monitorowanymi węzłami — dodawanie, usuwanie, odczytywanie i zapisywanie właściwości, sterowanie monitoringiem, zarządzanie tagami, usługami sieciowymi, sensorami, polami niestandardowymi i węzłami podrzędnymi.
| Narzędzie | Opis | Parametry |
|---|---|---|
nodes.add |
Dodaj nowy monitorowany węzeł | networkAddress, name, type |
nodes.delete |
Usuń monitorowany węzeł | node |
nodes.getProperties |
Pobierz właściwości węzła | node, properties |
nodes.getProperty |
Pobierz pojedynczą właściwość węzła | node, property* |
nodes.setProperties |
Ustaw wiele właściwości węzła | node |
nodes.setProperty |
Ustaw pojedynczą właściwość węzła | node, property* |
nodes.setMonitoring |
Włącz lub wyłącz monitoring | node, value* (on/off), disabledFrom, disabledUntil, reset |
nodes.addNetworkService |
Dodaj monitor usługi sieciowej | node, name*, protocolId, timeout, repeat, additionalRepeat, monitoringTime, overrideSuppressing, param |
nodes.setNetworkServiceParams |
Zaktualizuj parametry monitora usługi | node, service*, protocolId, timeout, repeat, additionalRepeat, monitoringTime, overrideSuppressing |
nodes.deleteNetworkService |
Usuń monitor usługi | node, service* |
nodes.setSensorParams |
Skonfiguruj monitoring sensora | node, sensor*, enabled, monitoringTime, credentials |
nodes.setMonitoringEngineParams |
Skonfiguruj silnik monitoringu | node, engine*, enabled, monitoringTime, credentials |
nodes.setCustomFieldValue |
Ustaw wartość pola niestandardowego | node, field*, value |
nodes.deleteCustomField |
Usuń pole niestandardowe | node, field* |
nodes.addChild |
Dodaj węzeł podrzędny | node, child* |
nodes.deleteChild |
Usuń węzeł podrzędny | node, child* |
nodes.addTag |
Dodaj tag | node, tag* |
nodes.deleteTag |
Usuń tag | node, tag* |
nodes.removeTags |
Usuń wszystkie tagi | node |
Parametr node akceptuje identyfikator węzła (numeryczny), nazwę, adres IP lub nazwę DNS.
Widoki (9 narzędzi)
Zarządzanie widokami sieci i folderami widoków.
| Narzędzie | Opis | Parametry |
|---|---|---|
views.add |
Utwórz nowy widok | name*, parent |
views.addFolder |
Utwórz nowy folder | name*, parent |
views.delete |
Usuń widok | map |
views.getProperties |
Pobierz właściwości widoku | map, properties |
views.getProperty |
Pobierz pojedynczą właściwość | map, property* |
views.setProperties |
Ustaw wiele właściwości | map |
views.setProperty |
Ustaw pojedynczą właściwość | map, property* |
views.addNode |
Dodaj węzeł do widoku | map, node* |
views.removeNode |
Usuń węzeł z widoku | map, node* |
Parametr map akceptuje identyfikator widoku, nazwę lub ścieżkę.
Zasady (6 narzędzi)
Zarządzanie zasadami monitoringu.
| Narzędzie | Opis | Parametry |
|---|---|---|
policies.getProperties |
Pobierz właściwości zasady | map, properties |
policies.getProperty |
Pobierz pojedynczą właściwość | map, property* |
policies.setProperties |
Ustaw wiele właściwości | map |
policies.setProperty |
Ustaw pojedynczą właściwość | map, property* |
policies.addNode |
Dodaj węzeł do zasady | map, node* |
policies.removeNode |
Usuń węzeł z zasady | map, node* |
Notatki (5 narzędzi)
Zarządzanie notatkami dołączonymi do węzłów.
| Narzędzie | Opis | Parametry |
|---|---|---|
notes.add |
Dodaj notatkę do węzła | node, subject, text, label (red/green/blue/yellow), due, refid, category, archived |
notes.get |
Pobierz notatkę według identyfikatora referencyjnego | node, refid* |
notes.getProperty |
Pobierz pojedynczą właściwość notatki | node, refid*, property* |
notes.update |
Zaktualizuj notatkę | node, refid*, subject, text, label, due, category, archived |
notes.updateProperty |
Zaktualizuj pojedynczą właściwość notatki | node, refid*, property* |
Ustawienia interfejsów (5 narzędzi)
Zarządzanie ustawieniami wyświetlania interfejsów sieciowych.
| Narzędzie | Opis | Parametry |
|---|---|---|
interfaceSettings.set |
Ustaw ustawienia interfejsu | node, ifIndex*, name, speed, note |
interfaceSettings.get |
Pobierz ustawienia interfejsu | node, ifIndex |
interfaceSettings.getAll |
Pobierz wszystkie interfejsy | node |
interfaceSettings.delete |
Usuń ustawienia interfejsu | node, ifIndex |
interfaceSettings.deleteAll |
Usuń wszystkie ustawienia interfejsów | node |
Dane uwierzytelniające (2 narzędzia)
Wyświetlanie typów i profili danych uwierzytelniających (tylko administrator).
| Narzędzie | Opis | Parametry |
|---|---|---|
credentials.getTypes |
Wyświetl typy danych uwierzytelniających | — |
credentials.get |
Pobierz dane uwierzytelniające według typu | type* |
IP SLA (2 narzędzia)
| Narzędzie | Opis | Parametry |
|---|---|---|
ipsla.get |
Wyświetl wszystkie operacje IP SLA | — |
ipsla.getNode |
Pobierz IP SLA dla węzła | node |
NQA (2 narzędzia)
| Narzędzie | Opis | Parametry |
|---|---|---|
nqa.get |
Wyświetl wszystkie operacje NQA | — |
nqa.getNode |
Pobierz NQA dla węzła | node |
Przykładowe rozmowy
Po nawiązaniu połączenia asystent AI może korzystać z narzędzi NetCrunch w naturalny sposób:
Użytkownik: Pokaż właściwości węzła pod adresem 10.0.0.1
Asystent wywołuje
nodes.getPropertiesz{ "node": "10.0.0.1" }i zwraca wynik.Użytkownik: Wyłącz monitoring serwera WWW na następne 2 godziny
Asystent wywołuje
nodes.setMonitoringz{ "node": "web-server", "value": "off", "disabledUntil": "2026-04-26T20:00:00Z" }.Użytkownik: Dodaj do węzła 42 notatkę informującą, że oprogramowanie układowe zostało zaktualizowane
Asystent wywołuje
notes.addz{ "node": "42", "subject": "Firmware updated", "text": "Firmware was updated to latest version.", "label": "green" }.
Obsługa błędów
Błędy wywołań narzędzi są zwracane jako wyniki błędów MCP z wartością isError: true oraz blokiem treści tekstowej JSON:
{ "content": [{ "type": "text", "text": "{\"error\":\"Authentication Failed\"}" }], "isError": true }
Typowe warunki błędów:
| Błąd | Przyczyna |
|---|---|
No API Key |
W żądaniu brakuje uwierzytelniania |
Authentication Failed |
Nieprawidłowy lub wygasły klucz API |
Node not Found |
Określony węzeł nie istnieje |
Access Denied |
Klucz API nie ma uprawnień do wykonania tej operacji |
Too Many Requests |
Przekroczono limit liczby żądań — odczekaj i spróbuj ponownie |