nutanix-mcp
nutanix-mcp
マルチテナント対応のStreamable HTTPブリッジ — nutanix/ntnx-api-mcp-server(Nutanix公式のPrism Central v4 API MCPサーバー)上に構築。WYRE conduitゲートウェイがテナントごとのNutanix認証情報をHTTPヘッダーとして転送できるようにします。
アップストリーム固定: Nutanixのサーバーはテクニカルプレビューであり、ここではタグ
v0.8(Apache-2.0)に固定されています。アップストリーム固定の更新を参照。
なぜ
アップストリームサーバーはstdioのみ(nutanix-mcp serve-stdio が唯一のサーバーモード)であり、Prism Centralの認証情報をプロセス起動時に環境変数から読み取ります — プロセスごとにシングルテナントです。当ゲートウェイはマルチテナントです。各リクエストは呼び出し元の組織の認証情報をHTTPヘッダーとして運び、ベンダーコンテナはそれらのヘッダーをアップストリームが理解できるものに変換する必要があります。
アップストリームにはプロキシ先のHTTPモードがないため、このブリッジは各テナント子プロセスに対してstdio経由のMCPクライアントセッションを保持し、それをStreamable HTTP経由で再提供します。
:8080でリッスンし、POST /mcpとGET /healthを処理します。すべての
/mcpリクエストをX-Nutanix-Pc-*認証情報ヘッダーで401ゲートします(以下参照)。認証情報がない、または無効な場合、環境認証情報にフォールスルーすることはありません — それはテナント間の漏洩になります。認証情報タプルごとに(ハッシュでキー付け)1つの
nutanix-mcp serve-stdio子プロセスを遅延生成し、テナントのPC_*環境変数を設定し、stdio経由でMCPクライアントを接続します。v2 SDKの
createMcpHandler(factory, { legacy: 'stateless' })を使用して、/mcpで両方のプロトコル時代を提供します — 2025年代のinitializeハンドシェイククライアント(現在のconduitゲートウェイ)と、最新の2026-07-28エンベロープクライアント。tools/listとtools/callはテナントの子セッションに委任します。アイドル状態の子プロセスを60分後に削除します(
IDLE_EVICT_MS)。
ツール名はそのまま通過します。アップストリームの24のツール — 20の {namespace}_execute ツール(aiops, clustermgmt, datapolicies, dataprotection, files, iam, licensing, lifecycle, microseg, monitoring, multidomain, networking, objects, opsmgmt, prism, security, storage, tenancy, vmm, volumes)に加えて、4つのディスカバリツール(listOperations, getOperationSchema, getCodeSample, getOperationPermissions)。
Related MCP server: nutanix-mcp
v1では読み取り専用 — 意図的
すべての子プロセスは READ_ONLY_MODE=true で生成されます(アップストリームのデフォルトでもあります)。アップストリームは、Prism Centralに到達する前にすべての非GET操作を拒否します。このブリッジのv1は、意図的なフリート決定として読み取り専用で出荷されます。書き込みサポートは、src/credentials.ts の credentialsToChildEnv() に対するレビュー済みのバージョン管理された変更となります — 設定の切り替えではありません。
認証情報契約
ゲートウェイはすべての /mcp リクエストでこれらのヘッダーを転送します。ブリッジはそれらをアップストリーム子プロセスの環境にマッピングします。conduitのベンダー設定はこの表と完全に一致している必要があります。
ヘッダー | 子環境変数 | 必須 | 備考 |
|
| はい | Prism CentralのIPまたはFQDN |
|
| いいえ | アップストリームのデフォルト |
|
| パスワードと一緒 | Basic認証ペア |
|
| ユーザー名と一緒 | Basic認証ペア |
|
| 代替 | PCに |
|
| いいえ |
|
有効性ルール: pcHost が存在し、かつ(apiKey が存在するか、username+password が存在する)。それ以外 → HTTP 401 とJSON-RPCエラーボディ。
READ_ONLY_MODE=true はすべての子プロセスに追加で強制されます(上記参照)。
API仕様アーティファクト(ビルド時に組み込み)
アップストリームは、ライブPCからではなく、YAML API仕様アーティファクトからツールサーフェスを構築します。nutanix-mcp init がそれらをダウンロードします — そしてPC認証情報なしで、公開 developers.nutanix.com 名前空間APIに対して latest_release モードで実行されます(PCアクセス不要。経験的に確認済み: 20の名前空間)。Dockerビルドは init を1回実行し、アーティファクトを /opt/nutanix-mcp/artifacts にイメージに組み込み、すべてのテナント子プロセスで読み取り専用で共有します。結果:
tools/listとディスカバリツールは到達可能なPCがなくても動作します —{namespace}_execute呼び出しのみがPrism Centralにアクセスします。アーティファクトのバージョンは、イメージビルド時点の最新の公開リリースであり、テナントPCの正確なバージョンではありません(アップストリームの
pc_compatibleモードでは、生成時にライブPCアクセスが必要になります)。読み取り専用のv1サーフェスでは、これは適切なトレードオフです: 共有アーティファクト、高速なテナント生成。
設定
環境変数 | デフォルト | 備考 |
|
| 公開リスンポート。 |
|
| アップストリームチェックアウト(venv + アーティファクト)。 |
|
| ブリッジが生成するアップストリームコンソールスクリプト。 |
|
| 組み込みのYAML API仕様アーティファクト。 |
|
| アップストリームのプロセスごとのログファイル用書き込み可能ディレクトリ。 |
|
| アイドルテナントタイムアウト(60分)。 |
|
| 子プロセスがMCPハンドシェイクに応答する最大待機時間。 |
ローカル開発
# 1. Get the upstream at the pinned tag with a venv + artifacts
git clone --branch v0.8 --depth 1 https://github.com/nutanix/ntnx-api-mcp-server ../ntnx-api-mcp-server
cd ../ntnx-api-mcp-server
uv venv .venv && uv pip install .
ARTIFACTS_DIR=$PWD/artifacts .venv/bin/nutanix-mcp init # no PC creds needed
cd -
# 2. Build and run the bridge against it
npm ci && npm run build && npm test
NUTANIX_MCP_DIR=../ntnx-api-mcp-server node dist/index.js
# 3. Smoke it
curl -s localhost:8080/health
curl -s localhost:8080/mcp -X POST \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-H 'X-Nutanix-Pc-Host: pc.example.com' -H 'X-Nutanix-Pc-Api-Key: fake' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"dev","version":"0"}}}'またはイメージをビルド(すべてを組み込み、stdioスモークテストも含まれ、serve-stdio が tools/list に応答できない場合はビルドが失敗します):
docker build --platform linux/amd64 -t ghcr.io/wyre-technology/nutanix-mcp:dev .
docker run --rm -p 8080:8080 ghcr.io/wyre-technology/nutanix-mcp:devアップストリーム固定の更新
アップストリームは Dockerfile 内のレビュー済みタグ v0.8(NUTANIX_MCP_REF)に固定されています — main は使用しません(NSA MCPガイダンス / フリートセキュリティベースライン)。更新するには:
現在の固定と新しいタグの間のアップストリームの差分をレビューします(ツールサーフェス、認証情報処理、
READ_ONLY_MODEのセマンティクス)。DockerfileのNUTANIX_MCP_REFとこのREADMEのタグを変更します。ローカルで
docker buildを実行します — ビルド時のスモークテストでvenvエントリポイントが実行され、stdioツールサーフェスがまだ応答することを確認します(名前空間が変更された場合は期待されるツール数を更新します)。feat:/fix:PRとしてランディングし、semantic-releaseがバージョンをカットするようにします。
ライセンス
Apache-2.0。バンドルされている ntnx-api-mcp-server はNutanixによるApache-2.0です。
This server cannot be deployed
Maintenance
Related MCP Connectors
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Tenant-scoped control plane over the TeleQuick platform's full API surface
Unified gateway exposing 150+ tools across all NexGenData MCP servers via one endpoint.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMultitenant Streamable HTTP wrapper for SentinelOne's purple-mcp. Enables MSPs to expose SentinelOne threat detection and response capabilities to AI assistants across multiple tenants.Apache 2.0
- AlicenseAqualityDmaintenanceMCP server for Nutanix Prism Central v4 REST API, enabling AI agents to list and inspect VMs, control VM power state, list clusters, read alerts, and list subnets.8MIT
- AlicenseNot gradedqualityDmaintenanceBridges stdio Model Context Protocol (MCP) servers to MCP Streamable HTTP behind a single gateway, enabling multi-tenant, multi-user deployment with per-tenant environment variables via HTTP headers.MIT
- AlicenseNot gradedqualityCmaintenanceExposes Proxmox VE hosts as MCP tools for inventory, status, and VM/container management, running as a standalone Streamable HTTP service.Apache 2.0