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

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

Available components

−2 this week 61 Trust /100

Last scanned (55 minutes ago)

Scores higher than 58% of PyPI servers

Category Cloud Infrastructure

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 Security41
  • Malware scan not yet available for this package.Unverified
  • 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 build step with no custom scripting around it. View diagnostics → Pass
  • 4 of 59 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 4 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability69
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4833 tokens (~193/item across 25 items; 25 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 Management65
  • Stability check failed: the tool surface changed between 2.0.0 and 3.5.0: 2 tool removals, 0 breaking changes, 4 additions. See how to fix → Fail
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 26 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
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.

  • 5 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 1.12.0 → 3.5.0 functional
  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 58 to 61.

  • 2 Nov 26 +12
    • Malware scan: unverified → pass ▲ security
  • 1 Nov 26 −15
    • Provenance: unverified → fail ▼ security
    • Malware scan: pass → unverified ▼ security
    • Package version: 3.4.2 → 3.5.0 functional
  • 31 Oct 26 0
    • Provenance: fail → unverified ▼ security
    • Package version: 3.4.1 → 3.4.2 functional
  • 30 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 28 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 26 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
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 5 Nov 2026 · Analysed pypi/vmware-vks@3.5.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

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 16 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-8988-9cw3-xx77 CVE-2026-97687 high 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
GHSA-vxq7-64xx-v4gw CVE-2026-97689 high 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
PYSEC-2026-4175 CVE-2026-97687 none yes
PYSEC-2026-4177 CVE-2026-97689 none yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 59 packages
Packages resolved 59
Stale 4
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 25 exposed · ~4,651 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
target––vCenter in config.yaml; omit for the default.

No output schema declared.

No examples provided.

create_namespace ~269

[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).
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
cpu_limit––MHz. Omit for no limit.
descriptionstring–Free-text label. Omit for none.
memory_limit_mib––MiB. Omit for no limit.
namestringyesNamespace name (lowercase, no spaces).
storage_policystringyesPolicy 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 ~314

[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
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
control_plane_countinteger–1 or 3.
k8s_versionstringyese.g. 'v1.28.4+vmware.1'.
namestringyesCluster name.
namespacestringyesMust already exist (see list_namespaces).
storage_classstring–Storage class.
target––vCenter in config.yaml; omit for the default.
vm_classstringyesNode sizing, e.g. 'best-effort-large'.
worker_countinteger–Worker nodes (>= 1).

No output schema declared.

No examples provided.

delete_namespace ~215

[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
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
namestringyesNamespace 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 ~269

[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
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
forceboolean–Skip the running-workload check (dangerous).
namestringyesCluster name (via list_tkc_clusters).
namespacestringyesNamespace holding it.
target––vCenter in config.yaml; omit for the default.

No output schema declared.

No examples provided.

get_access_info ~249

[READ] Which account this server uses, and whether it holds each tool's vSphere privileges. Use this when a tool fails with a permission error, or before a write, to check what the configured account may do. Asks vCenter about the current session (needs only System.View, so any account can ask about itself). Returns target, account, the privilege states, and for one tool its requires/verdict/meaning; without tool, every tool grouped by verdict. Gotchas: privileges are checked on the root folder only, and a verdict of not_granted_at_root is NOT "no access" — it may be granted on a specific cluster. undetermined means vCenter did not answer; never read it as granted. Kubernetes calls (TKC, VM Service, kubeconfigs) are authorized by the namespace's view/edit/owner permission, which this cannot check, so those tools report undetermined. Namespace writes need Namespaces.Configure.

NameTypeReqDescription
target––vCenter in config.yaml; omit for the default.
tool––One tool name on this server, e.g. "create_namespace". Omit to summarize every tool.

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

NameTypeReqDescription
namestringyesNamespace 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_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).
target––vCenter in config.yaml; omit for the default.

No output schema declared.

No examples provided.

get_supervisor_upgrade_risk ~158

[READ] Check the vCenter 9.1.0/9.1.1 Supervisor pre-upgrade advisory scope. Reads the source vCenter version/build and Supervisor cluster inventory. Returns advisory_applicability, supervisor_presence and next_step. The vLCM/VUM database schema is **unmeasured**: this tool never grants upgrade clearance. Use the official checker in Broadcom KB 455737 or VDT before upgrading an affected environment. No database script is run here.

NameTypeReqDescription
target––vCenter target from config.yaml; omit for the default.
target_versionstring–Planned vCenter version, 9.1.0 or 9.1.1.

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

NameTypeReqDescription
namestringyesCluster name (via list_tkc_clusters).
namespacestringyesNamespace holding it.
target––vCenter in config.yaml; omit for the default.

No output schema declared.

No examples provided.

issue_supervisor_kubeconfig ~250

[WRITE] Credential access: issue 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). For TKC workloads, see issue_tkc_kubeconfig and its vSphere 9.1 limitation before issuing a guest-cluster credential.

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

issue_tkc_kubeconfig ~313

[WRITE] Credential access: issue 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 issue_supervisor_kubeconfig instead for Supervisor-level access. On one reported VCF 9.1 deployment, the guest cluster API rejects this Supervisor JWT with 401. A generated file does not prove guest access; verify it against the guest API before relying on it (issue #27).

NameTypeReqDescription
namestringyesTKC cluster name.
namespacestringyesNamespace 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'.

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

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

NameTypeReqDescription
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 issue_tkc_kubeconfig for access. 'clusters' is a deprecated pre-1.8.0 alias of 'items', removed in 2.0 — read 'items'.

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

NameTypeReqDescription
target––vCenter in config.yaml; omit for the default.

No output schema declared.

No examples provided.

list_vm_service_groups ~177

[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).
target––vCenter in config.yaml; omit for the default.

No output schema declared.

No examples provided.

list_vm_service_network_interfaces ~190

[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).
target––vCenter 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_service_snapshots ~187

[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_service_network_interfaces for a VM's NICs.

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

NameTypeReqDescription
namestringyesCluster name (via list_tkc_clusters).
namespacestringyesNamespace 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_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_limit––New CPU limit in MHz. Omit to keep current.
memory_limit_mib––New memory limit in MiB. Omit to keep current.
namestringyesExisting 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.

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

No output schema declared.

No examples provided.

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
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 61 out of 100 on VerifyMCP. We recorded 16 known advisories against it as of 5 November 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 25 tools: check_vks_compatibility, get_supervisor_upgrade_risk, get_supervisor_status, list_supervisor_storage_policies, list_namespaces, and 20 more. Their descriptions and schemas cost roughly 4,651 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 5 November 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.