Skip to main content
Glama
galkremer1
by galkremer1

cnv-lab-mcp

GLPI에서 랩 하드웨어를 예약하고, Jenkins에서 CNV 클러스터 배포를 트리거하며, ACM spoke 클러스터를 가져오기 위한 MCP 서버입니다. 인스턴스 URL, 하드웨어 이름, 토큰은 하드코딩되어 있지 않습니다. 모든 값은 도구 인자 또는 환경 변수에서 가져옵니다.

Cursor에 추가

Add to Cursor

Related MCP server: DCI MCP Server

사전 요구 사항

  • Node.js >= 20

  • GLPI 개인 API 토큰(My SettingsAPI tokens). 인스턴스에서 요구하는 경우 GLPI_APP_TOKEN은 선택 사항입니다.

  • Jenkins API 토큰(UserConfigureAPI Token)과 짧은 사용자 이름. 이메일이 아닙니다. user@example.com은 401을 반환하고 user는 정상 동작합니다.

  • GLPI 프로필은 대상 엔티티에 0이 아닌 reservation 권한이 있어야 합니다.

  • Jenkins 계정은 트리거할 작업에 대해 Job/Build 및 Job/Read 권한이 필요합니다.

내부 TLS / NODE_EXTRA_CA_CERTS

Node의 fetch(undici)는 curl처럼 OS/키체인 CA 저장소를 사용하지 않습니다. curl은 작동하는데 MCP 서버가 fetch failed를 보고하면 NODE_EXTRA_CA_CERTS를 내부 CA 번들로 설정하고 Cursor를 다시 시작하세요:

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

TLS 오류는 일반 네트워크 오류와 별도로 보고되므로 원인을 쉽게 파악할 수 있습니다.

구성

.env.example을 복사하고 다음을 설정하세요:

변수

필수

참고

GLPI_BASE_URL

/apirest.php 포함 또는 미포함

GLPI_USER_TOKEN

개인 API 토큰

GLPI_APP_TOKEN

아니요

인스턴스에서 요구하는 경우에만

JENKINS_BASE_URL

Jenkins 루트 URL

JENKINS_USER

짧은 사용자 이름(이메일 아님)

JENKINS_API_TOKEN

API 토큰

mcp.json 항목 예시(비밀 값은 환경 변수 보간 사용):

{
  "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}"
      }
    }
  }
}

패키지가 npm에 게시될 때까지 args를 이 저장소로 지정하세요:

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

도구

예약:

  • list_reservable_items — GLPI 예약 가능 자산 탐색

  • find_available_cluster — 요구 사항(구조화 + 자유 텍스트 주석)을 매칭하고 가장 빠른 여유 슬롯 기준으로 순위 지정. 예약하지 않습니다.

  • check_availability — 단일 항목의 예약 + 공백 기간

  • reserve_cluster — 시간 창 예약. 항상 세션의 users_id를 설정합니다.

  • cancel_reservation — 예약 해제

Jenkins:

  • trigger_jenkins_job — 일반 트리거. start_atdelay=NNNsec이 됩니다.

  • get_build_status — 큐/빌드 + 콘솔 꼬리

  • abort_build — 빌드 중지

클러스터 접근:

  • get_cluster_info*-data.zip의 비민감 메타데이터 및 콘솔/API URL

  • get_cluster_kubeconfigauth/kubeconfig + auth/kubeadmin-password를 메모리에만 보관. 클러스터 관리자 자격 증명. 채팅에 다시 출력하지 마세요.

ACM:

  • import_spoke_cluster — ManagedCluster + KlusterletAddonConfig, import 매니페스트를 spoke에 적용, 조인 폴링

  • get_managed_cluster_status — 허브 측 조인/사용 가능 조건

시나리오(예약 전 확인):

  • list_scenarios

  • plan_scenario — 클러스터/시간 창/매개변수 제안, 예약하지 않음

  • execute_scenario — 계획에서 예약 + 트리거

기본 제공 시나리오는 src/scenarios/catalog.json에 있으며 PR로 확장할 수 있습니다: basic-bm-cnv, acm-hub-and-spoke, sriov-cnv-cluster.

개발

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

실제 인스턴스에 대한 수동 스모크 테스트(CI에서 실행되지 않음):

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

보안

  • .env는 gitignore에 포함됩니다. 예시는 명백히 가짜 플레이스홀더를 사용합니다.

  • CI는 모든 push/PR에서 gitleaks를 실행합니다.

  • 클라이언트 오류는 토큰을 삭제하고 Authorization / user_token 값을 절대 기록하지 않습니다.

  • get_cluster_kubeconfig는 zip을 Buffer로 다운로드하고 JSZip으로 메모리에서 추출합니다. 아카이브나 auth/*를 디스크에 쓰지 않습니다.

  • get_cluster_infodeploydata.json, metadata.json, 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