This is a community-maintained open-source project and is not affiliated with, endorsed by, or sponsored by VMware, Inc. or Broadcom Inc. "VMware" and "vSphere" are trademarks of Broadcom Inc.
Author: Wei Zhou, VMware by Broadcom — wei-wz.zhou@broadcom.com
If you discover a security vulnerability, please report it privately:
- Email: wei-wz.zhou@broadcom.com
- GitHub: Open a private security advisory
Do not open a public GitHub issue for security vulnerabilities.
- Passwords are stored exclusively in
~/.vmware-vks/.env(never inconfig.yaml, never in code) .envfile permissions are verified at startup (chmod 600required)- No credentials are logged, echoed, or included in audit entries
- Each vCenter target uses a separate environment variable:
VMWARE_<TARGET_NAME_UPPER>_PASSWORD
All write operations pass through multiple safety layers:
@vmware_tooldecorator — mandatory on every MCP tool; provides pre-checks, audit logging, data sanitization, and timeout controldry_run=Truedefault — all write operations default to dry-run mode; the caller must explicitly setdry_run=Falseto executeconfirmed=Truerequired — namespace and TKC delete operations requireconfirmed=True; without it, the operation returns a preview only- Namespace deletion guard — namespace delete is rejected if TKC clusters still exist within the namespace
- TKC deletion guard — TKC delete checks for running workloads before proceeding
- Audit logging — every operation (read and write) is logged to
~/.vmware/audit.db(SQLite WAL) with timestamp, user, target, operation, parameters, and result - Policy engine —
~/.vmware/rules.yamlcan deny operations by pattern, enforce maintenance windows, and set risk-level thresholds
get_supervisor_kubeconfigandget_tkc_kubeconfigreturn short-lived vCenter session tokens, not persistent credentials- Kubeconfig content is never written to disk by MCP tools — it is returned in-memory to the calling agent
- Session tokens expire according to vCenter SSO policy (default 300 seconds)
- TLS certificate verification is enabled by default
disableSslCertValidation: trueexists solely for vCenter/Supervisor instances using self-signed certificates in isolated lab/home environments- In production, always use CA-signed certificates with full TLS verification
vmware-policyis the only transitive dependency auto-installed; it provides the@vmware_tooldecorator and audit logging- All other dependencies are standard Python packages (pyVmomi, Click, Rich, python-dotenv, kubernetes)
- No post-install scripts or background services are started during installation
- All vSphere-sourced content (namespace names, TKC names, cluster status messages) is processed through
_sanitize() - Sanitization truncates to 500 characters and strips C0/C1 control characters
- Output is wrapped in boundary markers when consumed by LLM agents
This project is scanned with Bandit before every release, targeting 0 Medium+ issues:
uvx bandit -r vmware_vks/ mcp_server/| Version | Supported |
|---|---|
| 1.5.x | Yes |
| < 1.5 | No |