cnv-lab-mcp
cnv-lab-mcp
GLPIでラボ用ハードウェアを予約し、JenkinsでCNVクラスターデプロイをトリガーし、ACMスポーククラスターをインポートするためのMCPサーバーです。インスタンスURL、ハードウェア名、トークンは一切ハードコードされておらず、すべてツール引数または環境変数から取得されます。
Cursorに追加
Related MCP server: DCI MCP Server
前提条件
Node.js >= 20
GLPIの個人用APIトークン(
My Settings→API tokens)。インスタンスが要求する場合のみ、オプションのGLPI_APP_TOKEN。JenkinsのAPIトークン(
User→Configure→API 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.pemTLSエラーは一般的なネットワーク障害とは別に報告されるため、原因が不明瞭になることはありません。
設定
.env.exampleをコピーして設定してください:
変数 | 必須 | 備考 |
| はい |
|
| はい | 個人用APIトークン |
| いいえ | インスタンスが要求する場合のみ |
| はい | JenkinsのルートURL |
| はい | 短いユーザー名(メールアドレスではない) |
| はい | 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_atはdelay=NNNsecになりますget_build_status— キュー/ビルド+コンソール末尾を取得しますabort_build— ビルドを停止します
クラスターアクセス:
get_cluster_info—*-data.zipから、機密情報を含まないメタデータとコンソール/APIのURLを取得しますget_cluster_kubeconfig—auth/kubeconfig+auth/kubeadmin-passwordをメモリ上のみで取得します。クラスター管理者の認証情報のため、チャットにそのまま出力しないでください。
ACM:
import_spoke_cluster— ManagedCluster+KlusterletAddonConfigを作成し、インポートマニフェストをスポークに適用して、参加(join)をポーリングしますget_managed_cluster_status— ハブ側の参加(join)/利用可能(available)状態を取得します
シナリオ(予約前の確認あり):
list_scenariosplan_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_infoはdeploydata.json、metadata.json、install-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