Skip to main content
Glama
galkremer1
by galkremer1

cnv-lab-mcp

GLPIでラボ用ハードウェアを予約し、JenkinsでCNVクラスターデプロイをトリガーし、ACMスポーククラスターをインポートするための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プロファイルは、対象エンティティに対してゼロ以外のreservation権限を持っている必要があります。

  • Jenkinsアカウントには、トリガーするジョブに対するJob/Build権限とJob/Read権限が必要です。

内部TLS / NODE_EXTRA_CA_CERTS

Node.jsの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 — 1つのアイテムの予約と空き時間を確認します

  • 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/kubeconfigauth/kubeadmin-passwordをメモリ上のみで取得します。クラスター管理者の認証情報のため、チャットにそのまま出力しないでください。

ACM:

  • import_spoke_cluster — ManagedCluster+KlusterletAddonConfigを作成し、インポートマニフェストをスポークに適用して、参加(join)をポーリングします

  • get_managed_cluster_status — ハブ側の参加(join)/利用可能(available)状態を取得します

シナリオ(予約前の確認あり):

  • list_scenarios

  • plan_scenario — クラスター/時間枠/パラメーターを提案し、予約は行いません

  • execute_scenario — プランに基づいて予約+トリガーを実行します

組み込みシナリオはsrc/scenarios/catalog.jsonにあり、PRで拡張できます:basic-bm-cnvacm-hub-and-spokesriov-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.jsonmetadata.jsoninstall-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