Install
openclaw skills install vmware-nsx-securityUse this skill whenever the user needs to manage VMware NSX security — distributed firewall (DFW) policies, security groups, microsegmentation, and IDS/IPS. Directly handles: create/manage DFW policies and rules, security groups, VM tags, network traceflow diagnostics, IDPS profiles and status. Always use this skill for "create firewall rule", "set up microsegmentation", "add VM to security group", "run traceflow", "check IDS status", or any NSX security/DFW task. Do NOT use for NSX networking operations like segments, gateways, NAT, or routing (use vmware-nsx), or VM lifecycle (use vmware-aiops). For load balancing/AVI/AKO use vmware-avi.
openclaw skills install vmware-nsx-securityDisclaimer: 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 "NSX" are trademarks of Broadcom. Source code is publicly auditable at github.com/zw008/VMware-NSX-Security under the MIT license.
VMware NSX DFW microsegmentation and security — 20 MCP tools for distributed firewall, security groups, VM tags, Traceflow, and IDPS.
Domain-focused security skill for NSX-T / NSX 4.x Policy API. Companion skills: vmware-nsx (networking), vmware-aiops (VM lifecycle), vmware-monitor (read-only monitoring), vmware-avi (AVI/ALB/AKO), vmware-harden (compliance baselines). | vmware-pilot (workflow orchestration) | vmware-policy (audit/policy)
| Category | Tools | Count |
|---|---|---|
| DFW Policy | list, get, create, update, delete, list rules | 6 |
| DFW Rules | create, update, delete, get stats | 4 |
| Security Groups | list, get, create, delete | 4 |
| VM Tags | list VM tags, apply tag | 2 |
| Traceflow | run trace, get result | 2 |
| IDPS | list profiles, get status | 2 |
Total: 20 tools (10 read-only + 10 write)
uv tool install vmware-nsx-security
vmware-nsx-security doctor
Use companion skills for:
vmware-nsxvmware-aiopsvmware-monitorvmware-storagevmware-vksvmware-avi| User Intent | Recommended Skill |
|---|---|
| NSX security: DFW rules, security groups, IDS/IPS | vmware-nsx-security ← this skill |
| NSX networking: segments, gateways, NAT, routing | vmware-nsx |
| Read-only vSphere monitoring, alarms, events | vmware-monitor |
| VM lifecycle, deployment, guest ops | vmware-aiops |
| Storage: iSCSI, vSAN, datastores | vmware-storage |
| Tanzu Kubernetes | vmware-vks |
| Multi-step workflows with approval | vmware-pilot |
| Compliance baselines (CIS / 等保 / PCI-DSS), drift detection, LLM remediation advisor | vmware-harden (uv tool install vmware-harden) |
| Load balancer, AVI, ALB, AKO, Ingress | vmware-avi (uv tool install vmware-avi) |
| Audit log query | vmware-policy (vmware-audit CLI) |
Pre-flight (judgment — DFW changes can lock everyone out):
tag list <vm>). A group based on a non-existent tag matches zero VMs — the policy will appear "applied" but enforce nothing.Application for app-tier microseg (rules evaluated late, after Infrastructure rules pass through). Using Emergency for routine rules will starve real incident-response capacity.Steps:
group create web-vms --tag-scope tier --tag-value web (and app-vms)policy create app-microseg --category ApplicationJudgment: tags drive group membership which drives DFW enforcement. A misspelled tag silently excludes a VM from protection. Always re-list after applying.
tag list my-web-vm-01 → record the VM external ID, also see what tags already exist (avoid duplicates / typo collisions)tag apply <vm-external-id> --scope tier --value webtag list my-web-vm-01 again → confirm the new tag is present AND no unexpected onesJudgment: traceflow is your verification mechanism for any DFW change. Run it before enabling deny rules and after every rule modification. Don't trust "looks right in the UI."
vmware-nsx troubleshoot vm-segmenttraceflow run <lport-id> --src-ip <src> --dst-ip <dst> --proto TCP --dst-port <port>vmware-nsx-security policy list
vmware-nsx-security rule list <policy-id>
vmware-nsx-security rule stats <policy-id> <rule-id>
All commands accept --target <name> to operate against a specific NSX Manager:
# Default target
vmware-nsx-security policy list
# Specific target
vmware-nsx-security policy list --target nsx-prod
vmware-nsx-security group list --target nsx-lab
| Scenario | Recommended | Why |
|---|---|---|
| Local/small models (Ollama, Qwen) | CLI | ~2K tokens vs ~8K for MCP |
| Cloud models (Claude, GPT-4o) | Either | MCP gives structured JSON I/O |
| Automated pipelines | MCP | Type-safe parameters, structured output |
All MCP tools accept an optional target parameter.
| Category | Tool | Type | Description |
|---|---|---|---|
| DFW Policy | list_dfw_policies | Read | List all DFW security policies with category, sequence, and rule count |
get_dfw_policy | Read | Get policy details: category, stateful, locked, scope, tags | |
create_dfw_policy | Write | Create a new DFW policy with category and sequence number | |
update_dfw_policy | Write | Partial update: display_name, description, sequence_number, stateful | |
delete_dfw_policy | Write | Delete policy — refuses if active rules exist | |
list_dfw_rules | Read | List rules in a policy: action, sources, destinations, services | |
| DFW Rules | create_dfw_rule | Write | Create rule with sources/destinations/services/action/scope |
update_dfw_rule | Write | Partial update rule fields | |
delete_dfw_rule | Write | Delete a rule from a policy | |
get_dfw_rule_stats | Read | Get packet/byte hit counts for a rule | |
| Security Groups | list_groups | Read | List all security groups with expression count |
get_group | Read | Get group details: expression criteria + up to 50 effective VM members | |
create_group | Write | Create group with tag/IP/segment membership criteria | |
delete_group | Write | Delete group — refuses if referenced by DFW rules | |
| VM Tags | list_vm_tags | Read | List NSX tags on a VM by display name |
apply_vm_tag | Write | Apply a scope/value tag to a VM (additive, preserves existing tags) | |
| Traceflow | run_traceflow | Write | Inject probe packet and return hop-by-hop observations |
get_traceflow_result | Read | Check status/observations of an existing traceflow | |
| IDPS | list_idps_profiles | Read | List IDPS profiles with severity and criteria |
get_idps_status | Read | Get IDPS engine status: enabled/disabled, signature version, per-node counts |
# DFW Policy
vmware-nsx-security policy list [--target <name>]
vmware-nsx-security policy get <policy-id>
vmware-nsx-security policy create <id> --name "Display Name" --category Application [--dry-run]
vmware-nsx-security policy delete <id> [--dry-run]
# DFW Rules
vmware-nsx-security rule list <policy-id>
vmware-nsx-security rule stats <policy-id> <rule-id>
vmware-nsx-security rule delete <policy-id> <rule-id> [--dry-run]
# Security Groups
vmware-nsx-security group list
vmware-nsx-security group get <group-id>
vmware-nsx-security group delete <group-id> [--dry-run]
# Tags
vmware-nsx-security tag list <vm-display-name>
vmware-nsx-security tag apply <vm-external-id> --scope env --value production [--dry-run]
# Traceflow
vmware-nsx-security traceflow run <lport-id> --src-ip <src-ip> --dst-ip <dst-ip>
# IDPS
vmware-nsx-security idps profiles
vmware-nsx-security idps status
# Diagnostics
vmware-nsx-security doctor [--skip-auth]
delete_dfw_policy checks for active rules before deleting. Use vmware-nsx-security rule list <policy-id> to see which rules need to be removed first. Then delete each rule individually before retrying the policy deletion.
delete_group scans all policies for rules that reference the group in source_groups or destination_groups. Remove the group from those rules first (via update_dfw_rule replacing the group path with 'ANY' or another group), then retry.
list_vm_tags looks up VMs by display name via the NSX fabric API. Common causes:
vmware-monitor vm list for the exact NSX fabric display name.apply_vm_tag with the specific external_id.src_lport_id is the correct logical port attachment UUID — not the segment port path. Get it from vmware-nsx troubleshoot vm-segment <vm>.vmware-nsx health transport-nodes.A newly created rule will have zero hit counts until traffic matches it. If expected traffic still shows zero:
disabled: false in list_dfw_rules output).get_group.Password variable convention: VMWARE_NSX_SECURITY_<TARGET_UPPER>_PASSWORD
where hyphens are replaced by underscores. For target nsx-prod:
VMWARE_NSX_SECURITY_NSX_PROD_PASSWORD. Check ~/.vmware-nsx-security/.env.
invalid peer certificate: UnknownIssuer (uvx)Corporate TLS proxy not trusted by uv's bundled cert store. Use the v1.5.15+
single-command form vmware-nsx-security mcp (no PyPI re-resolve), or
export UV_NATIVE_TLS=true to make uv use the system cert store.
~/.vmware/audit.db (SQLite WAL, via vmware-policy) with timestamp, user, target, operation, parameters, and resultdelete_dfw_policy checks for active rules; delete_group checks for DFW rule references — prevents accidental cascade failures--dry-run to preview API calls without executing.env file), never from config.yamlvmware-nsx_sanitize() before inclusion in tool outputuv tool install vmware-nsx-security
mkdir -p ~/.vmware-nsx-security
cp config.example.yaml ~/.vmware-nsx-security/config.yaml
# Edit config.yaml with your NSX Manager targets
# Add to ~/.vmware-nsx-security/.env (create if missing, chmod 600):
# VMWARE_NSX_SECURITY_NSX_PROD_PASSWORD=<your-password>
chmod 600 ~/.vmware-nsx-security/.env
vmware-nsx-security doctor
All tools are automatically audited via vmware-policy. Audit logs:
vmware-audit log --last 20
Full setup guide: see
references/setup-guide.md
User (natural language)
|
AI Agent (Claude Code / Goose / Cursor)
| reads SKILL.md
vmware-nsx-security CLI or MCP server (stdio transport)
| NSX Policy API (REST/JSON over HTTPS)
NSX Manager
|
DFW Policies / Rules / Security Groups / Tags / IDPS
The MCP server uses stdio transport (local only, no network listener). All connections to NSX Manager use HTTPS on port 443.
All operations are automatically audited via vmware-policy (@vmware_tool decorator):
~/.vmware/audit.db (SQLite, framework-agnostic)~/.vmware/rules.yaml (deny rules, maintenance windows, risk levels)vmware-audit log --last 20vmware-audit log --status deniedvmware-policy is automatically installed as a dependency — no manual setup needed.