Zum Inhalt

OpenCode MCP-Aktivierung

Stand: 2026-05-26

Ziel

OpenCode soll fuer mehrere Benutzer ohne VPN-, LAN- oder VLAN70-Abhaengigkeit starten und sofort nutzbar sein. LLM- und Tool-Zugriff laufen ueber zentrale HTTPS-Endpunkte.

Primaerer Weg

OpenCode nutzt den zentralen Lanstyle Remote MCP unter:

  • https://mcphub.lanstyle.de/lanstyle-mcp

Dieser Pfad ist kein OAuth-Browserflow. OpenCode sendet einen Bearer Token aus der lokalen Umgebung:

{
  "mcp": {
    "lanstyle_mcphub": {
      "type": "remote",
      "url": "https://mcphub.lanstyle.de/lanstyle-mcp",
      "enabled": true,
      "timeout": 60000,
      "oauth": false,
      "headers": {
        "Authorization": "Bearer {env:LANSTYLE_MCPHUB_TOKEN}"
      }
    }
  }
}

Der Token liegt pro Benutzer lokal als LANSTYLE_MCPHUB_TOKEN und wird nicht in Git oder Dokumentation gespeichert.

Per-User Token-Konzept

Der Remote-MCP unterstuetzt mehrere serverseitig konfigurierte Tokens ueber LANSTYLE_MCPHUB_TOKENS_JSON.

Zusaetzlich kann der OpenCode Self-Service neue Benutzer-/Geraete-Tokens in den dynamischen Store schreiben:

/var/lib/lanstyle-agent/controlled-execution/opencode-access/mcp-tokens.json

Der Store enthaelt serverseitige Validierungsdaten und ist root-only zu betreiben. Benutzer sehen spaeter nur Fingerprints und Ablaufdaten; Tokenwerte werden ausschliesslich einmalig im Onboarding-Paket ausgeliefert.

Namensschema:

  • vorname-nachname-client
  • Beispiel ohne Secretwert: maximilian-eberhardt-mbp-pro-max

Token-Metadaten:

  • name: Benutzer/Client-Zuordnung
  • enabled: Sperrung einzelner Benutzer ohne Rotation aller Tokens
  • scopes: aktuell lanstyle:read und lanstyle:plan
  • access: aktuell read-only und plan-only
  • expires_at: optionaler Ablaufzeitpunkt

Rotation:

  1. neuen Token erzeugen und in Vaultwarden beim Benutzer/Client ablegen
  2. Token serverseitig in LANSTYLE_MCPHUB_TOKENS_JSON ergaenzen
  3. Remote-MCP neu starten
  4. Client mit neuem Token testen
  5. alten Token serverseitig auf enabled:false setzen oder entfernen

Sperrung:

  • nur den betroffenen Token deaktivieren
  • keine anderen Benutzer-Tokens loeschen
  • anschliessend 401 mit dem alten Token pruefen

Architektur

  • OpenCode spricht extern nur https://litellm.lanstyle.de/v1 und https://mcphub.lanstyle.de/lanstyle-mcp.
  • Im Client gibt es keine direkten 10.222.x.x, 10.0.x.x oder GB10/Ollama-Provider.
  • Der zentrale Remote MCP laeuft im Agent-Runtime-LXC 259 als Service lanstyle-remote-mcp auf Port 3011.
  • NPM leitet nur den Pfad /lanstyle-mcp von mcphub.lanstyle.de auf 10.222.70.20:3011.
  • Der normale MCPHub unter mcphub.lanstyle.de bleibt fuer UI/OAuth separat erhalten.

Lokaler Admin-Fallback

Lokale stdio-MCPs bleiben deaktiviert als Admin-/LAN-Fallback:

  • lanstyle_infra_local
  • lanstyle_write_plan_local

Sie duerfen nicht der Standardweg fuer normale Benutzer sein.

Erwartete Tools

  • netbox_get_status
  • netbox_list_sites
  • netbox_list_prefixes
  • npm_list_proxy_hosts
  • proxmox_get_version
  • proxmox_list_cluster_resources
  • gitea_get_version
  • netbox_plan_prefix_change
  • gitea_plan_repository_change
  • proxmox_plan_guest_change

Regeln

  • Keine generischen Toolnamen verwenden.
  • Keine Secrets ausgeben.
  • Live-Writes bleiben verboten, solange kein separater Approval-Flow mit approval_id existiert.
  • Read-only Tools bleiben lesend.
  • Plan-only Tools erzeugen nur Aenderungsplaene.
  • Pro Benutzer kann spaeter ein eigener LANSTYLE_MCPHUB_TOKEN ausgegeben und serverseitig gesperrt/rotiert werden.
  • Remote-MCP-Logs enthalten Tokenname und Hashpraefix, aber keine Tokenwerte.
  • Ungueltige Tokens liefern 401.

Tests

Getestet am 2026-05-26:

  • Remote MCP initialize: 200
  • Tool Listing: 10 Tools
  • Read-only Tool Call: erfolgreich
  • Plan-only Tool Call: erfolgreich
  • Ungueltiger Token: 401
  • Deaktivierter Bootstrap-Token: 401
  • Kein OAuth-/Browserlogin noetig

Vaultwarden Ablage

Status 2026-05-26:

  • Vaultwarden ist fuer OpenCode-MCP-Tokens Source of Truth.
  • Aktiver Eintrag: Lanstyle / OpenCode MCP Token / maximilian-eberhardt-mbp-pro-max.
  • Der Tokenwert liegt als verstecktes Feld token in Vaultwarden.
  • Lokale Clients laden den Wert als LANSTYLE_MCPHUB_TOKEN in ~/.config/opencode/secrets.env.
  • Der fruehere Bootstrap-Token maximilian-eberhardt-opencode-bootstrap ist serverseitig deaktiviert.

Manuelle Ablage fuer weitere Benutzer:

  1. vault.lanstyle.de oeffnen
  2. Tresor/Organisation fuer Lanstyle waehlen
  3. neuen Eintrag Lanstyle / OpenCode MCP Token / <vorname-nachname-client> erstellen
  4. Tokenwert als Hidden Field token speichern
  5. Felder ohne Secretwert ergaenzen: token_name, service, scopes, access, status
  6. danach lokal LANSTYLE_MCPHUB_TOKEN aus Vaultwarden in ~/.config/opencode/secrets.env setzen