VMware NSX Security
PYPI · VMWARE-NSX-SECURITY · SCANNED SEP 21
VMware NSX security: DFW policies and exclusions, groups, tags, Traceflow, IDPS — 22 MCP tools.
Available components
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 Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 3 of 40 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
- 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
- License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 0 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 5066 tokens (~230/item across 22 items; 22 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 Management73
- Stability observed for 22 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 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 23 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
How do I install the VMware NSX Security MCP server?
VMware NSX Security runs locally as a PyPI package, launched with uvx vmware-nsx-security. 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-nsx-security
claude mcp add vmware-skills-vmware-nsx-security -- uvx vmware-nsx-security
{
"mcpServers": {
"vmware-skills-vmware-nsx-security": {
"command": "uvx",
"args": [
"vmware-nsx-security"
]
}
}
} {
"servers": {
"vmware-skills-vmware-nsx-security": {
"command": "uvx",
"args": [
"vmware-nsx-security"
]
}
}
} codex mcp add vmware-skills-vmware-nsx-security -- uvx vmware-nsx-security
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"vmware-skills-vmware-nsx-security": {
"type": "local",
"command": [
"uvx",
"vmware-nsx-security"
],
"enabled": true
}
}
} openclaw mcp add vmware-skills-vmware-nsx-security --command uvx --arg vmware-nsx-security
mcp_servers:
vmware-skills-vmware-nsx-security:
command: "uvx"
args: ["vmware-nsx-security"] {
"McpServers": {
"vmware-skills-vmware-nsx-security": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"vmware-nsx-security"
]
}
}
} assistant mcp add vmware-skills-vmware-nsx-security -t stdio -c uvx -a vmware-nsx-security
{
"mcpServers": {
"vmware-skills-vmware-nsx-security": {
"command": "uvx",
"args": [
"vmware-nsx-security"
]
}
}
} 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.
- 21 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 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.12.0 → 1.13.0 functional
- 19 Sept 26 +1
- Package version: 1.11.1 → 1.12.0 functional
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 1.11.0 → 1.11.1 functional
- 14 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 12 Sept 26 +1
- Package version: 1.10.0 → 1.11.0 functional
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
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 21 Sept 2026 · Analysed pypi/vmware-nsx-security@1.13.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 →
Dependencies 40 packages
| Packages resolved | 40 |
|---|---|
| Stale | 3 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
apply_vm_tag ~171
[WRITE] Apply an NSX tag to a virtual machine. Returns {"status": "applied", "vm_id", "scope", "tag"} — not the VM's tag list. Use list_vm_tags first for the vm_id, and again after to see the result. Additive, so existing tags survive, but note that tag-based group membership shifts as NSX re-evaluates: check with get_group.
| Name | Type | Req | Description |
|---|---|---|---|
| tag_scope | string | yes | Tag scope (e.g. 'env', 'tier', 'owner'). |
| tag_value | string | yes | Tag value (e.g. 'production', 'web'). |
| target | – | – | Optional NSX Manager target from config. |
| vm_id | string | yes | VM external ID (fabric UUID, from list_vm_tags). |
No output schema declared.
No examples provided.
create_dfw_policy ~180
[WRITE] Create a new DFW security policy. Returns the created policy dict (id, path, category, ...), else {"error", "hint"}. The policy is an empty container — rules must be added afterwards with create_dfw_rule.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Ethernet, Emergency, Infrastructure, Environment or Application (default Application); sets DFW evaluation order, Ethernet first, Application last. |
| description | string | – | Optional description. |
| display_name | string | yes | Human-readable name. |
| policy_id | string | yes | Unique policy id (alphanumerics, hyphens, underscores). |
| sequence_number | integer | – | Priority; lower = higher priority (default 10). |
| stateful | boolean | – | Track connection state (default True). |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
create_dfw_rule ~356
[WRITE] Create a firewall rule under an existing DFW security policy. Returns the created rule dict (id, path, action, ...), else {"error", "hint"}; a bad action/direction/ip_protocol lists the valid values. PUT semantics: reusing a rule_id overwrites that rule, enforced immediately unless disabled=True. Pick policy_id with list_dfw_policies first; prefer update_dfw_rule to edit one and delete_dfw_rule to remove one.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | ALLOW, DROP, REJECT or JUMP_TO_APPLICATION (default ALLOW); JUMP_TO_APPLICATION needs an Environment policy. |
| description | string | – | Optional free text. |
| destinations | – | – | Destination group paths; omit for any. |
| direction | string | – | IN, OUT or IN_OUT (default IN_OUT). |
| disabled | boolean | – | Create the rule unenforced (default False). |
| display_name | string | yes | Human-readable name. |
| ip_protocol | string | – | IPV4, IPV6 or IPV4_IPV6 (default IPV4_IPV6). |
| logged | boolean | – | Log matched traffic (default False). |
| policy_id | string | yes | Parent policy id, from list_dfw_policies. |
| rule_id | string | yes | Unique rule id within that policy. |
| scope | – | – | Applied-to group/segment paths; omit for the whole DFW. |
| sequence_number | integer | – | Priority; lower matches first (default 10). |
| services | – | – | Service paths; omit for all. |
| sources | – | – | Source group paths like ['/infra/domains/default/groups/web']; omit for any. |
| target | – | – | Target name from config; default if omitted. |
No output schema declared.
No examples provided.
create_group ~230
[WRITE] Create an NSX security group with optional membership criteria. Returns the created group dict (id, path, expression, ...). Criteria are ORed — NSX only permits AND between same-member-type Conditions: tag_scope/tag_value matches VMs carrying that tag, ip_addresses matches IPs or CIDRs, segment_paths every VM on those segments. Use it before create_dfw_rule, which references the group path; confirm members with get_group.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Optional description. |
| display_name | string | yes | Human-readable name. |
| group_id | string | yes | Unique id (alphanumerics, hyphens, underscores). |
| ip_addresses | – | – | IP addresses or CIDRs (e.g. ['10.0.1.0/24']). |
| segment_paths | – | – | NSX segment policy paths. |
| tag_scope | – | – | NSX tag scope for membership (e.g. 'env'). |
| tag_value | – | – | NSX tag value for membership (e.g. 'production'). |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
delete_dfw_policy ~223
[WRITE] Delete a DFW security policy; refuses while it still holds rules. Without confirm=True this only previews: it returns blast_radius (the policy's name, category, sequence_number, rule_count and rule_ids, blockers, unmeasured) and deletes nothing. Show that to the user and get their decision. Do not set confirm=True on your own because the user asked to delete earlier: they have not seen the blast radius yet. confirm=True refuses, deleting nothing, while the policy still holds rules — list them with list_dfw_rules and clear each with delete_dfw_rule first — or when its rules could not be read. Returns {"action": "preview" | "deleted", "blast_radius": ...}, else {"error", "hint", "blast_radius"?}.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | False (default) returns the blast radius and changes nothing. True applies it. |
| policy_id | string | yes | ID of the policy to delete. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
delete_dfw_rule ~305
[WRITE] Permanently delete one DFW rule from its parent security policy. Irreversible and immediate: traffic it matched falls through to lower-priority rules or the policy default. Without confirm=True this only previews: it returns blast_radius (the parent policy, the rule's action, sources, destinations, services, scope, direction, disabled flag, blockers, unmeasured) and deletes nothing. Show that to the user and get their decision. Do not set confirm=True on your own because the user asked to delete earlier: they have not seen the blast radius yet. Check recent hits with get_dfw_rule_stats first; prefer update_dfw_rule with disabled=True when you may need the rule back. A rule_id not in the policy is an error, and confirm=True refuses when the rules could not be read. To remove a whole policy use delete_dfw_policy — it refuses while rules remain. Returns {"action": "preview" | "deleted", "blast_radius": ...}, else {"error", "hint", "blast_radius"?}.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | False (default) returns the blast radius and changes nothing. True applies it. |
| policy_id | string | yes | Parent policy id, from list_dfw_policies. |
| rule_id | string | yes | Rule id within that policy, from list_dfw_rules. |
| target | – | – | Target name from config; default if omitted. |
No output schema declared.
No examples provided.
delete_group ~266
[WRITE] Delete an NSX security group; refuses while anything references it. Use it once get_group shows the group is unwanted. Without confirm=True this only previews: it returns blast_radius (the group's name, path, expression_count, reference_count and references, blockers, unmeasured) and deletes nothing. Show that to the user and get their decision. Do not set confirm=True on your own because the user asked to delete earlier: they have not seen the blast radius yet. confirm=True refuses if anything still references the group (parent groups from NSX's group-associations API; DFW and gateway-firewall rules and policy applied-to, by walking the rules), and refuses if that check itself fails (fail-safe). When the refusal names a DFW rule, retarget it with update_dfw_rule or drop it with delete_dfw_rule first. Returns {"action": "preview" | "deleted", "blast_radius": ...}, else {"error", "hint", "blast_radius"?}.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | False (default) returns the blast radius and changes nothing. True applies it. |
| group_id | string | yes | ID of the group to delete. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
get_dfw_policy ~108
[READ] Get full details of a single DFW security policy. Returns one policy object, not an envelope: category, sequence_number, stateful, scope and rule count. Use it once list_dfw_policies has narrowed to one id — never a display name. Then call list_dfw_rules for the rules inside.
| Name | Type | Req | Description |
|---|---|---|---|
| policy_id | string | yes | Policy identifier (e.g. 'app-tier-policy'). |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
get_dfw_rule_stats ~130
[READ] Get packet/byte hit-count statistics for a DFW rule. Returns one flat stats object, not an envelope: packet_count, byte_count, session_count, hit_count, popularity_index. Use it before update_dfw_rule or delete_dfw_rule to see if a rule still matches traffic; counters are cumulative and may read zero on a new rule. Ids come from list_dfw_rules.
| Name | Type | Req | Description |
|---|---|---|---|
| policy_id | string | yes | Parent policy identifier. |
| rule_id | string | yes | Rule identifier. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
get_group ~151
[READ] Get details of a security group including membership criteria and effective members. Returns one group object: its expression rules, member_count (the group's real size), and members — an envelope holding at most the first 50 effective VirtualMachine members, whose truncated flag says whether more were withheld. Report member_count as the size; counting members.items reports the sample instead. Use it once list_groups has narrowed to one id; membership is evaluated by NSX, so a tag written with apply_vm_tag may take seconds to appear.
| Name | Type | Req | Description |
|---|---|---|---|
| group_id | string | yes | Group identifier (e.g. 'web-tier-vms'). |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
get_idps_status ~132
[READ] Get IDPS signature status and global IDS settings. Returns one bundle, not an envelope: 'signature_status' (scalar fields of the signature bundle status, e.g. version/update state — names vary by NSX release) and 'settings' (auto_update, ids_events_to_syslog). Use it first to confirm IDS is on and current, then list_idps_profiles for the profiles. No per-signature or per-event detail, and 'signature_status' may be empty where IDS was never enabled.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
get_traceflow_result ~137
[READ] Get the current state and observations of an existing Traceflow. Use this to check a previously initiated traceflow without waiting. Returns operation_state (IN_PROGRESS / FINISHED / FAILED) and observations typed by resource_type; Dropped* ones carry reason and acl_rule_id. Only a traceflow run_traceflow left IN_PROGRESS at its timeout is still on the manager — a completed one is deleted server-side and its id 404s here.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | – | Optional NSX Manager target from config. |
| traceflow_id | string | yes | Traceflow ID from a previous run_traceflow call. |
No output schema declared.
No examples provided.
list_dfw_exclusions ~364
[READ] List the DFW exclusion list — the members no distributed-firewall rule reaches. Read this before answering any question about a VM being micro-segmented or protected by DFW policy. A VM on this list has no DFW in its datapath: rules that name it, groups that contain it and policies scoped to it all still exist and none of them apply. On a VCF estate the management VMs (vCenter, VCF Operations, NSX managers) are commonly on it. Returns the list envelope. 'items' holds one row per excluded member: the group 'path', its 'id' and 'display_name', the 'virtual_machines' in it and 'vm_count'. A row with 'members_error' is a group whose members could not be read — that is not an empty group, so do not read it as one. 'scope' says which list answered: "system_and_user" includes NSX's own system-owned exclusions, "user" means this manager refused that variant and system exclusions are NOT in the answer. An empty list under "user" is not proof that nothing is excluded. Page with 'next_offset': pass the value back as 'offset' and stop when it is null. The list holds at most 100 groups, so one page is normally all of it.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size, 1..1000 (default 50). Not a way to ask for everything — 0 or negative is rejected. |
| offset | integer | – | Excluded members to skip, 0 or more. Pass the previous response's 'next_offset'. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
list_dfw_policies ~351
[READ] List DFW security policies in the default domain. Start here. Returns the list envelope: 'items' holds each policy's id, display_name, category, sequence_number, stateful flag and rule count; 'returned'/'limit'/'total'/'truncated'/'hint' say whether the page is the whole answer — never read a full page as complete, narrow with name_filter or page with offset. Then get_dfw_policy for one policy's detail, or list_dfw_rules for the rules inside. Page with 'next_offset': pass the value back as 'offset' and stop when it is null. Do not loop on 'truncated' — that says this page is not the whole collection, which stays true on the last page of a walk. 'rule_count' is null when NSX did not report one — that means "not retrieved", NOT "no rules", so do not conclude a null policy enforces nothing; call list_dfw_rules on it. Passing name_filter makes every count null (it is resolved via the Policy Search API, which carries no rule counts). A null anywhere adds 'rule_count_note' to the envelope.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size, 1..1000 (default 50). Not a way to ask for everything — 0 or negative is rejected. |
| name_filter | – | – | Substring/glob match on policy display_name. |
| offset | integer | – | Matched policies to skip, 0 or more. Pass the previous response's 'next_offset'. |
| target | – | – | NSX Manager target name from config; default if omitted. |
No output schema declared.
No examples provided.
list_dfw_rules ~268
[READ] List rules in a DFW security policy. Returns the list envelope: 'items' holds each rule's id, display_name, action, sources, destinations, services, direction, disabled flag and sequence number; 'returned'/'limit'/'truncated'/'hint' say whether the page is complete. 'total' is always null here — a full page reports truncated=true and must be paged with offset; one Application policy can hold thousands of rules. Get policy_id from list_dfw_policies; then get_dfw_rule_stats for a rule's hit counts. Page with 'next_offset': pass the value back as 'offset' and stop when it is null. Do not loop on 'truncated' — that says this page is not the whole collection, which stays true on the last page of a walk.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size, 1..1000 (default 50). Not a way to ask for everything — 0 or negative is rejected. |
| offset | integer | – | Rules to skip, 0 or more. Pass the previous response's 'next_offset'. |
| policy_id | string | yes | Parent policy identifier. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
list_groups ~238
[READ] List NSX security groups in the default domain. Returns the list envelope: 'items' holds each group's id, display_name, description and expression count; 'returned'/'limit'/'total'/ 'truncated'/'hint' say whether the page is the whole answer — never read a full page as complete, narrow with name_filter or page with offset. Then get_group for one group's criteria and effective members. Page with 'next_offset': pass the value back as 'offset' and stop when it is null. Do not loop on 'truncated' — that says this page is not the whole collection, which stays true on the last page of a walk.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size, 1..1000 (default 50). Not a way to ask for everything — 0 or negative is rejected. |
| name_filter | – | – | Substring/glob match on group display_name. |
| offset | integer | – | Matched groups to skip, 0 or more. Pass the previous response's 'next_offset'. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
list_idps_profiles ~271
[READ] List IDPS profiles configured in NSX. Returns the list envelope: 'items' holds each profile's id, display_name, profile_severity (comma-joined), criteria (filter_name/filter_value pairs, e.g. ATTACK_TYPE or CVSS) and overridden signature count; 'returned'/'limit'/'total'/'truncated'/ 'hint' say whether the page is the whole answer — never read a full page as complete, narrow with name_filter or page with offset. Then get_idps_status for the signature-bundle version and IDS settings. Page with 'next_offset': pass the value back as 'offset' and stop when it is null. Do not loop on 'truncated' — that says this page is not the whole collection, which stays true on the last page of a walk.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size, 1..1000 (default 50). Not a way to ask for everything — 0 or negative is rejected. |
| name_filter | – | – | Substring/glob match on profile display_name. |
| offset | integer | – | Matched profiles to skip, 0 or more. Pass the previous response's 'next_offset'. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
list_vm_tags ~195
[READ] List all NSX tags applied to a virtual machine. Returns the list envelope: 'items' holds the VM's scope/tag pairs and 'vm_id' the fabric UUID apply_vm_tag and remove_vm_tag require — call this first to get it. Tags always arrive in one response, so 'truncated' is always false and empty 'items' means the VM really has no tags. 'tags' is a deprecated pre-1.8.0 alias of 'items', removed in 2.0 — read 'items'. Returns {"error", "hint"} if no VM matches, or several do.
| Name | Type | Req | Description |
|---|---|---|---|
| target | – | – | Optional NSX Manager target from config. |
| vm_display_name | string | yes | Exact vCenter display name (case-sensitive, no wildcards). This skill does not enumerate VMs — run vmware-monitor's list_virtual_machines to get one. |
No output schema declared.
No examples provided.
remove_vm_tag ~170
[WRITE] Remove an NSX tag from a virtual machine. Returns {"status": "removed", "vm_id", "scope", "tag"}, not the VM's remaining tags. Only the exact scope/value pair is removed — other tags survive. Removing a tag changes dynamic group membership immediately — groups with tag Conditions stop matching the VM — so re-check with get_group. Use list_vm_tags first to confirm the pair.
| Name | Type | Req | Description |
|---|---|---|---|
| tag_scope | string | yes | Scope of the tag to remove (e.g. 'env'). |
| tag_value | string | yes | Value of the tag to remove (e.g. 'production'). |
| target | – | – | Optional NSX Manager target from config. |
| vm_id | string | yes | VM external ID (fabric UUID, from list_vm_tags). |
No output schema declared.
No examples provided.
run_traceflow ~293
[WRITE] Run a Traceflow to trace a packet's path through the NSX overlay. Injects a synthetic probe from the source port. Returns traceflow_id, operation_state (IN_PROGRESS / FINISHED / FAILED) and hop-by-hop observations typed by resource_type; Dropped* ones carry reason and acl_rule_id. Use it to find which DFW rule drops a flow, then get_dfw_rule_stats on that rule. A FINISHED traceflow is deleted server-side and its id 404s; only one still IN_PROGRESS at timeout_seconds survives for get_traceflow_result to poll.
| Name | Type | Req | Description |
|---|---|---|---|
| dst_ip | string | yes | Destination IP. |
| dst_port | integer | – | Destination port for TCP/UDP (default 80). |
| protocol | string | – | TCP, UDP or ICMP (default TCP). |
| src_ip | string | yes | Probe source IP. |
| src_lport_id | string | yes | Source logical port ID — the VM NIC attachment UUID. This skill does not enumerate ports; run vmware-nsx's get_segment_port_for_vm to obtain one. |
| src_port | integer | – | Source port for TCP/UDP (default 1234). |
| target | – | – | Optional NSX Manager target from config. |
| timeout_seconds | integer | – | Max seconds to wait (default 20). |
| ttl | integer | – | IP TTL (default 64). |
No output schema declared.
No examples provided.
update_dfw_policy ~139
[WRITE] Partially update a DFW security policy (PATCH — only provided fields change). Returns the updated policy dict; omitted arguments keep their values, so read them with get_dfw_policy first. Use it to rename or re-prioritise the policy itself — to change a rule inside use update_dfw_rule.
| Name | Type | Req | Description |
|---|---|---|---|
| description | – | – | New description. |
| display_name | – | – | New display name. |
| policy_id | string | yes | ID of the policy to update. |
| sequence_number | – | – | New sequence number. |
| stateful | – | – | New stateful flag. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
update_dfw_rule ~192
[WRITE] Partially update a DFW rule (PATCH — only provided fields change). Returns the updated rule dict; omitted arguments keep their values, so read them with list_dfw_rules first. Use it to retarget, re-prioritise or disable a rule — to add one use create_dfw_rule, to remove one delete_dfw_rule.
| Name | Type | Req | Description |
|---|---|---|---|
| action | – | – | New firewall action. |
| description | – | – | New description. |
| destinations | – | – | New destination groups. |
| disabled | – | – | New disabled flag. |
| display_name | – | – | New name. |
| logged | – | – | New logged flag. |
| policy_id | string | yes | Parent policy identifier. |
| rule_id | string | yes | Rule identifier to update. |
| sequence_number | – | – | New sequence number. |
| services | – | – | New services. |
| sources | – | – | New source groups. |
| target | – | – | Optional NSX Manager target from config. |
No output schema declared.
No examples provided.
What is the VMware NSX Security MCP server?
VMware NSX Security is an MCP server listed in the public MCP registry as io.github.vmware-skills/vmware-nsx-security. VMware NSX security: DFW policies and exclusions, groups, tags, Traceflow, IDPS, 22 MCP tools. This page covers its PyPI package (vmware-nsx-security).
Is the VMware NSX Security MCP server safe to use?
VMware NSX Security scores 78 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 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 NSX Security MCP server expose?
VMware NSX Security exposes 22 tools: list_dfw_policies, get_dfw_policy, create_dfw_policy, update_dfw_policy, delete_dfw_policy, and 17 more. Their descriptions and schemas cost roughly 4,870 tokens of context every time the server is loaded.
Is the VMware NSX Security MCP server still maintained?
VMware NSX Security is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.