VMware Pilot
Multi-step workflow orchestration for VMware MCP skills with approval gates and rollback.
Que pouvez-vous faire avec VMware Pilot ?
- The server will not start without a token, refuses Host/Origin values outside
--public-name, and checks - Behind a TLS-terminating reverse proxy on the same machine use `--transport http --host 127.0.0.1
- Behind a load balancer or gateway on another machine, keep
--transport https(a self-signed certificate is - Send
traceparentorX-Request-IDwith each request to have it stored on the audit row; - The audit log records each caller as
token:<name>. Calls naming different targets run in parallel; calls that - Everyone who can reach the endpoint acts with this server's account. Tokens identify callers; they grant
- Several people or roles on one endpoint: run
vmware-audit roles enableonce, then give each token a role (vmware-audit token create NAME --role reader, or a role inroles.yamlnaming tools and targets; vmware-policy ≥ 1.24.0). A role limits what t...
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
vmware-pilotclaude mcp add vmware-pilot -- uvx vmware-pilot==2.4.0 mcp
{
"mcpServers": {
"vmware-pilot": {
"command": "uvx",
"args": [
"vmware-pilot==2.4.0",
"mcp"
]
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
VMware Pilot
Author: Wei Zhou, VMware by Broadcom — wei-wz.zhou@broadcom.com This is a community-driven project by a VMware engineer, not an official VMware product. For official VMware developer tools see developer.broadcom.com.
English | 中文
Multi-step workflow orchestration for VMware MCP skills — state machine, approval gates, audit trail.
Companion skills handle everything else:
Skill Scope Install vmware-aiops VM lifecycle, deployment, guest ops, cluster uv tool install vmware-aiopsvmware-monitor Read-only: inventory, health, alarms, events uv tool install vmware-monitorvmware-storage Datastores, iSCSI, vSAN management uv tool install vmware-storagevmware-vks Tanzu Namespaces, TKC cluster lifecycle uv tool install vmware-vksvmware-nsx NSX networking: segments, gateways, NAT uv tool install vmware-nsx-mgmtvmware-nsx-security DFW firewall rules, security groups uv tool install vmware-nsx-securityvmware-aria Aria Ops: metrics, alerts, capacity uv tool install vmware-ariavmware-avi AVI load balancing, pool management, AKO K8s ops uv tool install vmware-avi
Install
uv tool install vmware-pilot
vmware-pilot mcp # start the MCP server (stdio)
Offline / Air-Gapped Install (from source)
This project uses the modern PEP 517 build system (hatchling), so there is no
setup.py by design — that is expected, not a missing file. If you cloned the
source and hit ERROR: File "setup.py" or "setup.cfg" not found ... editable mode
currently requires a setuptools-based build, your pip is older than 21.3 and
cannot do an editable (-e) install with a non-setuptools backend. Editable
mode is a developer convenience, not needed to run the tool — do one of:
# From the source tree — a normal (non-editable) install builds a wheel:
pip install . # NOT pip install -e .
# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .
For a truly air-gapped host, build the wheels on a connected machine and copy them over — the target then needs no network:
# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist # → dist/*.whl (or: uv build, for just this package)
# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-pilot
MCP Tools (13 — 4 read, 9 write)
| Tool | Description |
|---|---|
get_skill_catalog | List all available skills and tools for workflow design |
list_workflows | List built-in and custom templates |
review_workflow | Sanity-check a planned workflow before execution |
design_workflow | Natural language goal → draft workflow |
update_draft | Edit draft workflow steps |
confirm_draft | Finalize draft → ready to execute |
create_workflow_from_template | Create and save a workflow from a template (not a dry run), returns workflow_id |
create_workflow | Create custom workflow from step list (refused if a destructive step has no approval gate before it) |
run_workflow | Execute workflow, pauses at approval gates |
get_workflow_status | Query state + diff report + audit log |
approve | Human approval, continue execution. Refused while steps before the gate are not_executed, until acknowledge_not_executed=True says you ran them |
rollback | Explicit, best-effort undo of steps pilot recorded as succeeded — never automatic. Previews (blast_radius) unless confirm=True |
cancel_workflow | Cancel a workflow — move it to the terminal CANCELLED state. Previews (blast_radius) unless confirm=True |
Built-in Templates (15)
n is the number of VMs (or drift items); ranges depend on which optional parameters are set.
clone_and_test needs snapshot_name (the snapshot to clone from), resizes staging while it is
powered off, and has 8 steps when change_spec is a guest command (an extra gate before it runs
in staging). investigate_alert's approvals are synthesis checkpoints; its steps are all reads.
See skills/vmware-pilot/references/templates.md for parameters and steps.
| Template | Steps | Approval | Skills Used |
|---|---|---|---|
clone_and_test | 7-8 | Yes | aiops, monitor |
incident_response | 4 | Yes | monitor, aiops |
investigate_alert | 4 (8 with deep_dive) | Yes | monitor, aria |
plan_and_approve | 3 | Yes | aiops |
compliance_scan | 1-3 | No | monitor, aria |
network_segment_setup | 3-6 | Yes | nsx, nsx-security |
vks_cluster_deploy | 5 | Yes | vks |
rolling_restart | 2+3n | Yes | aiops, monitor |
capacity_expansion | 5 | Yes | aria, aiops, monitor |
disaster_recovery | 5 | Yes | aiops, monitor, nsx |
patch_deployment | 1+3n | Yes | aiops, monitor |
storage_expansion | 6 | Yes | storage |
baseline_capture | 1-5 | No | monitor, nsx, storage |
baseline_audit | 1-5 | No | monitor, nsx, storage, aria |
baseline_remediate | 3+n | Yes | varies |
Upgrading to 2.0
2.0 renames one MCP tool: plan_workflow → create_workflow_from_template. It always created and saved a
workflow from a template (it is a write, not a dry run); the new name says so and sets it apart from
create_workflow, which saves your own step list. Parameters and results are unchanged, and so are the CLI
commands. The skill catalog also follows vmware-vks's renames (get_supervisor_kubeconfig →
issue_supervisor_kubeconfig, get_tkc_kubeconfig → issue_tkc_kubeconfig). Workflows saved with the old
names are translated when loaded. If an agent prompt, script or ~/.vmware/rules.yaml names plan_workflow,
update it. Requires vmware-policy ≥ 1.19.0. Details: RELEASE_NOTES.md.
MCP Configuration
{
"mcpServers": {
"vmware-pilot": {
"command": "vmware-pilot",
"args": ["mcp"]
}
}
}
Fallback:
{"command": "uvx", "args": ["--from", "vmware-pilot", "vmware-pilot-mcp"]}still works, butuvxre-resolves against PyPI on every start and fails behind a TLS-inspecting corporate proxy (invalid peer certificate: UnknownIssuer). The installed entry point above touches the network zero times; setUV_NATIVE_TLS=trueif you must useuvx.
Pilot runs the steps itself: --dispatch
By default pilot executes nothing: run_workflow returns each step in pending_dispatch and your agent performs it.
Add --dispatch (or set VMWARE_PILOT_DISPATCH=stdio) and pilot runs each step itself, in that skill's own MCP
server (vmware-<skill>-mcp, which must be installed), so the skill's policy rules, confirmation gate and audit
apply as usual. Nothing after an approval gate runs before approve, and workflows reach completed.
{"mcpServers": {"vmware-pilot": {"command": "vmware-pilot", "args": ["mcp", "--dispatch"]}}}
stdio only: pilot refuses to start with --dispatch and --transport https/http (the skill servers it starts would
have no caller identity, so roles could not apply). A step that takes longer than VMWARE_PILOT_DISPATCH_TIMEOUT
seconds (default 1800) is recorded interrupted — its effect is unknown — and rollback waits for you to check it.
run_workflow and approve take as long as the steps they run: set your MCP client's tool timeout above your
longest step. If a call does time out, Pilot carries on and answers nothing else until the step ends; then
get_workflow_status shows the outcome. Never perform those steps yourself.
Remote access (HTTPS) and limiting tools
By default vmware-pilot mcp speaks stdio to one local client and offers every tool. Two options change that
(vmware-policy ≥ 1.21.0).
Serve over HTTPS so clients on other machines can connect. Every caller needs a bearer token:
vmware-audit token create alice # prints the token once; give it to alice
vmware-audit token list # names only
vmware-audit token revoke alice # refused from its next request, no restart
vmware-pilot mcp --transport https --host 0.0.0.0 --port 8443 \
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
--public-name mcp.example.com
Connect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):
claude mcp add --transport http vmware-pilot https://mcp.example.com:8443/mcp \
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
"mcpServers": {
"vmware-pilot": {
"type": "http",
"url": "https://mcp.example.com:8443/mcp",
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
}
}
}
- The server will not start without a token, refuses Host/Origin values outside
--public-name, and checks before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names. - Behind a TLS-terminating reverse proxy on the same machine use
--transport http --host 127.0.0.1 --public-name mcp.example.comand pass theAuthorizationheader through. - Behind a load balancer or gateway on another machine, keep
--transport https(a self-signed certificate is fine), list in--public-namethe host name the balancer sends asHost, and have it forwardAuthorization. Its health probe can useGET /healthz, which needs no token and returns only{"status": "ok"}(vmware-policy ≥ 1.23.0). - Send
traceparentorX-Request-IDwith each request to have it stored on the audit row;vmware-audit log --correlation-id IDthen finds the calls behind one platform request. - The audit log records each caller as
token:<name>. Calls naming different targets run in parallel; calls that name no target run one at a time, so name the target when several people share a server. - Everyone who can reach the endpoint acts with this server's account. Tokens identify callers; they grant nothing on the platform. Run one endpoint per privilege level.
- Several people or roles on one endpoint: run
vmware-audit roles enableonce, then give each token a role (vmware-audit token create NAME --role reader, or a role inroles.yamlnaming tools and targets; vmware-policy ≥ 1.24.0). A role limits what the token may call on this endpoint; it cannot grant more than the account has. See vmware-policy's README, "Roles for network callers".
Offer only read tools, plus the writes you choose:
vmware-pilot mcp --expose read --allow-write cancel_workflow
# or: VMWARE_PILOT_MCP_EXPOSE=read VMWARE_PILOT_MCP_ALLOW_WRITE=cancel_workflow vmware-pilot mcp
Tools not offered do not appear in the client's tool list. A bad value or an unknown write tool stops the server (exit 2). This limits what clients are offered; it is not authorization, so the account itself should be least-privilege.
Details: skills/vmware-pilot/references/setup-guide.md ("Serving MCP over HTTPS", "Limiting which tools are offered").
License
MIT
Questions fréquentes
Qu'est-ce que VMware Pilot ?
Multi-step workflow orchestration for VMware MCP skills with approval gates and rollback.
Comment installer VMware Pilot ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add vmware-pilot -- uvx vmware-pilot==2.4.0 mcp. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour VMware Pilot ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
VMware Pilot est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient VMware Pilot ?
Il est publié par vmware-skills. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.