vmware-vks
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VMWARE_VKS_CONFIG | Yes | Path to the configuration YAML file (e.g., ~/.vmware-vks/config.yaml). This file should contain the vCenter host and username. | |
| VMWARE_MY_VCENTER_PASSWORD | Yes | The vCenter password environment variable. According to the documentation, passwords must be provided via environment variables rather than the configuration file. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_vks_compatibilityA | [READ] Check whether this vCenter supports VKS (requires vSphere 8.x+). Returns compatible (bool), vcenter_version, wcp_enabled_clusters and wcp_clusters ({cluster, status}). Start here: those cluster MoRefs are the cluster_id for get_supervisor_status and create_namespace. Only reports vCenter-level support — a listed cluster may still be CONFIGURING. Args: target: vCenter in config.yaml; omit for the default. |
| get_supervisor_status | [READ] Get the health of one Supervisor Cluster (vSphere with Tanzu control plane). Returns cluster_id, config_status (RUNNING = healthy, else CONFIGURING / ERROR / REMOVING), kubernetes_status (READY / WARNING / ERROR), api_server_cluster_endpoint, kubernetes_version (null plus kubernetes_version_hint if unavailable), and network_provider. Run check_vks_compatibility first for cluster IDs; use this to confirm a Supervisor is healthy before create_namespace or create_tkc_cluster. Args: cluster_id: Compute cluster MoRef, e.g. 'domain-c1' (wcp_clusters field of check_vks_compatibility). target: vCenter in config.yaml; omit for the default. |
| list_supervisor_storage_policiesA | [READ] List vCenter storage policies assignable to Supervisor Namespaces. Returns the list envelope: items of {policy (ID), name, description} plus returned/total/truncated — one call returns them all, so truncated is always false. Call this before create_namespace or update_namespace and pass the 'policy' ID as their storage_policy. For PVC-level usage use list_namespace_storage_usage instead. Args: target: vCenter in config.yaml; omit for the default. |
| list_namespaces | [READ] List all vSphere Namespaces on the target vCenter with their status. Returns the list envelope: items of {namespace, config_status (RUNNING = healthy, CONFIGURING, REMOVING, ERROR), description} plus returned/total/truncated — one call returns them all, so truncated is always false. Start here, then call get_namespace for detail, list_tkc_clusters for what runs inside, or update_namespace / delete_namespace to change one. Args: target: vCenter in config.yaml; omit for the default. |
| get_namespaceA | [READ] Get detailed configuration for a single vSphere Namespace. Returns one raw vCenter namespace object, not the list envelope: config_status, description, storage_specs, quotas. Use list_namespaces first for the name; follow with list_namespace_storage_usage for PVC usage or list_tkc_clusters for the clusters inside. Point-in-time only — a CONFIGURING namespace may not have quotas applied. Args: name: Namespace name, e.g. 'dev' (discover via list_namespaces). target: vCenter in config.yaml; omit for the default. |
| create_namespace | [WRITE] Create a vSphere Namespace on a Supervisor Cluster. Returns {namespace, status: "created", cluster}, or {dry_run, spec} — a dry run unless dry_run=False. Use update_namespace instead when it already exists; confirm with get_namespace afterwards. Args: name: Namespace name (lowercase, no spaces). cluster_id: Supervisor MoRef (from check_vks_compatibility). storage_policy: Policy ID (from list_supervisor_storage_policies). cpu_limit: MHz. Omit for no limit. memory_limit_mib: MiB. Omit for no limit. description: Free-text label. Omit for none. dry_run: Preview only (default: True). target: vCenter in config.yaml; omit for the default. |
| update_namespaceA | [WRITE] Update resource quotas or storage policy of an existing vSphere Namespace. Only the fields you pass are patched; omitting all of them returns status "no_changes" without an API call, otherwise {namespace, status: "updated"}. Applies immediately — no dry run, no undo. Use this rather than create_namespace when the namespace exists; valid storage_policy values come from list_supervisor_storage_policies. Args: name: Existing namespace name (discover via list_namespaces). cpu_limit: New CPU limit in MHz. Omit to keep current. memory_limit_mib: New memory limit in MiB. Omit to keep current. storage_policy: New storage policy ID. Omit to keep current. target: vCenter in config.yaml; omit for the default. |
| delete_namespace | [WRITE] Delete a vSphere Namespace and everything inside it. Returns {namespace, status: "deleted"}, or a preview by default. SAFETY: refused while TKC clusters exist inside — run list_tkc_clusters to see them, then delete_tkc_cluster on each. A dry run unless you pass dry_run=False AND confirmed=True. Irreversible; prefer update_namespace to only change quotas. Args: name: Namespace name to delete (discover via list_namespaces). confirmed: Must be True to proceed. dry_run: Preview only (default: True). target: vCenter in config.yaml; omit for the default. |
| list_vm_classes | [READ] List VM classes available for sizing TKC cluster nodes. Returns the list envelope: items of {id (e.g. 'best-effort-large'), cpu_count, memory_mb, gpu_count (vGPU + DirectPath I/O; 0 if none)} plus returned/total/truncated — one call returns them all, so truncated is always false. Call this before create_tkc_cluster and pass the chosen 'id' as its vm_class; 'guaranteed-' classes reserve resources, 'best-effort-' do not. Args: target: vCenter in config.yaml; omit for the default. |
| list_tkc_clusters | [READ] List TanzuKubernetesCluster (TKC) clusters, optionally in one namespace. Returns the family list envelope: {items: [{name, namespace, phase, k8s_version}], returned, limit, total, truncated, hint}. The Supervisor list is walked to completion, so truncated is always False. Start here, then call get_tkc_cluster for full detail or get_tkc_kubeconfig for access. 'clusters' is a deprecated pre-1.8.0 alias of 'items', removed in 2.0 — read 'items'. Args: namespace: vSphere Namespace to filter by. Omit to list every one. target: vCenter in config.yaml; omit for the default. |
| get_tkc_cluster | [READ] Get detailed status for a single TKC cluster. Returns one object, not the list envelope: name, namespace, phase, k8s_version, control_plane_replicas, worker_replicas, conditions, infrastructure_ready, control_plane_ready. Run list_tkc_clusters first — a TKC name is only unique within one namespace. Poll this after create_tkc_cluster, scale_tkc_cluster or upgrade_tkc_cluster to watch an async change land. Args: name: Cluster name (via list_tkc_clusters). namespace: Namespace holding it. target: vCenter in config.yaml; omit for the default. |
| get_tkc_available_versionsA | [READ] List Kubernetes versions (TanzuKubernetesReleases) available on the Supervisor. Returns {versions: [{name, version, e.g. 'v1.28.4+vmware.1'}]}, newest first. If the TanzuKubernetesRelease API is unavailable it returns an empty versions list with error and hint rather than raising. Call this before create_tkc_cluster or upgrade_tkc_cluster to pick a valid k8s_version. Args: namespace: vSphere Namespace used to reach the Supervisor K8s API. target: vCenter in config.yaml; omit for the default. |
| create_tkc_clusterA | [WRITE] Create a TanzuKubernetesCluster in a vSphere Namespace. A dry run unless you pass dry_run=False; it then returns {name, namespace, status: "creating", yaml} and provisions in the background — poll get_tkc_cluster until phase is running. Call get_tkc_available_versions for k8s_version and list_vm_classes for vm_class first. Args: name: Cluster name. namespace: Must already exist (see list_namespaces). k8s_version: e.g. 'v1.28.4+vmware.1'. vm_class: Node sizing, e.g. 'best-effort-large'. control_plane_count: 1 or 3. worker_count: Worker nodes (>= 1). storage_class: Storage class. dry_run: YAML plan only (default: True). target: vCenter in config.yaml; omit for the default. |
| scale_tkc_clusterA | [WRITE] Scale the worker node count of an existing TanzuKubernetesCluster (TKC). Asynchronous: returns {name, namespace, pool, worker_count, status: "scaling"} immediately — poll get_tkc_cluster to watch nodes appear or drain. Scales workers only; use upgrade_tkc_cluster instead for the K8s version. Not destructive, but lowering worker_count drains removed nodes. Args: name: Cluster name (via list_tkc_clusters). namespace: Namespace holding it. worker_count: Desired total, integer >= 1 (below 1 is rejected). pool_name: Node pool (machineDeployment). Omit for the first; other pools are always preserved. target: vCenter in config.yaml; omit for the default. |
| upgrade_tkc_clusterA | [WRITE] Upgrade a TKC cluster to a new Kubernetes version. Returns {name, namespace, new_version, status: "upgrading"}. Asynchronous and irreversible — Kubernetes cannot be downgraded, so poll get_tkc_cluster until phase is running. There is no dry run. Use this only for the K8s version; prefer scale_tkc_cluster for node counts. Args: name: Cluster name (via list_tkc_clusters). namespace: Namespace holding it. k8s_version: Target version from get_tkc_available_versions. target: vCenter in config.yaml; omit for the default. |
| delete_tkc_cluster | [WRITE] Delete a TKC cluster and all of its nodes. Returns {name, namespace, status: "deleting"}, or a preview by default. SAFETY: refused while Deployments/StatefulSets run, unless force=True. A dry run unless you pass dry_run=False AND confirmed=True. Irreversible — use scale_tkc_cluster instead for fewer nodes. Empty a namespace of TKC clusters before delete_namespace accepts it. Args: name: Cluster name (via list_tkc_clusters). namespace: Namespace holding it. confirmed: Must be True to proceed. dry_run: Preview only (default: True). force: Skip the workload check (dangerous). target: vCenter in config.yaml; omit for the default. |
| get_supervisor_kubeconfigA | [READ] Get a kubeconfig for the Supervisor K8s API endpoint. Returns {namespace, kubeconfig} as a YAML string. Use this for Supervisor-level access; use get_tkc_kubeconfig instead to reach workloads inside a TKC cluster. Security: it carries a short-lived session token — treat it as a credential, do not log or share. Args: namespace: vSphere Namespace to set as the kubeconfig context. target: vCenter in config.yaml; omit for the default. |
| get_tkc_kubeconfigA | [READ] Get a kubeconfig for one TKC cluster. Returns {cluster, kubeconfig}, or {cluster, written_to} when output_path is given. Run list_tkc_clusters first for name and namespace; use get_supervisor_kubeconfig instead for Supervisor-level access. Security: it carries a short-lived session token — always prefer output_path so the credential never enters agent context. Args: name: TKC cluster name. namespace: Namespace holding it. output_path: File to write, e.g. '~/.kube/my.yaml'. Omit to return the kubeconfig inline. target: vCenter in config.yaml; omit for the default. |
| get_harbor_infoA | [READ] Get status of the embedded Harbor container registry on the Supervisor. Returns {registries: [{id, cluster (Supervisor MoRef), version, url, status, storage_used_mb}]}; status and storage come from a detail call and are null if it fails. If Harbor is not enabled it returns {error, hint} rather than raising. Use it to check registry health or find the push URL — it does not list repositories or images. Run check_vks_compatibility first if the Supervisor may be down. Args: target: vCenter in config.yaml; omit for the default. |
| list_namespace_storage_usageA | [READ] List PersistentVolumeClaims and storage usage inside one vSphere Namespace. Via the Supervisor K8s API. Returns the family list envelope: {namespace, items: [{name, namespace, status (Bound / Pending / Lost), capacity ('10Gi'), storage_class}], returned, limit, total, truncated, hint}. Every PVC comes back in one call, so truncated is always False. Run list_namespaces first for the namespace; use list_supervisor_storage_policies instead for policy-level rather than PVC-level information. 'pvcs' and 'pvc_count' are deprecated pre-1.8.0 aliases of 'items' and 'returned', removed in 2.0 — read 'items'. Args: namespace: Namespace to inspect. target: vCenter in config.yaml; omit for the default. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- 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/zw008/VMware-VKS'
If you have feedback or need assistance with the MCP directory API, please join our Discord server