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)。
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 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 Connectors
Multi-tenant FastMCP server for Charles Schwab brokerage data, monetized via DPYC Tollbooth
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
A paid remote MCP for Skybridge, built to return verdicts, receipts, usage logs, and audit-ready JSO
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/wyre-technology/nutanix-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server