MCP server for managing vSphere with Tanzu (VKS) — Supervisor and Namespace lifecycle, TanzuKubernetesCluster management, and kubeconfig retrieval
The server defines 23 tools with moderate consistency in naming and description. Tool names follow verb_noun convention (check_*, get_*, list_*, create_*, delete_*, update_*, scale_*, upgrade_*), which is strong. All tools have descriptions (10 - 200 chars range, mostly 80 - 150). Input schemas are visible and include type declarations. However, there are systematic gaps: (1) parameter descriptions are minimal (1-2 lines), lacking detail on format constraints, valid ranges, or dependencies; (2) no output schemas are documented anywhere in the visible code, forcing LLMs to infer result structure; (3) error handling guidance is absent from tool descriptions, no indication of what errors are retryable, user-fixable, or fatal; (4) no enumeration of allowed values for multi-choice parameters (e.g., storage_policy accepts a string with no enum constraint, inviting hallucinated values); (5) the confirm parameter pattern on write operations is good (gates destructive changes), but the preview/dry-run behavior is not described in the descriptions themselves, only in the code comments. Tool composition is strong (single-responsibility per tool, good chaining through target/namespace/cluster_name parameters), but lack of output documentation undermines downstream tool discovery. Security posture is solid (stdio only, no credentials in params, audit logging mentioned in code), but this is not a definition-quality criterion. The rubric baseline for 550+ production tools averages 194 chars for descriptions and 72 chars for param annotations; this server is ~120 chars for descriptions and ~40 chars for param annotations, suggesting descriptions are present but terse.
Check vSphere Kubernetes Service compatibility and pre-flight requirements
Create a new vSphere Namespace (gated write operation, preview available via confirm=False)
Create a TanzuKubernetesCluster (gated write operation, preview available via confirm=False)
Delete a vSphere Namespace (gated write operation, rejects if TKC clusters exist inside)
Delete a TanzuKubernetesCluster (gated write operation)
Get Harbor registry information for image storage and management
No output schemas documented for any tool. LLMs cannot infer result structure and must guess field names, types, and nested objects. This breaks tool composition and forces redundant discovery calls.
Free-form string parameters accept no enum constraints. E.g., storage_policy, version, and VM class selections are unvalidated strings, inviting hallucinated values. LLMs have no way to discover valid options without an error.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | <=2025-11-25 | v2 |
Get details of a specific vSphere Namespace
Get kubeconfig for the Supervisor cluster
Get the status of a Supervisor cluster
Get available Kubernetes versions for TanzuKubernetesCluster upgrades
Get details of a specific TanzuKubernetesCluster
Get kubeconfig for a TanzuKubernetesCluster
List storage usage information for a namespace
List all vSphere Namespaces on a Supervisor cluster
List storage policies available on the Supervisor cluster
List all TanzuKubernetesCluster objects in a namespace
List available VM classes on the Supervisor cluster
List VM groups available on the Supervisor cluster (VM Service feature)
List network interfaces for VMs in a namespace (VM Service feature)
List snapshots for VMs in a namespace (VM Service feature)
Scale a TanzuKubernetesCluster to a specified worker node count
Update a vSphere Namespace configuration
Upgrade a TanzuKubernetesCluster to a newer Kubernetes version
List tools lack pagination parameters (limit, offset, next_cursor) and no total count in responses. Per pattern:paginated-result, list tools must support pagination to avoid context window exhaustion when results are large.
Parameter descriptions are terse (avg ~40 chars vs baseline 72 chars). They lack format constraints, valid ranges, and dependencies. E.g., worker_count is an integer with no min/max; confirm is boolean with no explanation of preview vs apply semantics in the description text itself.
Error handling guidance absent from tool descriptions. No indication of retryable vs fatal errors, or what to do if a resource is not found. E.g., delete_namespace rejects if TKC clusters exist, but the description does not guide the LLM on recovery (delete clusters first?). Per pattern:recovery-guide, errors must carry actionable next steps.
Tools returning credentials or sensitive data (e.g., get_supervisor_kubeconfig, get_tkc_kubeconfig) have no schema documentation for encoding or format. Kubeconfig may be returned as plaintext YAML, Base64, or JSON, the description does not specify. Ambiguity can leak credentials if LLMs attempt to parse or forward the response.
update_namespace parameter schema incomplete. Description ('Update a vSphere Namespace configuration') is vague, what configuration fields are updatable? Storage quota? Network policy? Permissions? Schema only shows target and namespace, no indication of what can be changed.
Tools do not document idempotence semantics. E.g., is create_namespace idempotent (safe to retry if it already exists) or does it error? Does upgrade_tkc_cluster error if already at target version or silently succeed? Agents need this to know whether retries are safe per pattern:idempotent-operation.