Skip to main content
Glama
galkremer1
by galkremer1

cnv-lab-mcp

MCP-Server zur Reservierung von Labor-Hardware in GLPI, zum Auslösen von CNV-Cluster-Deployments in Jenkins und zum Importieren von ACM-Spoke-Clustern. Es sind keine Instanz-URLs, Hardwarenamen oder Token fest kodiert – alles stammt aus Tool-Argumenten oder Umgebungsvariablen.

Zu Cursor hinzufügen

Zu Cursor hinzufügen

Related MCP server: DCI MCP Server

Voraussetzungen

  • Node.js >= 20

  • Ein persönlicher GLPI-API-Token (My SettingsAPI tokens). Optional GLPI_APP_TOKEN, falls die Instanz einen benötigt.

  • Ein Jenkins-API-Token (UserConfigureAPI Token) sowie den Kurz-Benutzernamen, nicht eine E-Mail-Adresse. user@example.com liefert 401; user funktioniert.

  • Das GLPI-Profil muss auf der Ziel-Entity ein reservation-Recht ungleich Null haben.

  • Das Jenkins-Konto benötigt Job/Build und Job/Read für die Jobs, die Sie auslösen werden.

Interne TLS / NODE_EXTRA_CA_CERTS

Der fetch von Node.js (undici) verwendet nicht den OS-/Schlüsselbund-CA-Speicher, wie es curl tut. Wenn curl funktioniert, aber der MCP-Server fetch failed meldet, setzen Sie NODE_EXTRA_CA_CERTS auf Ihr internes CA-Bundle und starten Sie Cursor neu:

export NODE_EXTRA_CA_CERTS=/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

TLS-Fehler werden getrennt von allgemeinen Netzwerkfehlern gemeldet, damit das nicht rätselhaft bleibt.

Konfiguration

Kopieren Sie .env.example und setzen Sie:

Variable

Erforderlich

Hinweise

GLPI_BASE_URL

ja

Mit oder ohne /apirest.php

GLPI_USER_TOKEN

ja

Persönlicher API-Token

GLPI_APP_TOKEN

nein

Nur falls die Instanz einen benötigt

JENKINS_BASE_URL

ja

Jenkins-Root-URL

JENKINS_USER

ja

Kurz-Benutzername (nicht E-Mail)

JENKINS_API_TOKEN

ja

API-Token

Beispiel-Eintrag in mcp.json (Geheimnisse per Env-Interpolation):

{
  "mcpServers": {
    "cnv-lab-mcp": {
      "command": "npx",
      "args": ["-y", "cnv-lab-mcp"],
      "env": {
        "GLPI_BASE_URL": "https://glpi.example.internal",
        "GLPI_USER_TOKEN": "${env:GLPI_USER_TOKEN}",
        "JENKINS_BASE_URL": "https://jenkins.example.internal",
        "JENKINS_USER": "${env:JENKINS_USER}",
        "JENKINS_API_TOKEN": "${env:JENKINS_API_TOKEN}",
        "NODE_EXTRA_CA_CERTS": "${env:NODE_EXTRA_CA_CERTS}"
      }
    }
  }
}

Bis das Paket auf npm verfügbar ist, verweisen Sie mit args stattdessen auf dieses Repository:

"args": ["-y", "github:galkremer1/cnv-lab-mcp"]

Tools

Reservierung:

  • list_reservable_items — GLPI-reservierbare Assets durchsuchen

  • find_available_cluster — Anforderungen abgleichen (strukturiert + Freitext-Kommentare) und nach dem frühesten freien Slot sortieren. Bucht nichts.

  • check_availability — Reservierungen + Lücken für ein Element

  • reserve_cluster — ein Zeitfenster buchen; setzt users_id immer aus der Sitzung

  • cancel_reservation — eine Buchung freigeben

Jenkins:

  • trigger_jenkins_job — generischer Trigger; start_at wird zu delay=NNNsec

  • get_build_status — Warteschlange/Build + Konsolenausgabe

  • abort_build — einen Build stoppen

Clusterzugriff:

  • get_cluster_info — nicht vertrauliche Metadaten und Konsolen-/API-URLs aus *-data.zip

  • get_cluster_kubeconfigauth/kubeconfig + auth/kubeadmin-password nur im Speicher. Cluster-Admin-Zugangsdaten; geben Sie sie nicht im Chat wieder.

ACM:

  • import_spoke_cluster — ManagedCluster + KlusterletAddonConfig, Import-Manifeste auf den Spoke anwenden, Join abfragen

  • get_managed_cluster_status — Hub-seitige Join-/Verfügbarkeits-Bedingungen

Szenarien (Bestätigung vor der Buchung):

  • list_scenarios

  • plan_scenario — Cluster/Fenster/Parameter vorschlagen, nichts buchen

  • execute_scenario — aus einem Plan reservieren + auslösen

Eingebaute Szenarien liegen in src/scenarios/catalog.json und können per PR erweitert werden: basic-bm-cnv, acm-hub-and-spoke, sriov-cnv-cluster.

Entwicklung

npm install
npm test
npm run lint
npm run typecheck
npm run build

Manueller Smoke-Test gegen echte Instanzen (nicht in CI ausgeführt):

npx tsx scripts/smoke.ts
SMOKE_JOB=deploy-ocp-bare-metal-cluster-with-abi-cnv-5.0 SMOKE_CLUSTER=example-cluster npx tsx scripts/smoke.ts

Sicherheit

  • .env ist von Git ignoriert. Beispiele verwenden offensichtlich unechte Platzhalter.

  • CI führt bei jedem Push/PR gitleaks aus.

  • Client-Fehler maskieren Token und protokollieren niemals die Werte von Authorization / user_token.

  • get_cluster_kubeconfig lädt die Zip-Datei in einen Buffer und extrahiert sie mit JSZip im Speicher. Es schreibt weder das Archiv noch auth/* auf die Festplatte.

  • get_cluster_info liest nur deploydata.json, metadata.json und install-config.backup.yaml.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for Appcircle mobile CI/CD platform.

  • An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform

  • A MCP server built for developers enabling Git based project management with project and personal…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/galkremer1/cnv-lab-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server