VMware VKS
PYPI · VMWARE-VKS · SCANNED SEP 20
vSphere with Tanzu (VKS): Namespace and TanzuKubernetesCluster lifecycle. Requires vSphere 8.x+.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security91
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects urllib3 2.3.0, reached via kubernetes > urllib3. A fixed version is available. View diagnostics → Fail
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 5 of 60 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability68
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4516 tokens (~196/item across 23 items; 23 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
- Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 24 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the VMware VKS MCP server?
VMware VKS runs locally as a PyPI package, launched with uvx vmware-vks. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · vmware-vks
claude mcp add vmware-skills-vmware-vks -- uvx vmware-vks
{
"mcpServers": {
"vmware-skills-vmware-vks": {
"command": "uvx",
"args": [
"vmware-vks"
]
}
}
} {
"servers": {
"vmware-skills-vmware-vks": {
"command": "uvx",
"args": [
"vmware-vks"
]
}
}
} codex mcp add vmware-skills-vmware-vks -- uvx vmware-vks
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"vmware-skills-vmware-vks": {
"type": "local",
"command": [
"uvx",
"vmware-vks"
],
"enabled": true
}
}
} openclaw mcp add vmware-skills-vmware-vks --command uvx --arg vmware-vks
mcp_servers:
vmware-skills-vmware-vks:
command: "uvx"
args: ["vmware-vks"] {
"McpServers": {
"vmware-skills-vmware-vks": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"vmware-vks"
]
}
}
} assistant mcp add vmware-skills-vmware-vks -t stdio -c uvx -a vmware-vks
{
"mcpServers": {
"vmware-skills-vmware-vks": {
"command": "uvx",
"args": [
"vmware-vks"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +15
- Tool safety: pass → unverified ▼ security
- Stability: 0.67 → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 1.11.0 → 1.12.0 functional
- Package version: 1.8.11 → 1.11.0 functional
- 19 Sept 26 0
- Schema quality: 167 → 188 ▼ functional
- Package version: 1.10.3 → 1.11.0 functional
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
- Package version: 1.10.2 → 1.10.3 functional
- 15 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 1.10.0 → 1.10.2 functional
- Package version: 1.10.0 → 1.10.1 functional
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- 12 Sept 26 +1
- Package version: 1.9.4 → 1.10.0 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/vmware-vks@1.12.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Vulnerabilities 12 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-2xpw-w6gg-jr37 | CVE-2025-66471 | high | yes | |
| GHSA-38jv-5279-wg99 | CVE-2026-21441 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-48p4-8xcf-vxj5 | CVE-2025-50182 | medium | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N | yes |
| GHSA-gm62-xv2j-4w53 | CVE-2025-66418 | high | yes | |
| GHSA-pq67-6m6q-mj2v | CVE-2025-50181 | medium | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N | yes |
| GHSA-qccp-gfcp-xxvc | CVE-2026-44431 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N | yes |
| PYSEC-2026-141 | CVE-2026-44431 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N | yes |
| PYSEC-2026-1994 | CVE-2025-66471 | none | yes | |
| PYSEC-2026-1996 | CVE-2026-21441 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| PYSEC-2026-1997 | CVE-2025-50182 | medium | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N | yes |
| PYSEC-2026-1998 | CVE-2025-66418 | none | yes | |
| PYSEC-2026-1999 | CVE-2025-50181 | medium | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 60 packages
| Packages resolved | 60 |
|---|---|
| Stale | 5 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
check_vks_compatibility ~109
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
create_namespace ~296
[WRITE] Create a vSphere Namespace on a Supervisor Cluster. Without confirm=True this only previews: it returns blast_radius (the spec that would be applied, and whether the name is already taken) and creates nothing. Show it to the user and get their decision. Do not set confirm=True on your own because the user asked earlier — they have not seen the preview yet. confirm=True returns {action: "created", namespace, status, cluster, blast_radius}; it is refused when the name is taken (use update_namespace) or the existing names could not be read. Confirm with get_namespace afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| cluster_id | string | yes | Supervisor MoRef (from check_vks_compatibility). |
| confirm | boolean | – | False (default) returns the blast radius and changes nothing. True applies it. |
| cpu_limit | – | – | MHz. Omit for no limit. |
| description | string | – | Free-text label. Omit for none. |
| dry_run | – | – | Deprecated alias for confirm; removed in the next minor release. dry_run=False acts, dry_run=True previews. |
| memory_limit_mib | – | – | MiB. Omit for no limit. |
| name | string | yes | Namespace name (lowercase, no spaces). |
| storage_policy | string | yes | Policy ID (from list_supervisor_storage_policies). |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
create_tkc_cluster ~341
[WRITE] Create a TanzuKubernetesCluster in a vSphere Namespace. Without confirm=True this only previews: it returns blast_radius (node counts, VM class, the YAML manifest, and whether the name is taken) and creates nothing. Show it to the user and get their decision. Do not set confirm=True on your own because the user asked earlier — they have not seen the preview yet. confirm=True returns {action: "created", name, namespace, status: "creating", yaml, blast_radius} and provisions in the background — poll get_tkc_cluster until phase is running. Refused when the name is taken or the namespace's clusters could not be read. Call get_tkc_available_versions for k8s_version and list_vm_classes first.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | False (default) returns the blast radius and changes nothing. True applies it. |
| control_plane_count | integer | – | 1 or 3. |
| dry_run | – | – | Deprecated alias for confirm; removed in the next minor release. dry_run=False acts, dry_run=True previews. |
| k8s_version | string | yes | e.g. 'v1.28.4+vmware.1'. |
| name | string | yes | Cluster name. |
| namespace | string | yes | Must already exist (see list_namespaces). |
| storage_class | string | – | Storage class. |
| target | – | – | vCenter in config.yaml; omit for the default. |
| vm_class | string | yes | Node sizing, e.g. 'best-effort-large'. |
| worker_count | integer | – | Worker nodes (>= 1). |
No output schema declared.
No examples provided.
delete_namespace ~265
[WRITE] Delete a vSphere Namespace and everything inside it (irreversible). Without confirm=True this only previews: it returns blast_radius (the namespace, and the TKC clusters, VMs and PVCs inside it, with counts and names) and deletes nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user said "delete" earlier: they have not seen what it destroys yet. confirm=True returns {action: "deleted", namespace, status, blast_radius}. Refused while TKC clusters exist inside (run delete_tkc_cluster on each), and whenever the clusters, VMs or PVCs inside could not be read. Prefer update_namespace to only change quotas.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | False (default) returns the blast radius and changes nothing. True applies it. |
| confirmed | – | – | Deprecated alias for confirm; removed in the next minor release. Acts only together with dry_run=False; confirmed=False previews. |
| dry_run | – | – | Deprecated alias for confirm; removed in the next minor release. dry_run=True previews. |
| name | string | yes | Namespace name to delete (discover via list_namespaces). |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
delete_tkc_cluster ~319
[WRITE] Delete a TKC cluster and all of its nodes (irreversible). Without confirm=True this only previews: it returns blast_radius (control plane and worker node counts per pool, and the running Deployments, StatefulSets and DaemonSets) and deletes nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user said "delete" earlier: they have not seen what it destroys yet. confirm=True returns {action: "deleted", name, namespace, status: "deleting", blast_radius}. Refused while workloads run (drain them, or pass force=True, which skips the workload check entirely) and whenever the node counts or workloads could not be read. Use scale_tkc_cluster instead for fewer nodes. Empty a namespace of TKC clusters before delete_namespace accepts it.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | False (default) returns the blast radius and changes nothing. True applies it. |
| confirmed | – | – | Deprecated alias for confirm; removed in the next minor release. Acts only together with dry_run=False; confirmed=False previews. |
| dry_run | – | – | Deprecated alias for confirm; removed in the next minor release. dry_run=True previews. |
| force | boolean | – | Skip the running-workload check (dangerous). |
| name | string | yes | Cluster name (via list_tkc_clusters). |
| namespace | string | yes | Namespace holding it. |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
get_harbor_info ~136
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
get_namespace ~129
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Namespace name, e.g. 'dev' (discover via list_namespaces). |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
get_supervisor_kubeconfig ~238
[WRITE] Credential access: get a kubeconfig for the Supervisor K8s API. Call only when the user explicitly asks for this kubeconfig; never as a side step. Returns {namespace, kubeconfig} as a YAML string, or {namespace, written_to} when output_path is given. The kubeconfig embeds a Supervisor bearer token (JWT from /wcp/login) that acts as the configured vCenter account until the JWT expires (typically hours; not tied to this process) — always pass output_path so the token never enters agent context, and report only the path. The file is created owner-only (0600). Use get_tkc_kubeconfig instead to reach workloads inside a TKC cluster.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | string | yes | vSphere Namespace to set as the kubeconfig context. |
| output_path | – | – | File to write, e.g. '~/.kube/supervisor.yaml'. Omit to return the kubeconfig inline. Creates parent directories and truncates the file. |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
get_supervisor_status ~166
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| cluster_id | string | yes | Compute cluster MoRef, e.g. 'domain-c1' (wcp_clusters field of check_vks_compatibility). |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
get_tkc_available_versions ~142
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | string | yes | vSphere Namespace used to reach the Supervisor K8s API. |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
get_tkc_cluster ~149
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Cluster name (via list_tkc_clusters). |
| namespace | string | yes | Namespace holding it. |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
get_tkc_kubeconfig ~265
[WRITE] Credential access: get a kubeconfig for one TKC cluster. Call only when the user explicitly asks for this kubeconfig; never as a side step. Returns {cluster, kubeconfig}, or {cluster, written_to} when output_path is given. The kubeconfig embeds a Supervisor bearer token (JWT from /wcp/login) that acts as the configured vCenter account until the JWT expires (typically hours; not tied to this process) — always pass output_path so the token never enters agent context, and report only the path. Nothing in the managed cluster changes, but output_path creates parent directories and truncates the named file (owner-only, 0600), so output_path='~/.kube/config' replaces the user's own kubeconfig. Run list_tkc_clusters first for name and namespace; use get_supervisor_kubeconfig instead for Supervisor-level access.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | TKC cluster name. |
| namespace | string | yes | 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. |
No output schema declared.
No examples provided.
list_namespace_storage_usage ~185
[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'.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | string | yes | Namespace to inspect. |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
list_namespaces ~122
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
list_supervisor_storage_policies ~112
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
list_tkc_clusters ~162
[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'.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | – | – | vSphere Namespace to filter by. Omit to list every one. |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
list_vm_classes ~140
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
list_vm_groups ~176
[READ] List VirtualMachineGroup objects and their bootOrder in a Namespace. VM Service groups (vmoperator.vmware.com CRD, v1alpha4+) via the Supervisor K8s API — the served CRD version is discovered at runtime. Returns the family list envelope: items of {name, namespace, boot_order, member_count} plus returned/total/truncated (walked to completion) and served_version. ``boot_order`` mirrors spec.bootOrder: an ordered list of {members: [{kind, name}], power_on_delay?}. Older Supervisors without v1alpha4 return a teaching error naming the required version.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | string | yes | vSphere Namespace to list VM groups in (via list_namespaces). |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
list_vm_network_interfaces ~189
[READ] List the network interfaces (multi-NIC) of one VirtualMachine. Reads spec.network.interfaces[] off a single VM Service VirtualMachine (vmoperator.vmware.com) via the Supervisor K8s API; the served CRD version is discovered at runtime. Returns the family list envelope: items of {name, network_name, network_kind, network_api_version} plus returned/total/truncated and vm_name/served_version. A VM with no network block returns an empty list, not an error. Run list_namespaces for the namespace; the VM name comes from your own VM inventory in that namespace.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | string | yes | vSphere Namespace the VM lives in (via list_namespaces). |
| target | – | – | vCenter in config.yaml; omit for the default. |
| vm_name | string | yes | Name of the VirtualMachine to read interfaces from. |
No output schema declared.
No examples provided.
list_vm_snapshots ~185
[READ] List VirtualMachineSnapshot objects in a vSphere Namespace. VM Service snapshots (vmoperator.vmware.com CRD, new at v1alpha5) via the Supervisor K8s API — the served CRD version is discovered at runtime, not hardcoded. Returns the family list envelope: items of {name, namespace, vm_name, created, ready} plus returned/total/truncated (walked to completion, so truncated is always false) and served_version. If the Supervisor is older than v1alpha5 the error names the required version. Run list_namespaces first for the namespace; use list_vm_network_interfaces for a VM's NICs.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace | string | yes | vSphere Namespace to list snapshots in (via list_namespaces). |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
scale_tkc_cluster ~180
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Cluster name (via list_tkc_clusters). |
| namespace | string | yes | Namespace holding it. |
| pool_name | – | – | Node pool (machineDeployment). Omit for the first; other pools are always preserved. |
| target | – | – | vCenter in config.yaml; omit for the default. |
| worker_count | integer | yes | Desired total, integer >= 1 (below 1 is rejected). |
No output schema declared.
No examples provided.
update_namespace ~179
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| cpu_limit | – | – | New CPU limit in MHz. Omit to keep current. |
| memory_limit_mib | – | – | New memory limit in MiB. Omit to keep current. |
| name | string | yes | Existing namespace name (discover via list_namespaces). |
| storage_policy | – | – | New storage policy ID. Omit to keep current. |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
upgrade_tkc_cluster ~149
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| k8s_version | string | yes | Target version from get_tkc_available_versions. |
| name | string | yes | Cluster name (via list_tkc_clusters). |
| namespace | string | yes | Namespace holding it. |
| target | – | – | vCenter in config.yaml; omit for the default. |
No output schema declared.
No examples provided.
What is the VMware VKS MCP server?
VMware VKS is an MCP server listed in the public MCP registry as io.github.vmware-skills/vmware-vks. vSphere with Tanzu (VKS): Namespace and TanzuKubernetesCluster lifecycle. Requires vSphere 8.x+. This page covers its PyPI package (vmware-vks).
Is the VMware VKS MCP server safe to use?
VMware VKS scores 77 out of 100 on VerifyMCP. We recorded 12 known advisories against it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the VMware VKS MCP server expose?
VMware VKS exposes 23 tools: check_vks_compatibility, get_supervisor_status, list_supervisor_storage_policies, list_namespaces, get_namespace, and 18 more. Their descriptions and schemas cost roughly 4,334 tokens of context every time the server is loaded.
Is the VMware VKS MCP server still maintained?
VMware VKS is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the VMware VKS MCP server under?
VMware VKS declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.