cnv-lab-mcp
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
Related MCP server: DCI MCP Server
Voraussetzungen
Node.js >= 20
Ein persönlicher GLPI-API-Token (
My Settings→API tokens). OptionalGLPI_APP_TOKEN, falls die Instanz einen benötigt.Ein Jenkins-API-Token (
User→Configure→API Token) sowie den Kurz-Benutzernamen, nicht eine E-Mail-Adresse.user@example.comliefert 401;userfunktioniert.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.pemTLS-Fehler werden getrennt von allgemeinen Netzwerkfehlern gemeldet, damit das nicht rätselhaft bleibt.
Konfiguration
Kopieren Sie .env.example und setzen Sie:
Variable | Erforderlich | Hinweise |
| ja | Mit oder ohne |
| ja | Persönlicher API-Token |
| nein | Nur falls die Instanz einen benötigt |
| ja | Jenkins-Root-URL |
| ja | Kurz-Benutzername (nicht E-Mail) |
| 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 durchsuchenfind_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 Elementreserve_cluster— ein Zeitfenster buchen; setztusers_idimmer aus der Sitzungcancel_reservation— eine Buchung freigeben
Jenkins:
trigger_jenkins_job— generischer Trigger;start_atwird zudelay=NNNsecget_build_status— Warteschlange/Build + Konsolenausgabeabort_build— einen Build stoppen
Clusterzugriff:
get_cluster_info— nicht vertrauliche Metadaten und Konsolen-/API-URLs aus*-data.zipget_cluster_kubeconfig—auth/kubeconfig+auth/kubeadmin-passwordnur 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 abfragenget_managed_cluster_status— Hub-seitige Join-/Verfügbarkeits-Bedingungen
Szenarien (Bestätigung vor der Buchung):
list_scenariosplan_scenario— Cluster/Fenster/Parameter vorschlagen, nichts buchenexecute_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 buildManueller 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.tsSicherheit
.envist 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_kubeconfiglädt die Zip-Datei in einen Buffer und extrahiert sie mit JSZip im Speicher. Es schreibt weder das Archiv nochauth/*auf die Festplatte.get_cluster_infoliest nurdeploydata.json,metadata.jsonundinstall-config.backup.yaml.
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityDmaintenanceMCP server for automating VLP lab VM operations, exposing VM management tools to AI agents like Cursor and Claude Code.
- AlicenseAqualityBmaintenanceMCP server for DCI API enabling AI models to extract and analyze DCI jobs, components, and topics, with integrations for Google Drive, Jira, GitHub, and Red Hat support cases.71Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with QUADS infrastructure systems via API, enabling resource management and automation through LLM applications.MIT
- FlicenseAqualityDmaintenanceAn MCP server for OpenShift Baremetal IPI cluster provisioning, allowing users to generate and validate install-config.yaml files, test BMC connectivity, validate networks, and manage cluster installation lifecycle.24
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…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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