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?“.
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
/mcpmit 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 inX-Forwarded-For,X-Real-IPoderForwardedeine ö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/mcpnicht. - 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=…- undkey=…-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
- Einschalten
Unter Einstellungen → KI-Schnittstelle (MCP) auf Einschalten klicken. - 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. - Anwendung verbinden
Die Seite zeigt die Adressehttps://<node>:<port>/mcpund 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.pemsetzen. - 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
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:
{
"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:
{
"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
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):
{
"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.
| Bereich | Werkzeug | Inhalt |
|---|---|---|
| Node | node_status | Version, Laufzeit, Hostname, Datenbankgröße, Module an/aus, Verknüpfung mit ipv64, Zusammenfassung je Modul |
| Node | list_modules | Module mit Version, Zustand, letztem Fehler |
| Healthchecks | list_checks | Checks mit Zustand, letzter Messung, Latenz; Filter Zustand, Gruppe, Typ, Tag, Text |
| Healthchecks | get_check | ein Check: Einstellungen zusammengefasst, Zustand, Uptime 24 h / 7 d / 30 d, letzte Ereignisse |
| Healthchecks | check_history | Messungen zusammengefasst (1h, 24h, 7d, 30d, 1y), optional letzte Fehlmessungen |
| Healthchecks | list_incidents | Störungen (alle oder ein Check, nur offene), Dauer |
| Healthchecks | list_maintenance | Wartungsfenster, betroffene Checks, aktiv |
| Proxmox VE | pve_systems | Systeme mit Zustand, Version, Quorum, Nodes und Gästen |
| Proxmox VE | pve_resources | Nodes, 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 VE | pve_guest_history | Verlauf eines Nodes oder Gasts (CPU, RAM, Disk, Netz) |
| DNS64 | dns64_summary | Anfragen, Blockquote, Cache, Clients, Upstreams (ohne URLs), Pause |
| DNS64 | dns64_top | Top geblockt, erlaubt, Clients |
| DNS64 | dns64_query_log | Suche nach Client und/oder Domain, Status, Zeitraum; bis 200 Einträge |
| PROXY64 | proxy_hosts | Hosts, Ziele, Erreichbarkeit, Zertifikat, Zähler (ohne Header-Werte) |
| PROXY64 | proxy_access_log | Zugriffs-Log, Filter Host, Statusklasse, abgewiesen, Text; Pfade ohne Query |
| PROXY64 | proxy_blocked | Sofortsperren aus Honeypot64, Rate-Limit-Sperren, Blocklisten, Ländersperren |
| Honeypot64 | honeypot_stats | Ereignisse, IPs, Anmeldeversuche, Dienste, Länder, Top-Listen im Zeitraum |
| Honeypot64 | honeypot_events | letzte Ereignisse, Filter Quelle, Land, Dienst, Art |
| Honeypot64 | honeypot_lookup_ip | alles lokal zu einer IP (Honeypot, mit Recht auch PROXY64-Sperren und -Log); durchsucht die letzten 1000 Ereignisse |
| DynDNS | dyndns_status | öffentliche IPs, Präfix, Anschluss (CGNAT/DS-Lite), Ziele (ohne Tokens), Update-Limit |
| DynDNS | dyndns_history | Updates bei ipv64 oder IP-Prüfungen |
| Zertifikate | list_certs | Namen, Aussteller, Ablauf, Zustand, Erneuerung – ohne Schlüssel |
| Benachrichtigungen | recent_notifications | Zustellungen (ok/fehlgeschlagen) und Kanäle ohne Zugangsdaten |
| Audit-Log und Logs | audit_log | Audit-Log mit Filter Bereich, seitenweise |
| Audit-Log und Logs | node_logs | letzte Logzeilen, Filter Stufe, Modul, Text |
Prompts
| Prompt | Inhalt |
|---|---|
incident_analysis | Störung analysieren (Parameter check und/oder time): Check, Verlauf, Proxmox, PROXY64, DNS64 und Audit im selben Zeitraum |
weekly_report | Wochenbericht über alle freigegebenen Bereiche |
security_overview | Sicherheitslage: 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
| HTTP | Bedeutung |
|---|---|
| 400 | JSON-RPC-Batch (mehrere Anfragen in einem Aufruf) – wird abgewiesen, Fehler -32600 |
| 404 | Schnittstelle ausgeschaltet |
| 403 | Anfrage nicht aus einem privaten Netz (oder POST ohne Authorization: Bearer) |
| 401 | Schlüssel fehlt, ist falsch oder widerrufen |
| 429 | mehr 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.