MCP server for managing Nutanix infrastructure, including VM creation, image management, and cluster operations
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling guidance. list_images has no input parameters documented. create_image and create_vm lack descriptions for several parameters (e.g., image_type enum values, memory constraints). No output schemas documented for any tool. Error handling returns generic error dicts without recovery guidance. Tool names follow verb_noun convention (positive), but descriptions are minimal (avg ~50 chars, below 194-char baseline). No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels.
Create a new image in the Nutanix cluster
Create a new VM in the Nutanix cluster
List all images available in the Nutanix cluster.
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., image_id, vm_id, task_reference). Responses appear to be raw dicts with error fields, but success structure is unclear.
Parameter descriptions incomplete or missing. create_image 'image_type' param lacks enum values (DISK_IMAGE, ISO_IMAGE, etc.). create_vm 'memory_size_gb' description mentions minimum (0.064 GB) but no maximum. No description for 'num_sockets' or 'num_cores_per_socket' constraints.
Error handling returns generic error dicts without recovery guidance. E.g., 'No response from API' or 'Failed to list images: {str(e)}' gives LLM no actionable next step. Should include 'Try again in 30s' or 'Check NUTANIX_PRISM_CENTRAL_URL is reachable'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No tool annotations despite clear risk levels. create_image and create_vm are WRITE operations (destructive) but lack destructiveHint annotation. list_images is READ_ONLY but lacks readOnlyHint. Agents cannot distinguish safe from risky tools.
Pagination not implemented. list_images hardcodes _limit=50 with no offset/cursor support or total count return. Large clusters may have >50 images; agent cannot iterate.