nutanix-mcp
nutanix-mcp
Puente HTTP Streamable Multitenant sobre nutanix/ntnx-api-mcp-server — el servidor MCP oficial de la API v4 de Prism Central de Nutanix — construido para que la puerta de enlace WYRE conduit pueda reenviar credenciales de Nutanix por inquilino como cabeceras HTTP.
Pin ascendente: El servidor de Nutanix es una vista previa técnica, anclado aquí en la etiqueta
v0.8(Apache-2.0). Consulte Actualizando el pin ascendente.
Por qué
El servidor ascendente es solo stdio (nutanix-mcp serve-stdio es su único modo de servicio) y lee sus credenciales de Prism Central de variables de entorno al inicio del proceso — monoinquilino por proceso. Nuestra puerta de enlace es multiinquilino: cada solicitud lleva las credenciales de la organización que llama como cabeceras HTTP, y el contenedor del proveedor debe traducir esas cabeceras a algo que el ascendente entienda.
Debido a que el ascendente no tiene un modo HTTP al que hacer proxy, este puente mantiene una sesión de cliente MCP sobre stdio para cada hijo inquilino y la vuelve a servir sobre Streamable HTTP:
Escucha en
:8080conPOST /mcpyGET /health.Protege con 401 cada solicitud
/mcpen las cabeceras de credencialesX-Nutanix-Pc-*(abajo). Las credenciales faltantes o inválidas nunca pasan a las credenciales de entorno — eso sería una fuga entre inquilinos.Lanza perezosamente un hijo
nutanix-mcp serve-stdiopor tupla de credenciales (clave por un hash), con las variables de entornoPC_*del inquilino establecidas, y conecta un cliente MCP a él sobre stdio.Sirve ambas eras de protocolo en
/mcpa través delcreateMcpHandler(factory, { legacy: 'stateless' })del SDK v2 — clientes de apretón de manosinitializede la era 2025 (la puerta de enlace conduit hoy) y clientes modernos de sobre 2026-07-28.tools/listytools/calldelegan a la sesión hija del inquilino.Desaloja hijos inactivos después de 60 minutos (
IDLE_EVICT_MS).
Los nombres de las herramientas pasan sin cambios: las 24 herramientas del ascendente — 20 herramientas {namespace}_execute (aiops, clustermgmt, datapolicies, dataprotection, files, iam, licensing, lifecycle, microseg, monitoring, multidomain, networking, objects, opsmgmt, prism, security, storage, tenancy, vmm, volumes) más 4 herramientas de descubrimiento (listOperations, getOperationSchema, getCodeSample, getOperationPermissions).
Solo lectura en v1 — deliberado
Cada hijo se lanza con READ_ONLY_MODE=true (también el valor predeterminado del ascendente): el ascendente rechaza todas las operaciones que no sean GET antes de que lleguen a Prism Central. v1 de este puente se envía como solo lectura como una decisión de flota deliberada. El soporte de escritura sería un cambio revisado y versionado en credentialsToChildEnv() en src/credentials.ts — no un cambio de configuración.
Contrato de credenciales
La puerta de enlace reenvía estas cabeceras en cada solicitud /mcp; el puente las asigna al entorno del hijo ascendente. La configuración del proveedor de conduit debe coincidir exactamente con esta tabla.
Cabecera | Variable de entorno del hijo | Obligatoria | Notas |
|
| sí | IP o FQDN de Prism Central |
|
| no | Valor predeterminado del ascendente |
|
| con contraseña | Par de autenticación básica |
|
| con nombre de usuario | Par de autenticación básica |
|
| alternativa | Enviado a PC como la cabecera de solicitud |
|
| no |
|
Regla de validez: pcHost presente Y (apiKey presente O username+password presente). Cualquier otra cosa → HTTP 401 con un cuerpo de error JSON-RPC.
READ_ONLY_MODE=true se fuerza adicionalmente en cada hijo (ver arriba).
Artefactos de especificación de API (horneados en tiempo de compilación)
El ascendente construye su superficie de herramientas a partir de artefactos de especificación de API YAML, no de la PC en vivo. nutanix-mcp init los descarga — y sin credenciales de PC se ejecuta en modo latest_release contra la API de espacio de nombres pública developers.nutanix.com (sin acceso a PC requerido; verificado empíricamente: 20 espacios de nombres). La compilación de Docker ejecuta init una vez y hornea los artefactos en la imagen en /opt/nutanix-mcp/artifacts, compartidos como solo lectura por todos los hijos inquilinos. Consecuencias:
tools/listy las herramientas de descubrimiento funcionan sin una PC accesible — solo las llamadas{namespace}_executetocan Prism Central.Las versiones de los artefactos son la última versión pública en el momento de la compilación de la imagen, no las versiones exactas de la PC del inquilino (el modo
pc_compatibledel ascendente necesitaría acceso a PC en vivo al lanzar). Para la superficie de solo lectura v1 esta es la compensación correcta: artefactos compartidos, lanzamientos rápidos de inquilinos.
Configuración
Variable de entorno | Valor predeterminado | Notas |
|
| Puerto de escucha público. |
|
| Directorio ascendente (venv + artefactos). |
|
| Script de consola ascendente que el puente lanza. |
|
| Artefactos de especificación de API YAML horneados. |
|
| Directorio escribible para archivos de registro por proceso del ascendente. |
|
| Tiempo de espera de inquilino inactivo (60 min). |
|
| Espera máxima para que un hijo responda al apretón de manos MCP. |
Desarrollo local
# 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"}}}'O construya la imagen (hornea todo, incluyendo una prueba de humo stdio que falla la compilación si serve-stdio no puede responder 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:devActualizando el pin ascendente
El ascendente está anclado a la etiqueta revisada v0.8 en el Dockerfile (NUTANIX_MCP_REF) — nunca main (guía MCP de la NSA / línea base de seguridad de la flota). Para actualizar:
Revise el diff ascendente entre el pin actual y la nueva etiqueta (superficie de herramientas, manejo de credenciales, semántica de
READ_ONLY_MODE).Cambie
NUTANIX_MCP_REFen elDockerfiley la etiqueta en este README.docker buildlocalmente — las pruebas de humo en tiempo de compilación afirman que el punto de entrada del venv se ejecuta y la superficie de herramientas stdio todavía responde (actualice el recuento de herramientas esperado si los espacios de nombres cambiaron).Entregue como un PR
feat:/fix:para que semantic-release corte una versión.
Licencia
Apache-2.0. El ntnx-api-mcp-server incluido es Apache-2.0 de Nutanix.
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