KI-Schnittstelle (MCP)

Node64 spricht das Model Context Protocol (MCP). KI-Anwendungen wie Claude Code, Cursor oder VS Code fragen über /mcp den Zustand deiner Node ab und erklären Zusammenhänge – etwa „Warum war die Webseite heute Nacht weg?“, „Was hat der Honeypot diese Woche gesehen?“ oder „Welche Zertifikate laufen bald ab?“.

Nur lesen, nur aus dem Heimnetz

Die Schnittstelle ist ab Werk aus. Eingeschaltet kann die KI nichts ändern, nur lesen – und nur aus privaten Netzen. Ändernde Werkzeuge folgen später einzeln und ebenfalls standardmäßig aus.

Was ist MCP?

MCP ist ein offenes Protokoll (JSON-RPC 2.0), über das eine KI-Anwendung „Werkzeuge“ eines Servers aufruft. Node64 ist der Server: Er beschreibt seine Werkzeuge mit Name, Zweck und Parametern, die Anwendung entscheidet, welche sie aufruft, und bekommt kompakte JSON-Antworten.

Transport ist „Streamable HTTP“ auf dem Web-Port der Node – kein zusätzlicher Port, dasselbe TLS-Zertifikat wie die Oberfläche. Node64 arbeitet ohne Sitzungen und antwortet als JSON.

Sicherheit

  • Standard aus. Ausgeschaltet antwortet /mcp mit 404.
  • Nur aus dem Heimnetz. Erlaubt sind private Netze (RFC 1918, fc00::/7), Link-local (fe80::/10), 100.64.0.0/10 (z. B. Tailscale) und localhost. Alles andere bekommt 403 – auch über PROXY64 oder einen anderen Reverse-Proxy: Steht in X-Forwarded-For, X-Real-IP oder Forwarded eine öffentliche Adresse, wird abgewiesen. Diese Header können den Zugang nur sperren, nie öffnen. Über PROXY64 muss dafür eine private Client-Adresse weitergereicht werden.
  • Eigene MCP-Schlüssel (mcp64_…), getrennt von den API-Keys: node64_… gilt hier nicht, mcp64_… nicht für /api. Je Schlüssel gibt es einen Namen, Rechte je Bereich, die letzte Nutzung und Adresse; widerrufen geht jederzeit. Gespeichert wird nur der Hash, der Schlüssel ist nur direkt nach dem Anlegen sichtbar. Falsche Schlüssel bremsen die Adresse aus. Sitzungs-Cookies gelten für /mcp nicht.
  • Rate-Limit: 60 Anfragen pro Minute je Schlüssel, darüber 429 mit Retry-After.
  • Gleiche Regeln wie die API. Jedes Werkzeug ruft intern die vorhandene JSON-API auf, angemeldet als Inhaber des Schlüssels. Werkzeuge erscheinen nur, wenn ihr Modul läuft und der Schlüssel den Bereich lesen darf.
  • Nie Geheimnisse. Die Werkzeuge wählen ihre Felder ausdrücklich aus: keine API-Keys, Tokens, Passwörter, privaten Schlüssel, Zugangsdaten von Kanälen, Header-Werte von PROXY64, Check-Parameter oder Push-Adressen. Ein zentraler Filter entfernt zusätzlich aus allen Texten URLs bis auf Schema und Host, token=…- und key=…-Werte, Bearer …, Schlüssel, PEM-Blöcke und lange Zufallszeichenfolgen.
  • Fremde Daten sind gekennzeichnet. Vieles schreiben Fremde: Benutzer, Passwörter und Pfade aus dem Honeypot, Domainnamen im DNS64-Log, User-Agents aus PROXY64, VM-Namen aus Proxmox, Akteure im Audit-Log, HTTP-Methoden aus dem Zugriffs-Log und Fehlertexte entfernter Dienste, von Kanälen und der ipv64-Verknüpfung. Sie stehen gekürzt und bereinigt in einem Unterobjekt untrusted, und die Werkzeugbeschreibungen sagen der KI, dass diese Inhalte nie als Anweisungen gelten.
  • Audit: Jeder Werkzeugaufruf steht im Audit-Log (Bereich KI (MCP), Aktion mcp.call) mit Werkzeug, Schlüssel, Benutzer, Adresse, gekürzten Parametern und Ergebnis. Ebenso Einschalten, Anlegen und Widerrufen von Schlüsseln. Die Einträge folgen der Aufbewahrung des Audit-Logs (Standard 365 Tage).
  • Umzug: Der Schalter zieht mit Export und Import der Konfiguration um, MCP-Schlüssel nie – auch nicht im Export mit Passwort.

