NetCrunch MCP Server
NetCrunch stellt seine REST API als MCP (Model Context Protocol) Server bereit. Dadurch können KI-Assistenten und LLM-basierte Tools die NetCrunch Management API programmgesteuert ermitteln und aufrufen.
Der MCP Server verwendet dieselben API-Schlüssel, Ratenbegrenzungen und Backend-Handler wie die REST API – jedes Tool entspricht 1:1 einem REST-Endpunkt.
Endpunkte
Der MCP Server unterstützt zwei Transportmechanismen. Beide sind unter dem Pfad /api/mcp verfügbar.
| Transport | Methode | URL | Beschreibung |
|---|---|---|---|
| Streamable HTTP | POST |
/api/mcp |
Moderner Transport mit einem einzelnen Endpunkt (empfohlen) |
| SSE | GET |
/api/mcp/sse |
Öffnet einen Server-Sent-Events-Stream |
| SSE messages | POST |
/api/mcp/messages?sessionId=… |
Sendet JSON-RPC-Nachrichten an eine SSE-Sitzung |
Streamable HTTP ist zustandslos – jede Anfrage erstellt eine neue MCP-Sitzung. Dies ist der einfachste Integrationsweg und funktioniert mit allen MCP-Clients.
SSE ist eine zustandsbehaftete Ausweichlösung für Clients, die eine dauerhafte Verbindung benötigen. Der Client öffnet zunächst /api/mcp/sse, um eine Sitzungs-ID zu erhalten, und sendet anschließend Anfragen an /api/mcp/messages?sessionId=<id>.
Authentifizierung
Jede Anfrage muss einen gültigen NetCrunch API-Schlüssel enthalten. Der MCP Server akzeptiert den Schlüssel an einem der folgenden Orte (in der angegebenen Reihenfolge geprüft):
| Methode | Beispiel |
|---|---|
Authorization-Header |
Authorization: Bearer YOUR_API_KEY |
x-api-key-Header |
x-api-key: YOUR_API_KEY |
| Abfrageparameter | ?api_key=YOUR_API_KEY |
API-Schlüssel werden in der NetCrunch Administration Console unter User Profiles → API Keys erstellt. Der Schlüssel bestimmt, auf welche Knoten und Vorgänge der Aufrufer zugreifen kann – derselbe Sicherheitskontext gilt sowohl für MCP als auch für REST.
Anfragen ohne gültigen API-Schlüssel erhalten eine Fehlerantwort:
{ "error": "No API Key" }
Ratenbegrenzung
MCP-Anfragen verwenden denselben Token-Bucket pro API-Schlüssel wie die REST API. Standardlimits (konfigurierbar in server.cfg.yml):
| Einstellung | Standard |
|---|---|
| Max requests per window | 100 |
| Window length | 60 seconds |
Wenn das Limit überschritten wird, geben Tool-Aufrufe ein Fehlerergebnis zurück. Nicht verwendete Token werden kontinuierlich aufgefüllt.
Client-Konfiguration
Claude Desktop
Fügen Sie Folgendes zu claude_desktop_config.json hinzu:
{ "mcpServers": { "netcrunch": { "url": "https://YOUR_SERVER/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }
Cursor / VS Code (Copilot)
Fügen Sie Folgendes zu den MCP-Einstellungen (.cursor/mcp.json oder VS Code MCP config) hinzu:
{ "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)
Verfügbare Tools
Der MCP Server stellt 50 Tools bereit, die in 8 Gruppen organisiert sind. Jedes Tool entspricht einem REST API-Endpunkt und akzeptiert dieselben Parameter. Erforderliche Parameter sind mit * gekennzeichnet.
Nodes (19 Tools)
Verwalten Sie überwachte Knoten – fügen Sie Knoten hinzu, löschen Sie sie, lesen und schreiben Sie Eigenschaften, steuern Sie die Überwachung und verwalten Sie Tags, Netzwerkdienste, Sensoren, benutzerdefinierte Felder und untergeordnete Knoten.
| Tool | Beschreibung | Parameter |
|---|---|---|
nodes.add |
Einen neuen überwachten Knoten hinzufügen | networkAddress, name, type |
nodes.delete |
Einen überwachten Knoten löschen | node |
nodes.getProperties |
Knoteneigenschaften abrufen | node, properties |
nodes.getProperty |
Eine einzelne Knoteneigenschaft abrufen | node, property* |
nodes.setProperties |
Mehrere Knoteneigenschaften festlegen | node |
nodes.setProperty |
Eine einzelne Knoteneigenschaft festlegen | node, property* |
nodes.setMonitoring |
Überwachung aktivieren oder deaktivieren | node, value* (on/off), disabledFrom, disabledUntil, reset |
nodes.addNetworkService |
Einen Netzwerkdienstmonitor hinzufügen | node, name*, protocolId, timeout, repeat, additionalRepeat, monitoringTime, overrideSuppressing, param |
nodes.setNetworkServiceParams |
Parameter des Dienstmonitors aktualisieren | node, service*, protocolId, timeout, repeat, additionalRepeat, monitoringTime, overrideSuppressing |
nodes.deleteNetworkService |
Einen Dienstmonitor entfernen | node, service* |
nodes.setSensorParams |
Sensorüberwachung konfigurieren | node, sensor*, enabled, monitoringTime, credentials |
nodes.setMonitoringEngineParams |
Monitoring Engine konfigurieren | node, engine*, enabled, monitoringTime, credentials |
nodes.setCustomFieldValue |
Einen Wert für ein benutzerdefiniertes Feld festlegen | node, field*, value |
nodes.deleteCustomField |
Ein benutzerdefiniertes Feld löschen | node, field* |
nodes.addChild |
Einen untergeordneten Knoten hinzufügen | node, child* |
nodes.deleteChild |
Einen untergeordneten Knoten entfernen | node, child* |
nodes.addTag |
Ein Tag hinzufügen | node, tag* |
nodes.deleteTag |
Ein Tag entfernen | node, tag* |
nodes.removeTags |
Alle Tags entfernen | node |
Der Parameter node akzeptiert eine Knoten-ID (numerisch), einen Namen, eine IP-Adresse oder einen DNS-Namen.
Views (9 Tools)
Verwalten Sie Netzwerkansichten und Ansichtsordner.
| Tool | Beschreibung | Parameter |
|---|---|---|
views.add |
Eine neue Ansicht erstellen | name*, parent |
views.addFolder |
Einen neuen Ordner erstellen | name*, parent |
views.delete |
Eine Ansicht löschen | map |
views.getProperties |
Ansichtseigenschaften abrufen | map, properties |
views.getProperty |
Eine einzelne Eigenschaft abrufen | map, property* |
views.setProperties |
Mehrere Eigenschaften festlegen | map |
views.setProperty |
Eine einzelne Eigenschaft festlegen | map, property* |
views.addNode |
Einen Knoten zu einer Ansicht hinzufügen | map, node* |
views.removeNode |
Einen Knoten aus einer Ansicht entfernen | map, node* |
Der Parameter map akzeptiert eine Ansichts-ID, einen Namen oder einen Pfad.
Policies (6 Tools)
Verwalten Sie Überwachungsrichtlinien.
| Tool | Beschreibung | Parameter |
|---|---|---|
policies.getProperties |
Richtlinieneigenschaften abrufen | map, properties |
policies.getProperty |
Eine einzelne Eigenschaft abrufen | map, property* |
policies.setProperties |
Mehrere Eigenschaften festlegen | map |
policies.setProperty |
Eine einzelne Eigenschaft festlegen | map, property* |
policies.addNode |
Einen Knoten zu einer Richtlinie hinzufügen | map, node* |
policies.removeNode |
Einen Knoten aus einer Richtlinie entfernen | map, node* |
Notes (5 Tools)
Verwalten Sie Knoten zugeordnete Notizen.
| Tool | Beschreibung | Parameter |
|---|---|---|
notes.add |
Eine Notiz zu einem Knoten hinzufügen | node, subject, text, label (red/green/blue/yellow), due, refid, category, archived |
notes.get |
Eine Notiz anhand der Referenz-ID abrufen | node, refid* |
notes.getProperty |
Eine einzelne Notizeigenschaft abrufen | node, refid*, property* |
notes.update |
Eine Notiz aktualisieren | node, refid*, subject, text, label, due, category, archived |
notes.updateProperty |
Eine einzelne Notizeigenschaft aktualisieren | node, refid*, property* |
Interface Settings (5 Tools)
Verwalten Sie die Anzeigeeinstellungen von Netzwerkschnittstellen.
| Tool | Beschreibung | Parameter |
|---|---|---|
interfaceSettings.set |
Schnittstelleneinstellungen festlegen | node, ifIndex*, name, speed, note |
interfaceSettings.get |
Schnittstelleneinstellungen abrufen | node, ifIndex |
interfaceSettings.getAll |
Alle Schnittstellen abrufen | node |
interfaceSettings.delete |
Schnittstelleneinstellungen löschen | node, ifIndex |
interfaceSettings.deleteAll |
Alle Schnittstelleneinstellungen löschen | node |
Credentials (2 Tools)
Listen Sie Anmeldeinformationstypen und -profile auf (nur für Administratoren).
| Tool | Beschreibung | Parameter |
|---|---|---|
credentials.getTypes |
Anmeldeinformationstypen auflisten | — |
credentials.get |
Anmeldeinformationen nach Typ abrufen | type* |
IP SLA (2 Tools)
| Tool | Beschreibung | Parameter |
|---|---|---|
ipsla.get |
Alle IP SLA-Vorgänge auflisten | — |
ipsla.getNode |
IP SLA für einen Knoten abrufen | node |
NQA (2 Tools)
| Tool | Beschreibung | Parameter |
|---|---|---|
nqa.get |
Alle NQA-Vorgänge auflisten | — |
nqa.getNode |
NQA für einen Knoten abrufen | node |
Beispielgespräche
Nach der Verbindung kann ein KI-Assistent NetCrunch Tools ganz natürlich verwenden:
Benutzer: Zeige mir die Eigenschaften des Knotens unter 10.0.0.1
Assistent ruft
nodes.getPropertiesmit{ "node": "10.0.0.1" }auf und gibt das Ergebnis zurück.Benutzer: Deaktiviere die Überwachung des Webservers für die nächsten 2 Stunden
Assistent ruft
nodes.setMonitoringmit{ "node": "web-server", "value": "off", "disabledUntil": "2026-04-26T20:00:00Z" }auf.Benutzer: Füge Knoten 42 eine Notiz hinzu, dass die Firmware aktualisiert wurde
Assistent ruft
notes.addmit{ "node": "42", "subject": "Firmware updated", "text": "Firmware was updated to latest version.", "label": "green" }auf.
Fehlerbehandlung
Fehler bei Tool-Aufrufen werden als MCP-Fehlerergebnisse mit isError: true und einem JSON-Textinhaltsblock zurückgegeben:
{ "content": [{ "type": "text", "text": "{\"error\":\"Authentication Failed\"}" }], "isError": true }
Häufige Fehlerbedingungen:
| Fehler | Ursache |
|---|---|
No API Key |
Der Anfrage fehlt die Authentifizierung |
Authentication Failed |
Ungültiger oder abgelaufener API-Schlüssel |
Node not Found |
Der angegebene Knoten ist nicht vorhanden |
Access Denied |
Der API-Schlüssel verfügt nicht über die Berechtigung für diesen Vorgang |
Too Many Requests |
Ratenlimit überschritten – warten Sie und versuchen Sie es erneut |