关于 VMware NSX
VMware NSX 是社区驱动的命令行工具和 MCP 服务,通过 Policy API 管理 NSX 网络。它提供 33 个工具,涵盖网段、网关、NAT、路由、IP 池、健康检查和故障排查,并为写入操作提供预览与保护。
主要功能
- 01提供 33 个 NSX 网络管理工具
- 02管理网段、网关、NAT 和路由
- 03查看 IP 池与网络结构清单
- 04检查健康状态并排查 VM 连通性
- 05预览写入并保护破坏性操作
适用场景
- 01创建含网关、网段和 NAT 的应用网络
- 02检查 NSX 管理器与传输节点健康状态
- 03通过端口、路由和 BGP 排查 VM 连通性
MCP 相关
默认作为本地 stdio MCP 服务运行,提供 33 个 NSX 管理读写工具。也可通过 HTTPS 提供服务,并使用 bearer token 认证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
33收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| target | any | 否 | 来自配置的 NSX Manager 目标(省略时使用默认值)。 |
| tier1_id | string | 是 | 唯一 ID(字母数字、连字符、下划线);将成为 /infra/tier-1s/<tier1_id>。 |
| tier0_path | any | 否 | 父级 Tier-0 路径,例如 "/infra/tier-0s/<t0-id>";独立网关可省略。 |
| display_name | string | 是 | UI 显示名称。 |
| edge_cluster_path | any | 否 | NAT 和其他有状态服务必需。 |
| route_advertisement | any | 否 | 逗号分隔:TIER1_CONNECTED、TIER1_STATIC_ROUTES、TIER1_NAT、TIER1_LB_VIP、TIER1_LB_SNAT、TIER1_DNS_FORWARDER_IP、TIER1_IPSEC_LOCAL_ENDPOINT。 |
详细介绍
VMware NSX
作者:Wei Zhou,VMware by Broadcom — [email protected] 这是由 VMware 工程师发起的社区项目,并非 VMware 官方产品。 如需 VMware 官方开发者工具,请访问 developer.broadcom.com。
VMware NSX 网络管理:网段、网关、NAT、路由、IPAM——33 个 MCP 工具,专注于特定领域。
适用于 NSX-T 3.0+ 和 NSX 4.x 的 NSX Policy API 技能。
配套技能
| 技能 | 范围 | 工具 | 安装 |
|---|---|---|---|
| vmware-aiops ⭐ 入口 | VM 生命周期、部署、来宾操作、集群 | 49 | uv tool install vmware-aiops |
| vmware-monitor | 只读监控、警报、事件、VM 信息 | 27 | uv tool install vmware-monitor |
| vmware-storage | 数据存储、iSCSI、vSAN | 11 | uv tool install vmware-storage |
| vmware-vks | Tanzu 命名空间、TKC 集群生命周期 | 20 | uv tool install vmware-vks |
| vmware-nsx-security | DFW 微分段、安全组、Traceflow | 21 | uv tool install vmware-nsx-security |
| vmware-aria | Aria Ops 指标、警报、容量规划 | 28 | uv tool install vmware-aria |
| vmware-avi | AVI/NSX ALB 负载均衡、AKO | 28 | uv tool install vmware-avi |
| vmware-harden | 合规基线、偏差检测 | 6 | uv tool install vmware-harden |
快速安装
# Via PyPI
uv tool install vmware-nsx-mgmt
# Or pip
pip install vmware-nsx-mgmt
离线/隔离网络环境安装(从源代码安装)
本项目使用现代 PEP 517 构建系统(hatchling),因此按设计不包含
setup.py——这是预期行为,并非文件缺失。如果你克隆了源代码并遇到
ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build,说明你的 pip 版本低于 21.3,
无法使用非 setuptools 后端执行可编辑(-e)安装。可编辑模式是开发者便利功能,运行工具并不需要——请采用以下任一方式:
# 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 .
对于真正处于隔离网络环境中的主机,请在联网的机器上构建 wheel 文件并复制过去——目标主机无需网络:
# 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-nsx-mgmt
配置
mkdir -p ~/.vmware-nsx
cp config.example.yaml ~/.vmware-nsx/config.yaml
# Edit with your NSX Manager credentials
echo "VMWARE_NSX_NSX_PROD_PASSWORD=your_password" > ~/.vmware-nsx/.env
chmod 600 ~/.vmware-nsx/.env
# Verify
vmware-nsx doctor
此技能的功能
| 类别 | 工具 | 数量 | 读取/写入 |
|---|---|---|---|
| 网段 | 列出、获取、创建、更新、删除 | 5 | 2R / 3W |
| Tier-0 网关 | 列出、获取、BGP 邻居、配置 BGP | 4 | 3R / 1W |
| Tier-1 网关 | 列出、获取、创建、更新、删除 | 5 | 2R / 3W |
| NAT | 列出、创建、删除 | 3 | 1R / 2W |
| 静态路由 | 列出、创建、删除 | 3 | 1R / 2W |
| IP 池 | 列出、用量、创建、删除 | 4 | 2R / 2W |
| Fabric 清单 | 传输区域、传输节点、边缘集群 | 3 | 3R / 0W |
| 运行状况与故障排查 | 警报、传输节点状态、边缘集群状态、管理器状态、端口状态、VM 到网段 | 6 | 6R / 0W |
总计:33 个工具(20 个只读工具 + 13 个写入工具)
常见工作流
创建应用网络(网段 + T1 网关 + NAT)
- 创建网关:
vmware-nsx gateway create-t1 app-t1 --edge-cluster edge-cluster-01 --tier0 tier0-gw - 创建网段:
vmware-nsx segment create app-web-seg --name app-web-seg --tz <tz-overlay-path> --subnet 10.10.1.1/24 - 添加 SNAT:
vmware-nsx nat create app-t1 --action SNAT --source 10.10.1.0/24 --translated 172.16.0.10 - 验证:
vmware-nsx segment list和vmware-nsx nat list app-t1
请先使用 --dry-run 预览任何写入命令。
检查网络健康状况
- 管理器状态:
vmware-nsx health manager-status - 传输节点:
vmware-nsx health transport-nodes - Edge 集群:
vmware-nsx health edge-clusters - 告警:
vmware-nsx health alarms --severity HIGH(精确匹配筛选;需分别查询每个严重性级别)
排查 VM 连通性
- 查找 VM 所属网段:
vmware-nsx troubleshoot vm-segment <vm-display-name> - 检查端口实现状态:
vmware-nsx troubleshoot port-status <segment-id>(该网段上的所有端口:连接、已实现的绑定、传输节点) - 检查路由:
vmware-nsx gateway routes-t1 app-t1 - 检查 BGP:
vmware-nsx gateway bgp-neighbors tier0-gw
MCP 工具(33 个 — 20 个读取,13 个写入)
| 类别 | 工具 | 类型 |
|---|---|---|
| 网段 | list_segments、get_segment、create_segment、update_segment、delete_segment | 读取/写入 |
| Tier-0 网关 | list_tier0_gateways、get_tier0_gateway、get_bgp_neighbors、configure_tier0_bgp | 读取/写入 |
| Tier-1 网关 | list_tier1_gateways、get_tier1_gateway、create_tier1_gateway、update_tier1_gateway、delete_tier1_gateway | 读取/写入 |
| NAT | list_nat_rules、create_nat_rule、delete_nat_rule | 读取/写入 |
| 静态路由 | list_static_routes、create_static_route、delete_static_route | 读取/写入 |
| IP 池 | list_ip_pools、get_ip_pool_usage、create_ip_pool、delete_ip_pool | 读取/写入 |
| Fabric | list_transport_zones、list_transport_nodes、list_edge_clusters | 读取 |
| 健康状况 | list_nsx_alarms(按严重性筛选,精确匹配)、get_transport_node_status、get_edge_cluster_status、get_nsx_manager_status | 读取 |
| 故障排查 | get_logical_port_status(网段上所有端口的实现状态)、get_segment_port_for_vm(按 VM 显示名称查找) | 读取 |
各工具的完整端点和方法:skills/vmware-nsx/references/capabilities.md。
CLI
# Segments
vmware-nsx segment list
vmware-nsx segment get app-web-seg
vmware-nsx segment create app-web-seg --name app-web-seg --tz <tz-overlay-path> --subnet 10.10.1.1/24
vmware-nsx segment delete app-web-seg
# Gateways
vmware-nsx gateway list-t0
vmware-nsx gateway list-t1
vmware-nsx gateway create-t1 app-t1 --edge-cluster edge-cluster-01 --tier0 tier0-gw
vmware-nsx gateway bgp-neighbors tier0-gw
vmware-nsx gateway routes-t1 app-t1
# NAT
vmware-nsx nat list app-t1
vmware-nsx nat create app-t1 --action SNAT --source 10.10.1.0/24 --translated 172.16.0.10
vmware-nsx nat delete-rule --tier1 app-t1 --rule-id rule-01
# Static Routes
vmware-nsx route list app-t1
vmware-nsx route create app-t1 --network 192.168.100.0/24 --next-hop 10.10.1.254
# IP Pools
vmware-nsx ippool list
vmware-nsx ippool create tep-pool
vmware-nsx ippool add-subnet tep-pool --start 192.168.100.10 --end 192.168.100.50 --cidr 192.168.100.0/24
# Health & Troubleshooting
vmware-nsx health alarms --severity HIGH # exact match: LOW | MEDIUM | HIGH | CRITICAL
vmware-nsx health transport-nodes
vmware-nsx health manager-status
vmware-nsx troubleshoot vm-segment my-vm-01 # VM display name
vmware-nsx troubleshoot port-status app-web-seg # segment ID
# Diagnostics
vmware-nsx doctor
MCP 服务
安装 uv tool install vmware-nsx-mgmt 后,只需一条命令即可启动 MCP 服务(v1.5.15+):
# Recommended — single command, no network re-resolve
vmware-nsx mcp
# Or via Docker
docker compose up -d
Agent 配置
将以下内容添加到 AI Agent 的 MCP 配置中:
{
"mcpServers": {
"vmware-nsx": {
"command": "vmware-nsx",
"args": ["mcp"],
"env": {
"VMWARE_NSX_CONFIG": "~/.vmware-nsx/config.yaml"
}
}
}
}
替代方案:使用 uvx(无需安装)或旧版入口点
# Run without installing (requires PyPI access each launch)
uvx --from vmware-nsx-mgmt vmware-nsx mcp
# Legacy entry point (still works, kept for backward compatibility)
vmware-nsx-mcp
在企业 TLS 代理后? uvx 可能会报错:
invalid peer certificate: UnknownIssuer。 请使用上文推荐的vmware-nsx mcp形式(无需网络),或设置UV_NATIVE_TLS=true。
更多 Agent 配置模板(Claude Code、Cursor、Goose、Continue 等)请参阅 examples/mcp-configs/。
版本兼容性
| NSX 版本 | 支持情况 | 备注 |
|---|---|---|
| NSX 9.1 | 完全支持 | 支持 Policy API。注意:需要 VDS 7.0+(N-VDS 已在 NSX 9 中移除)。 |
| NSX 9.0 | 完全支持 | 支持 Policy API。注意:裸机 Agent / 物理服务器 L2 覆盖网络已移除。 |
| NSX 4.x | 完全支持 | 最新的 Policy API,支持所有功能 |
| NSX-T 3.2 | 完全支持 | 所有功能均可使用 |
| NSX-T 3.1 | 完全支持 | 路由表格式略有差异 |
| NSX-T 3.0 | 兼容 | 此版本引入了 IP 池子网 API |
| NSX-T 2.5 | 有限支持 | Policy API 不完整;部分工具可能无法使用 |
| NSX-V (6.x) | 不支持 | 使用不同的 API(基于 SOAP) |
VCF 兼容性
| VCF 版本 | 随附的 NSX | 支持情况 |
|---|---|---|
| VCF 9.1 | NSX 9.1 | 完全支持 |
| VCF 9.0 | NSX 9.0 | 完全支持 |
| VCF 5.x | NSX 4.x | 完全支持 |
| VCF 4.3-4.5 | NSX-T 3.1-3.2 | 完全支持 |
Broadcom 官方参考资料
- SDK:https://developer.broadcom.com/sdks — VMware NSX for Python SDK(官方;未来的迁移目标)、VCF Python SDK
- REST API:https://developer.broadcom.com/xapis — NSX-T Data Center REST API(本技能使用其中的 Policy API 子集)
- CLI 工具:https://developer.broadcom.com/tools — VCF PowerCLI 9.1(包含 NSX cmdlet)
安全性
| 功能 | 描述 |
|---|---|
| 以读取操作为主 | 33 个工具中有 20 个为只读工具 |
| 双重确认 | CLI 写入命令需要两次确认 |
| 试运行模式 | 所有写入命令都支持通过 --dry-run 预览 |
| MCP 删除预览 | 五个 MCP 删除工具默认会先预览:未设置 confirm=True 时,它们会返回 blast_radius(将要删除的内容、blockers、unmeasured),且不会删除任何内容。只要仍有阻止项,或读取失败,就会拒绝 confirm=True |
| 依赖项检查 | 端口仍连接时,拒绝删除 Segment;只要仍有 Segment、NAT 规则、静态路由、接口或 VPN / DNS 转发器 / LB 服务依赖 Tier-1,就会拒绝删除 Tier-1,且不会删除任何内容(--dry-run 会执行相同检查)。在 MCP 中,只要仍有地址已分配,就会拒绝删除 IP 池:检查 Policy 的 ip-allocations,或 NSX 的 pool_usage 计数;后者也涵盖 Policy 未列出的地址(例如 TEP 池)。若无法读取 pool_usage,也会拒绝删除。删除 NAT 规则和静态路由时没有阻止项;其预览会显示规则的匹配条件或路由的网络和下一跳 |
| 输入验证 | 验证 CIDR、IP、VLAN ID 和网关是否存在 |
| 审计日志记录 | 所有操作都会记录到 ~/.vmware-nsx/audit.log |
| 不支持防火墙操作 | 无法创建或修改 DFW 规则或安全组 |
| 凭据安全 | 密码仅从环境变量读取 |
| 提示词注入防御 | 在输出前会清理 NSX 对象名称 |
故障排除
| 问题 | 原因与修复方法 |
|---|---|
| “找不到 Segment” | Policy API 使用 Segment id,而非 display_name。运行 segment list 以获取准确的 ID。 |
| 创建 NAT 失败,提示“找不到网关” | NAT 需要 Tier-1(或 Tier-0)网关。使用 gateway list-t1 验证。网关必须配置边缘集群。 |
| BGP 邻居卡在 Connect/Active 状态 | 对等节点不可达、ASN 不匹配、TCP 179 被阻止,或 MD5 密码不匹配。 |
| Transport node 状态为“degraded” | TEP 不可达(检查 MTU >= 1600)、NTP 同步问题,或主机交换机配置不匹配。 |
| “找不到密码” | 变量命名格式为 VMWARE_NSX_<TARGET_UPPER>_PASSWORD(连字符替换为下划线)。检查 ~/.vmware-nsx/.env。 |
| 连接超时 | 在高延迟网络中,使用 vmware-nsx doctor --skip-auth 跳过身份验证检查。 |
远程访问(HTTPS)和限制工具
默认情况下,vmware-nsx mcp 使用 stdio 与一个本地客户端通信,并提供所有工具。两种选项可以更改此行为
(vmware-policy ≥ 1.21.0)。
通过 HTTPS 提供服务,以便其他机器上的客户端可以连接。每个调用方都需要 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-nsx 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
连接客户端(此处展示 Claude Code;任何支持可流式传输 HTTP 和自定义标头的 MCP 客户端均可):
claude mcp add --transport http vmware-nsx https://mcp.example.com:8443/mcp \
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
"mcpServers": {
"vmware-nsx": {
"type": "http",
"url": "https://mcp.example.com:8443/mcp",
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
}
}
}
- 没有 token 时,服务不会启动;它会拒绝
--public-name以外的 Host/Origin 值,并在绑定前检查,确保未经身份验证的请求会收到 401。请使用客户端信任的、适用于这些名称的证书。 - 如果在同一台机器上通过终止 TLS 的反向代理访问,请使用
--transport http --host 127.0.0.1 --public-name mcp.example.com,并透传Authorization标头。 - 如果通过另一台机器上的负载均衡器或网关访问,请保留
--transport https(自签名证书也可以),在--public-name中列出负载均衡器发送的 Host 主机名,并让它转发Authorization。它的健康检查可以使用无需 token 的GET /healthz,该请求只会返回{"status": "ok"}(vmware-policy ≥ 1.23.0)。 - 每次请求都附带
traceparent或X-Request-ID,即可将其存入审计记录;随后运行vmware-audit log --correlation-id ID,即可查找同一平台请求所关联的调用。 - 审计日志会将每个调用方记录为
token:<name>。调用会并行运行,无论是否指定目标:每个目标最多保留VMWARE_MCP_POOL_SIZE个会话(默认值为 2),每个会话都会登录到目标。如果某次调用发现所有会话都在忙碌,最多会等待 300 s。 - 所有能够访问此端点的人都会使用此服务的账户操作。 Token 用于识别调用方;它们不会授予任何平台权限。请为每个权限级别运行一个端点。
- **一个端点供多个人员或角色使用:**运行一次
vmware-audit roles enable,然后为每个 token 分配角色(vmware-audit token create NAME --role reader,或在roles.yaml中指定包含工具和目标的角色;vmware-policy ≥ 1.24.0)。角色会限制此端点上该 token 可以调用的工具;但授予的权限不会超过账户本身的权限。请参阅 vmware-policy 的 README 中的“网络调用方的角色”。
仅提供只读工具,以及你选择的写入工具:
vmware-nsx mcp --expose read --allow-write create_ip_pool
# or: VMWARE_NSX_MCP_EXPOSE=read VMWARE_NSX_MCP_ALLOW_WRITE=create_ip_pool vmware-nsx mcp
未提供的工具不会出现在客户端的工具列表中。值无效或写入工具未知时,服务会停止运行(退出码为 2)。这会限制向客户端提供的工具;但这不是授权,因此账户本身应遵循最小权限原则。
详情:skills/vmware-nsx/references/setup-guide.md(“通过 HTTPS 提供 MCP 服务”,“限制提供的工具”)。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。