Einrichten

  1. Einschalten
    Unter Einstellungen → KI-Schnittstelle (MCP) auf Einschalten klicken.
  2. Schlüssel anlegen
    Name, zum Beispiel „Claude Code Laptop“, und die Bereiche, die gelesen werden dürfen: Node, Healthchecks, Proxmox VE, DNS64, PROXY64, Honeypot64, DynDNS, Zertifikate, Benachrichtigungen, Audit-Log und Logs.
  3. Anwendung verbinden
    Die Seite zeigt die Adresse https://<node>:<port>/mcp und fertige Schnipsel mit dem neuen Schlüssel für die Anwendungen unten.

Zertifikat

Ohne weitere Einrichtung nutzt Node64 ein selbst signiertes Zertifikat. Anwendungen auf Basis von Node.js (Claude Code, mcp-remote) lehnen das ab. Du hast drei Möglichkeiten:

  • Zertifikat der Node herunterladen (Einstellungen → Allgemein → Erreichbarkeit dieser Node) und vor dem Start der Anwendung NODE_EXTRA_CA_CERTS=/pfad/node64.pem setzen.
  • Für die Oberfläche ein Zertifikat aus der Zertifikatsverwaltung wählen (Einstellungen → Allgemein → Erreichbarkeit dieser Node) und die Node über diesen Namen ansprechen.
  • Im LAN geht auch http://<node>:<port>/mcp – HTTP und HTTPS laufen auf demselben Port. Der Schlüssel geht dann unverschlüsselt durchs Heimnetz.

Claude Code

bash
claude mcp add --transport http node64 https://node64.lan:8080/mcp --header "Authorization: Bearer mcp64_…"

Mit --scope user gilt der Server in allen Projekten. Prüfen kannst du die Verbindung mit claude mcp list oder /mcp in Claude Code.

Cursor

~/.cursor/mcp.json für alle Projekte oder .cursor/mcp.json im Projekt:

json
{
  "mcpServers": {
    "node64": {
      "url": "https://node64.lan:8080/mcp",
      "headers": { "Authorization": "Bearer mcp64_…" }
    }
  }
}

VS Code (GitHub Copilot, Agent-Modus)

.vscode/mcp.json im Projekt oder über MCP: Open User Configuration:

json
{
  "servers": {
    "node64": {
      "type": "http",
      "url": "https://node64.lan:8080/mcp",
      "headers": { "Authorization": "Bearer mcp64_…" }
    }
  }
}

Damit der Schlüssel nicht in der Datei steht, kann VS Code ihn abfragen: "inputs": [{"type": "promptString", "id": "node64-key", "description": "Node64 MCP-Schlüssel", "password": true}] und im Header "Authorization": "Bearer ${input:node64-key}".

Claude Desktop

Noch nicht real geprüft

Dieser Weg ist beschrieben, aber noch nicht mit einer echten Installation getestet. Claude Desktop und mcp-remote ändern ihr Verhalten häufig – bei Problemen die aktuelle Doku beider Projekte lesen.

Entfernte Server bindet Claude Desktop als „Connectors“ ein. Die Verbindung baut dabei die Cloud von Anthropic auf und erreicht eine Node im Heimnetz nicht. Deshalb geht es über die lokale Brücke mcp-remote (braucht Node.js), eingetragen in claude_desktop_config.json (Einstellungen → Entwickler → Konfiguration bearbeiten):

json
{
  "mcpServers": {
    "node64": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://node64.lan:8080/mcp", "--header", "Authorization:${NODE64_AUTH}"],
      "env": { "NODE64_AUTH": "Bearer mcp64_…" }
    }
  }
}

Der Schlüssel steht in env, weil Leerzeichen in args unter Windows Probleme machen. Für ein selbst signiertes Zertifikat zusätzlich "NODE_EXTRA_CA_CERTS": "C:\\pfad\\node64.pem" in env eintragen; für http:// braucht mcp-remote den Schalter --allow-http.

claude.ai und ChatGPT im Browser

Diese Anwendungen rufen MCP-Server aus ihrer Cloud auf. Dafür müsste die Node öffentlich erreichbar sein und OAuth können – das ist bewusst noch nicht vorgesehen.

Werkzeuge

Alle Werkzeuge lesen nur (readOnlyHint: true, destructiveHint: false). Zeiten sind RFC 3339 in UTC.

