Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

VMware VKS

PYPI · VMWARE-VKS · SCANNED SEP 20

vSphere with Tanzu (VKS): Namespace and TanzuKubernetesCluster lifecycle. Requires vSphere 8.x+.

Available components

+3 this week 77 Trust /100
Trust breakdown (7 categories)

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
Install

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

# add to Claude Code
claude mcp add vmware-skills-vmware-vks -- uvx vmware-vks
// .cursor/mcp.json
{
  "mcpServers": {
    "vmware-skills-vmware-vks": {
      "command": "uvx",
      "args": [
        "vmware-vks"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "vmware-skills-vmware-vks": {
      "command": "uvx",
      "args": [
        "vmware-vks"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add vmware-skills-vmware-vks -- uvx vmware-vks
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vmware-skills-vmware-vks": {
      "type": "local",
      "command": [
        "uvx",
        "vmware-vks"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add vmware-skills-vmware-vks --command uvx --arg vmware-vks
# ~/.hermes/config.yaml
mcp_servers:
  vmware-skills-vmware-vks:
    command: "uvx"
    args: ["vmware-vks"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "vmware-skills-vmware-vks": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "vmware-vks"
      ]
    }
  }
}
# add to Vellum
assistant mcp add vmware-skills-vmware-vks -t stdio -c uvx -a vmware-vks
// mcp.json
{
  "mcpServers": {
    "vmware-skills-vmware-vks": {
      "command": "uvx",
      "args": [
        "vmware-vks"
      ]
    }
  }
}
Changelog

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
Diagnostics

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 →

MCP tools · 23 exposed · ~4,334 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
targetvCenter 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.

NameTypeReqDescription
cluster_idstringyesSupervisor MoRef (from check_vks_compatibility).
confirmbooleanFalse (default) returns the blast radius and changes nothing. True applies it.
cpu_limitMHz. Omit for no limit.
descriptionstringFree-text label. Omit for none.
dry_runDeprecated alias for confirm; removed in the next minor release. dry_run=False acts, dry_run=True previews.
memory_limit_mibMiB. Omit for no limit.
namestringyesNamespace name (lowercase, no spaces).
storage_policystringyesPolicy ID (from list_supervisor_storage_policies).
targetvCenter 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.

NameTypeReqDescription
confirmbooleanFalse (default) returns the blast radius and changes nothing. True applies it.
control_plane_countinteger1 or 3.
dry_runDeprecated alias for confirm; removed in the next minor release. dry_run=False acts, dry_run=True previews.
k8s_versionstringyese.g. 'v1.28.4+vmware.1'.
namestringyesCluster name.
namespacestringyesMust already exist (see list_namespaces).
storage_classstringStorage class.
targetvCenter in config.yaml; omit for the default.
vm_classstringyesNode sizing, e.g. 'best-effort-large'.
worker_countintegerWorker 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.

NameTypeReqDescription
confirmbooleanFalse (default) returns the blast radius and changes nothing. True applies it.
confirmedDeprecated alias for confirm; removed in the next minor release. Acts only together with dry_run=False; confirmed=False previews.
dry_runDeprecated alias for confirm; removed in the next minor release. dry_run=True previews.
namestringyesNamespace name to delete (discover via list_namespaces).
targetvCenter 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.

NameTypeReqDescription
confirmbooleanFalse (default) returns the blast radius and changes nothing. True applies it.
confirmedDeprecated alias for confirm; removed in the next minor release. Acts only together with dry_run=False; confirmed=False previews.
dry_runDeprecated alias for confirm; removed in the next minor release. dry_run=True previews.
forcebooleanSkip the running-workload check (dangerous).
namestringyesCluster name (via list_tkc_clusters).
namespacestringyesNamespace holding it.
targetvCenter 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.

NameTypeReqDescription
targetvCenter 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.

NameTypeReqDescription
namestringyesNamespace name, e.g. 'dev' (discover via list_namespaces).
targetvCenter 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.

NameTypeReqDescription
namespacestringyesvSphere Namespace to set as the kubeconfig context.
output_pathFile to write, e.g. '~/.kube/supervisor.yaml'. Omit to return the kubeconfig inline. Creates parent directories and truncates the file.
targetvCenter 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.

NameTypeReqDescription
cluster_idstringyesCompute cluster MoRef, e.g. 'domain-c1' (wcp_clusters field of check_vks_compatibility).
targetvCenter 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.

NameTypeReqDescription
namespacestringyesvSphere Namespace used to reach the Supervisor K8s API.
targetvCenter 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.

NameTypeReqDescription
namestringyesCluster name (via list_tkc_clusters).
namespacestringyesNamespace holding it.
targetvCenter 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.

NameTypeReqDescription
namestringyesTKC cluster name.
namespacestringyesNamespace holding it.
output_pathFile to write, e.g. '~/.kube/my.yaml'. Omit to return the kubeconfig inline.
targetvCenter 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'.

NameTypeReqDescription
namespacestringyesNamespace to inspect.
targetvCenter 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.

NameTypeReqDescription
targetvCenter 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.

NameTypeReqDescription
targetvCenter 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'.

NameTypeReqDescription
namespacevSphere Namespace to filter by. Omit to list every one.
targetvCenter 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.

NameTypeReqDescription
targetvCenter 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.

NameTypeReqDescription
namespacestringyesvSphere Namespace to list VM groups in (via list_namespaces).
targetvCenter 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.

NameTypeReqDescription
namespacestringyesvSphere Namespace the VM lives in (via list_namespaces).
targetvCenter in config.yaml; omit for the default.
vm_namestringyesName 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.

NameTypeReqDescription
namespacestringyesvSphere Namespace to list snapshots in (via list_namespaces).
targetvCenter 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.

NameTypeReqDescription
namestringyesCluster name (via list_tkc_clusters).
namespacestringyesNamespace holding it.
pool_nameNode pool (machineDeployment). Omit for the first; other pools are always preserved.
targetvCenter in config.yaml; omit for the default.
worker_countintegeryesDesired 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.

NameTypeReqDescription
cpu_limitNew CPU limit in MHz. Omit to keep current.
memory_limit_mibNew memory limit in MiB. Omit to keep current.
namestringyesExisting namespace name (discover via list_namespaces).
storage_policyNew storage policy ID. Omit to keep current.
targetvCenter 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.

NameTypeReqDescription
k8s_versionstringyesTarget version from get_tkc_available_versions.
namestringyesCluster name (via list_tkc_clusters).
namespacestringyesNamespace holding it.
targetvCenter in config.yaml; omit for the default.

No output schema declared.

No examples provided.

Common questions

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.