nutanix-mcp
nutanix-mcp
Мультитенантный мост Streamable HTTP поверх nutanix/ntnx-api-mcp-server — официального MCP-сервера Nutanix для API Prism Central v4 — создан для того, чтобы шлюз WYRE conduit мог передавать учетные данные Nutanix для каждого арендатора в виде HTTP-заголовков.
Фиксация исходной версии: Сервер Nutanix является технической предварительной версией, зафиксированной здесь на теге
v0.8(Apache-2.0). См. Обновление фиксации исходной версии.
Зачем
Вышестоящий сервер работает только через stdio (nutanix-mcp serve-stdio — единственный режим обслуживания) и считывает учетные данные Prism Central из переменных окружения при запуске процесса — один арендатор на процесс. Наш шлюз является мультитенантным: каждый запрос содержит учетные данные вызывающей организации в виде HTTP-заголовков, и контейнер поставщика должен преобразовать эти заголовки в формат, понятный вышестоящему серверу.
Поскольку у вышестоящего сервера нет HTTP-режима для проксирования, этот мост удерживает сессию MCP-клиента через stdio для каждого дочернего процесса арендатора и повторно обслуживает её через Streamable HTTP:
Слушает порт
:8080сPOST /mcpиGET /health.Каждый запрос
/mcpпроверяется на наличие заголовков учетных данныхX-Nutanix-Pc-*и при их отсутствии возвращает 401. Отсутствующие/недействительные учетные данные никогда не передаются в окружение — это привело бы к утечке между арендаторами.Лениво порождает один дочерний процесс
nutanix-mcp serve-stdioна каждый набор учетных данных (ключом является хеш), устанавливая соответствующие переменные окруженияPC_*, и подключает к нему MCP-клиента через stdio.Обслуживает обе эры протокола на
/mcpчерезcreateMcpHandler(factory, { legacy: 'stateless' })из SDK v2 — клиенты с рукопожатиемinitialize2025-го года (текущий шлюз 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 (также значение по умолчанию вышестоящего сервера): вышестоящий сервер отклоняет все операции, не являющиеся GET, до того, как они достигнут Prism Central. Версия v1 этого моста поставляется в режиме только чтения как осознанное решение для всего парка. Поддержка записи будет представлять собой проверенное, версионированное изменение credentialsToChildEnv() в src/credentials.ts, а не переключение конфигурации.
Контракт учетных данных
Шлюз передает следующие заголовки в каждом запросе /mcp; мост отображает их в окружение дочернего процесса вышестоящего сервера. Конфигурация поставщика conduit должна точно соответствовать этой таблице.
Заголовок | Переменная окружения дочернего процесса | Обязательно | Примечания |
|
| да | IP-адрес или FQDN Prism Central |
|
| нет | По умолчанию вышестоящего сервера |
|
| с паролем | Пара для базовой аутентификации |
|
| с именем пользователя | Пара для базовой аутентификации |
|
| альтернатива | Отправляется в PC как заголовок запроса |
|
| нет |
|
Правило валидности: присутствует pcHost И (присутствует apiKey ИЛИ присутствуют username+password). В противном случае → HTTP 401 с телом ошибки JSON-RPC.
READ_ONLY_MODE=true дополнительно принудительно устанавливается для каждого дочернего процесса (см. выше).
Артефакты спецификации API (встроены во время сборки)
Вышестоящий сервер строит свою поверхность инструментов на основе YAML-артефактов спецификации API, а не на живом PC. nutanix-mcp init загружает их — и без учетных данных PC он работает в режиме latest_release через публичный API пространства имен developers.nutanix.com (доступ к PC не требуется; подтверждено эмпирически: 20 пространств имен). Сборка Docker запускает init один раз и встраивает артефакты в образ по пути /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Обновление фиксации исходной версии
Исходная версия зафиксирована на проверенном теге v0.8 в Dockerfile (NUTANIX_MCP_REF) — никогда не main (рекомендации NSA по MCP / базовый уровень безопасности парка). Чтобы обновить:
Проверьте различия исходной версии между текущей фиксацией и новым тегом (поверхность инструментов, обработка учетных данных, семантика
READ_ONLY_MODE).Измените
NUTANIX_MCP_REFвDockerfileи тег в этом README.Выполните
docker buildлокально — тесты на этапе сборки проверяют, что точка входа venv запускается и поверхность инструментов stdio всё ещё отвечает (обновите ожидаемое количество инструментов, если изменились пространства имен).Оформите как PR с типом
feat:/fix:, чтобы semantic-release создал версию.
Лицензия
Apache-2.0. Включенный ntnx-api-mcp-server распространяется под лицензией Apache-2.0 от Nutanix.
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