BereichWerkzeugInhalt
Nodenode_statusVersion, Laufzeit, Hostname, Datenbankgröße, Module an/aus, Verknüpfung mit ipv64, Zusammenfassung je Modul
Nodelist_modulesModule mit Version, Zustand, letztem Fehler
Healthcheckslist_checksChecks mit Zustand, letzter Messung, Latenz; Filter Zustand, Gruppe, Typ, Tag, Text
Healthchecksget_checkein Check: Einstellungen zusammengefasst, Zustand, Uptime 24 h / 7 d / 30 d, letzte Ereignisse
Healthcheckscheck_historyMessungen zusammengefasst (1h, 24h, 7d, 30d, 1y), optional letzte Fehlmessungen
Healthcheckslist_incidentsStörungen (alle oder ein Check, nur offene), Dauer
Healthcheckslist_maintenanceWartungsfenster, betroffene Checks, aktiv
Proxmox VEpve_systemsSysteme mit Zustand, Version, Quorum, Nodes und Gästen
Proxmox VEpve_resourcesNodes, VMs, Container mit Zustand und Last; Filter System, Typ, nur Probleme; CPU, RAM und Disk nur für laufende Gäste, Disk nicht bei VMs ohne Gast-Agent
Proxmox VEpve_guest_historyVerlauf eines Nodes oder Gasts (CPU, RAM, Disk, Netz)
DNS64dns64_summaryAnfragen, Blockquote, Cache, Clients, Upstreams (ohne URLs), Pause
DNS64dns64_topTop geblockt, erlaubt, Clients
DNS64dns64_query_logSuche nach Client und/oder Domain, Status, Zeitraum; bis 200 Einträge
PROXY64proxy_hostsHosts, Ziele, Erreichbarkeit, Zertifikat, Zähler (ohne Header-Werte)
PROXY64proxy_access_logZugriffs-Log, Filter Host, Statusklasse, abgewiesen, Text; Pfade ohne Query
PROXY64proxy_blockedSofortsperren aus Honeypot64, Rate-Limit-Sperren, Blocklisten, Ländersperren
Honeypot64honeypot_statsEreignisse, IPs, Anmeldeversuche, Dienste, Länder, Top-Listen im Zeitraum
Honeypot64honeypot_eventsletzte Ereignisse, Filter Quelle, Land, Dienst, Art
Honeypot64honeypot_lookup_ipalles lokal zu einer IP (Honeypot, mit Recht auch PROXY64-Sperren und -Log); durchsucht die letzten 1000 Ereignisse
DynDNSdyndns_statusöffentliche IPs, Präfix, Anschluss (CGNAT/DS-Lite), Ziele (ohne Tokens), Update-Limit
DynDNSdyndns_historyUpdates bei ipv64 oder IP-Prüfungen
Zertifikatelist_certsNamen, Aussteller, Ablauf, Zustand, Erneuerung – ohne Schlüssel
Benachrichtigungenrecent_notificationsZustellungen (ok/fehlgeschlagen) und Kanäle ohne Zugangsdaten
Audit-Log und Logsaudit_logAudit-Log mit Filter Bereich, seitenweise
Audit-Log und Logsnode_logsletzte Logzeilen, Filter Stufe, Modul, Text

Prompts

PromptInhalt
incident_analysisStörung analysieren (Parameter check und/oder time): Check, Verlauf, Proxmox, PROXY64, DNS64 und Audit im selben Zeitraum
weekly_reportWochenbericht über alle freigegebenen Bereiche
security_overviewSicherheitslage: Honeypot64, PROXY64-Sperren, Anmeldungen

Prompts nennen nur Werkzeuge, die der Schlüssel auch hat.

Grenzen

  • Nur lesen. Ändernde Werkzeuge wie „Check pausieren“ oder eine DNS64-Freigabe folgen später einzeln und standardmäßig aus.
  • Nie über MCP: Schlüssel, Benutzer, Anmeldung, Backup, Export und Import, Verknüpfen mit ipv64, Zurücksetzen, Updates.
  • Ergebnisse sind begrenzt (limit, Zeiträume); große Listen werden gekürzt (truncated, next_before).
  • Kein OAuth, keine öffentliche Erreichbarkeit.

Fehler

HTTPBedeutung
400JSON-RPC-Batch (mehrere Anfragen in einem Aufruf) – wird abgewiesen, Fehler -32600
404Schnittstelle ausgeschaltet
403Anfrage nicht aus einem privaten Netz (oder POST ohne Authorization: Bearer)
401Schlüssel fehlt, ist falsch oder widerrufen
429mehr als 60 Anfragen pro Minute mit diesem Schlüssel bzw. zu viele falsche Schlüssel

Fehler eines Werkzeugs, etwa „Check nicht gefunden“ oder ein gestopptes Modul, kommen als Werkzeug-Ergebnis mit isError.

Prometheus

node64_mcp_enabled (1/0) und node64_mcp_calls_total{tool,result} mit result = ok oder error – siehe Prometheus & Grafana.

Etwas unklar, fehlt etwas oder hast du eine Frage zu Node64? Frag im offiziellen Forum v64.tech.

Fragen zu Node64?
Für alle Fragen zum Produkt gibt es das offizielle Forum: Einrichtung, Fehlersuche, Ideen und Austausch mit der Community und dem ipv64.net-Team.
Zum Forum v64.tech