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 if this vCenter supports VKS (requires vSphere 8.x+). Returns: compatible (bool), vcenter_version, wcp_enabled_clusters, hint. Call this first before any VKS operations. |
| get_supervisor_statusA | [READ] Get the status of one Supervisor Cluster (vSphere with Tanzu control plane). Returns cluster_id, config_status (RUNNING = healthy, CONFIGURING, ERROR, REMOVING), kubernetes_status (READY / WARNING / ERROR), api_server_cluster_endpoint (Supervisor K8s API address), kubernetes_version (from the software/clusters endpoint; null plus a kubernetes_version_hint if that call fails), and network_provider. Read-only. Run check_vks_compatibility first to discover cluster IDs; use this to verify a Supervisor is healthy before creating namespaces or TKC clusters on it. Args: cluster_id: Compute cluster MoRef ID, e.g. 'domain-c1' (from the wcp_clusters field of check_vks_compatibility). target: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
| list_supervisor_storage_policiesA | [READ] List vCenter storage policies (the policies assigned to Supervisor Namespaces). Returns a list of {policy (policy ID), name (display name), description}. Returns all policies in one call — no pagination. Read-only, no side effects. Call this before create_namespace or update_namespace to obtain a valid storage_policy value (pass the 'policy' ID). For PVC-level usage inside a namespace, use list_namespace_storage_usage instead. Args: target: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
| list_namespacesA | [READ] List all vSphere Namespaces on the target vCenter with their configuration status. Returns a list of objects: namespace (name), config_status (RUNNING = healthy, CONFIGURING = being set up, REMOVING = being deleted, ERROR = failed), and description. Returns all namespaces in one call — no pagination. Read-only, no side effects. Use this to discover namespace names, then call get_namespace for full details of one, or update_namespace / delete_namespace to change it. Args: target: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
| get_namespaceA | [READ] Get detailed information for a single vSphere Namespace. Args: name: Namespace name (e.g. 'dev', 'production'). target: vCenter target name (uses default if not specified). |
| create_namespaceA | [WRITE] Create a vSphere Namespace on a Supervisor Cluster. IMPORTANT: dry_run=True by default — set dry_run=False to actually create. Args: name: Namespace name (lowercase, no spaces). cluster_id: Supervisor cluster MoRef (use get_supervisor_status to find). storage_policy: Storage policy name (use list_supervisor_storage_policies). cpu_limit: CPU limit in MHz (optional). memory_limit_mib: Memory limit in MiB (optional). dry_run: Preview without creating (default: True). |
| update_namespaceA | [WRITE] Update resource quotas or storage policy of an existing vSphere Namespace. Only the fields you provide are patched; omitted fields keep their current values. If no field is provided, returns status "no_changes" without calling the API. On success returns {namespace, status: "updated"}. Applies immediately (no dry_run); not destructive. Audited to ~/.vmware/audit.db (SQLite) and ~/.vmware-vks/audit.log (JSON Lines). Use create_namespace for new namespaces; use list_supervisor_storage_policies to find valid storage_policy values. 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 name. Omit to keep current. target: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
| delete_namespaceA | [WRITE] Delete a vSphere Namespace. SAFETY: Rejects if TKC clusters exist inside. Delete TKC clusters first. IMPORTANT: dry_run=True by default — set dry_run=False AND confirmed=True to delete. Args: name: Namespace name to delete. confirmed: Must be True to proceed (safety gate). dry_run: Preview without deleting (default: True). |
| list_vm_classesA | [READ] List VM classes available for sizing TKC cluster nodes. Returns a list of {id (class name, e.g. 'best-effort-large'), cpu_count (vCPUs), memory_mb (RAM in MB), gpu_count (vGPU + dynamic DirectPath I/O devices; 0 if none)}. Returns all classes in one call — no pagination. Read-only, no side effects. Call this before create_tkc_cluster and pass the chosen 'id' as its vm_class argument; 'guaranteed-' classes reserve resources, 'best-effort-' classes do not. Args: target: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
| list_tkc_clustersA | [READ] List TanzuKubernetesCluster (TKC) clusters. Args: namespace: vSphere Namespace to filter by (lists all if not specified). target: vCenter target name. Returns: total count and list of clusters with status and K8s version. |
| get_tkc_clusterA | [READ] Get detailed info for a single TKC cluster. Args: name: TKC cluster name. namespace: vSphere Namespace containing the cluster. target: vCenter target name. |
| get_tkc_available_versionsA | [READ] List Kubernetes versions (TanzuKubernetesReleases) available on the Supervisor. Returns {versions: [{name (release name), version (e.g. 'v1.28.4+vmware.1')}]} sorted newest first. If the TanzuKubernetesRelease API is unavailable on this Supervisor, returns an empty versions list with error and hint fields instead of raising. Read-only, no side effects. 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: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
| create_tkc_clusterA | [WRITE] Create a TanzuKubernetesCluster. IMPORTANT: dry_run=True by default — returns YAML plan. Set dry_run=False to apply. Workflow: call get_tkc_available_versions first to find valid k8s_version, call list_vm_classes to find valid vm_class. Args: name: Cluster name. namespace: vSphere Namespace. k8s_version: K8s version (e.g. 'v1.28.4+vmware.1'). vm_class: VM class for nodes (e.g. 'best-effort-large'). control_plane_count: 1 or 3. worker_count: Number of worker nodes (>= 1). storage_class: Storage class name. dry_run: Return YAML plan without applying (default: True). |
| scale_tkc_clusterA | [WRITE] Scale the worker node count of an existing TanzuKubernetesCluster (TKC). Asynchronous: patches the cluster spec and returns immediately with status "scaling" — node provisioning or removal continues in the background; poll get_tkc_cluster to watch progress. Scales workers only (control plane is unchanged); use upgrade_tkc_cluster to change the K8s version instead. Not destructive, but reducing worker_count drains the removed nodes. Audited to ~/.vmware/audit.db (SQLite) and ~/.vmware-vks/audit.log (JSON Lines). Args: name: TKC cluster name (discover via list_tkc_clusters). namespace: vSphere Namespace containing the cluster. worker_count: Desired total worker node count, integer >= 1 (values below 1 are rejected with an error). pool_name: Node pool (machineDeployment) to scale. Omit to scale the first existing pool. Other pools are always preserved. target: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
| upgrade_tkc_clusterA | [WRITE] Upgrade TKC cluster to a new K8s version. Args: name: TKC cluster name. namespace: vSphere Namespace. k8s_version: Target K8s version (use get_tkc_available_versions to list). |
| delete_tkc_clusterA | [WRITE] Delete a TKC cluster. SAFETY: Rejects if Deployments/StatefulSets are running (unless force=True). IMPORTANT: dry_run=True by default — set dry_run=False AND confirmed=True to delete. Args: name: TKC cluster name. namespace: vSphere Namespace. confirmed: Must be True to proceed (safety gate). dry_run: Preview without deleting (default: True). force: Skip workload check (dangerous). |
| get_supervisor_kubeconfigA | [READ] Get kubeconfig for the Supervisor K8s API endpoint. Security: The returned kubeconfig contains a short-lived session token. Treat the raw output as a credential — do not log or share. Args: namespace: vSphere Namespace (context for the kubeconfig). target: vCenter target name. Returns: kubeconfig YAML string. |
| get_tkc_kubeconfigA | [READ] Get kubeconfig for a TKC cluster. Security: The returned kubeconfig contains a short-lived session token. Prefer writing to file (output_path) over returning inline to reduce credential exposure in agent context. Args: name: TKC cluster name. namespace: vSphere Namespace. output_path: Write to file if provided (e.g. '~/.kube/my-cluster.yaml'). Returns kubeconfig string if not specified. |
| get_harbor_infoA | [READ] Get status of the embedded Harbor container registry on the Supervisor. Returns {registries: [...]} where each entry has id (registry ID), cluster (Supervisor cluster MoRef), version, url (UI access URL), status (registry health, e.g. RUNNING), and storage_used_mb. Status and storage come from a per-registry detail call and are null if that call fails. If Harbor is not enabled on this Supervisor, returns {error, hint} instead of raising. Read-only, no side effects. Use this to check registry health or find the registry URL before pushing images; it does not list repositories or images. Args: target: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
| list_namespace_storage_usageA | [READ] List PersistentVolumeClaims and storage usage inside one vSphere Namespace. Connects to the Supervisor K8s API and returns {namespace, pvc_count, pvcs: [{name, namespace, status (Bound / Pending / Lost), capacity (e.g. '10Gi'), storage_class}]}. Returns all PVCs — no pagination. Read-only, no side effects. Use list_namespaces to find namespace names; use list_supervisor_storage_policies for policy-level (not PVC-level) information. Args: namespace: vSphere Namespace name to inspect. target: Name of a vCenter entry in ~/.vmware-vks/config.yaml. Omit to use the default target defined in that file. |
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