mcpField
V
VMware AIops

VMware AIops

本地服务
github.com/vmware-skills云与基础设施805 天前更新

关于 VMware AIops

VMware AIops 是一个社区项目,用于通过 AI 辅助执行 vCenter 和 ESXi 虚拟机生命周期操作与部署。其 MCP 工具涵盖虚拟机、集群、网络和计划操作,并提供只读调查报告,在变更前关联状态与事件。

主要功能

  1. 01虚拟机生命周期与部署操作
  2. 02来宾系统命令执行和文件传输
  3. 03集群与网络管理
  4. 04支持回滚的多步计划
  5. 05关联信息的只读调查报告

适用场景

  1. 01从 OVA 镜像部署和配置实验室虚拟机
  2. 02克隆测试虚拟机并通过 TTL 清理
  3. 03操作前调查虚拟机、主机或数据存储问题

MCP 相关

该 MCP 服务提供 61 种 VMware 操作工具,涵盖虚拟机生命周期、部署、集群、数据存储、网络及计划执行。它还提供只读健康检查和调查报告工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vmware-skills-vmware-aiops": {
"command": "uvx",
"args": [
"vmware-aiops"
],
"env": {
"VMWARE_AIOPS_CONFIG": "<VMWARE_AIOPS_CONFIG>"
}
}
}
}
启动命令uvx vmware-aiops
需要配置的环境变量
VMWARE_AIOPS_CONFIGPath to the config file. Defaults to ~/.vmware-aiops/config.yaml.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypivmware-aiops2.4.2

工具

60

收录的工具列表 · 更新于 1 周前

参数类型必填说明
limitany否返回的警报最大数量(None = 全部)。活动警报较多时使用。
targetany否可选的配置中 vCenter 目标名称。省略时使用默认值。

详细介绍

VMware AIops

作者:Wei Zhou,VMware by Broadcom — [email protected] 这是 VMware 工程师发起的社区项目,并非 VMware 官方产品。 如需 VMware 官方开发者工具,请访问 developer.broadcom.com。

English | 中文

AI 驱动的 VMware vCenter/ESXi VM 生命周期管理与部署工具 — 61 个工具。

配套技能可处理其他所有事项:

技能范围安装
vmware-monitor只读:清单、运行状况、警报、事件、指标uv tool install vmware-monitor
vmware-storage数据存储、iSCSI、vSAN 管理uv tool install vmware-storage
vmware-vksTanzu 命名空间、TKC 集群生命周期管理uv tool install vmware-vks

只需要只读监控? 请使用 VMware-Monitor — 代码库中不含任何具破坏性的代码。

ClawHub Skills.sh Claude Code Marketplace License: MIT

升级到 2.0

2.0 将 38 个 MCP 工具重命名,使每个名称都以动词开头(例如,cluster_add_host → add_cluster_host、cluster_configure → configure_cluster、cluster_create → create_cluster)。完整的新旧名称对照表见 RELEASE_NOTES.md。其他方面均无变化:工具、参数、 安全门控和 CLI 命令都相同。如果 Agent 提示词、脚本或 ~/.vmware/rules.yaml 中引用了工具名称,请更新该名称(但不要更改已保存计划 文件中的 action 名称 — cluster_add_host、storage_rescan 等是计划操作,而非工具名称,拼写应保持不变)。不过,使用旧名称编写的拒绝 规则仍可正常工作,前提是 vmware-policy ≥ 1.18(vmware-audit policy 会列出因重命名而扩大的规则),而 vmware-pilot ≥ 1.13 会转换已保存工作流中的旧名称。 如果低于 2.0 的安装共用此 rules.yaml,也请将其升级到 vmware-policy ≥ 1.18.2:该版本会针对新旧名称检查每条规则, 因此同一个文件可同时供两者使用。

⚡ 快速调查报告(只读)

分诊 → 调查 → 采取行动,全程在一次对话中完成。五种观点鲜明的只读报告会在服务器端汇总并关联数据,并返回高信号结果(绝不会返回原始清单),让你在进行任何更改之前,先决定该去哪里查看。每种报告都可使用 --html 生成自包含的离线 HTML 快照(不包含外部资源;展开详情使用原生 <details> 折叠,无需 JavaScript)。所有报告均通过 AIops 自己的 vCenter 连接,委托给 vmware-monitor 库处理。

问题命令关联内容
“现在有什么需要关注?”(涵盖所有 vCenter)vmware-aiops attention将所有 vCenter 合并为一个全局排序的问题列表;无法访问的目标也能优雅降级处理
“有没有什么情况很严重?”(涵盖所有集群)vmware-aiops summary各集群的主机 + VM 电源状态 + 实时 CPU/内存 + 警报 → 按优先级排序的前 N 个问题 + 各集群状态
“这台 VM 周围发生了什么?”vmware-aiops investigate vm <name>VM 状态 + 主机 + 集群 + 后备数据存储 + 快照 + 警报 + 性能 + 合并后的事件时间线
“这台主机周围发生了什么?”vmware-aiops investigate host <name>主机状态 + 集群 + 其上运行的 VM + 已挂载的数据存储 + 警报 + 性能 + 关联时间线
“这个数据存储周围发生了什么?”vmware-aiops investigate datastore <name>容量/可用空间 + 挂载该数据存储的主机 + 该数据存储承载的 VM + 警报 + 关联时间线
vmware-aiops attention                            # what needs attention now, all vCenters
vmware-aiops investigate vm web-01 --hours 72     # everything around a VM, then act on it
vmware-aiops investigate vm web-01 --html         # → offline snapshot in ~/vmware-health/

通过 MCP 使用时,对应的工具为 get_cluster_health_summary、get_cross_vcenter_attention、investigate_vm、investigate_host、investigate_datastore。(需要安装 vmware-monitor。)

快速安装(推荐)

适用于 Claude Code、Cursor、Codex、Gemini CLI、Trae 和 30 多种 AI Agent:

# Via Skills.sh
npx skills add vmware-skills/VMware-AIops

# Via ClawHub
clawhub install @zw008/vmware-aiops
PyPI 安装(无需访问 GitHub)
# Install via uv (recommended)
uv tool install vmware-aiops

# Or via pip
pip install vmware-aiops

# China mainland mirror (faster)
pip install vmware-aiops -i https://pypi.tuna.tsinghua.edu.cn/simple
离线 / 隔离网络安装(从源代码安装)

本项目使用现代 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-aiops

与其他 VMware MCP 服务相比的优势

大多数开源 VMware MCP 服务(例如 bright8192/esxi-mcp-server、 giuliolibrando/vmware-vsphere-mcp-server)都是单 vCenter VM 封装器: 列出 VM、控制电源、创建快照、进行基本监控,以及使用 confirm=True 标志。它们明确 不涵盖网络、存储、Kubernetes、运维分析、负载均衡或合规性——而且“记录日志”不等于审计跟踪。

这是一个包含 11 个软件包的系列中的一个技能,覆盖整个 VMware 环境,并通过受治理的执行框架运行 每个工具:

其他 VMware MCP 服务本系列
VM 生命周期 + 监控✅✅
NSX 网络(网段/网关/NAT/路由/IPAM)❌✅ vmware-nsx
NSX 安全(DFW/组/IDS-IPS/traceflow)❌✅ vmware-nsx-security
存储(数据存储/iSCSI/vSAN)❌✅ vmware-storage
Tanzu Kubernetes(Supervisor/Namespace/TKC)❌✅ vmware-vks
Aria Operations(指标/警报/容量)❌✅ vmware-aria
AVI / NSX ALB 负载均衡 + AKO❌✅ vmware-avi
合规基线 + 配置偏差(CIS/SCG/等保/PCI)❌✅ vmware-harden
受治理的执行框架(统一审计、策略引擎、Token 预算 + 失控熔断器、分级风险层级、撤销 Token、提示词注入净化)❌✅ 每个工具均使用 vmware-policy

如果你只在一个 vCenter 中对 VM 进行电源循环,单文件服务就够用了。如果你 运行的是实际的(受监管、由 NSX 分段、跨多个域)VMware 环境,并需要一位 能通过审计人员审批的 AI 运维人员,那么本系列正适合你——请参阅 docs/compliance-ready.md。

功能概览

此技能的功能
类别工具数量
VM 生命周期开机/关机、TTL 自动删除、恢复干净状态6
部署OVA、模板、链接克隆、批量克隆/部署8
来宾操作执行命令、上传/下载文件、配置5
计划/应用多步骤规划并支持回滚4
集群创建、删除、HA/DRS 配置、添加/移除主机6
数据存储浏览文件、扫描镜像2
网络dvSwitch 端口组列表/创建、主机 VMkernel 列表/添加/移除、DF-bit MTU 路径 ping6
访问权限查看正在使用的账户,以及该账户是否拥有每个工具所需的权限(get_access_info、CLI access-info)1
CLI 与 MCP:应使用哪种模式
场景建议原因
本地/小型模型(Ollama、Qwen <32B)CLI上下文约 2K Token,而 MCP 约为 10K;小型模型难以处理大量工具架构
对 Token 敏感的工作流CLISKILL.md + Bash 工具 = 最低开销
云端模型(Claude、GPT-4o)均可两者都适用;MCP 可提供结构化 JSON 输入/输出
自动化流水线 / Agent 链接MCP类型安全的参数、结构化输出,无需解析 Shell
监控 / 存储 / K8s配套技能请参阅 vmware-monitor、vmware-storage、vmware-vks

经验法则:使用 CLI 可提高成本效益并适配小型模型。使用 MCP 可借助大模型实现结构化自动化。

架构
User (Natural Language)
  ↓
AI CLI Tool (Claude Code / Gemini / Codex / Aider / Continue / Trae / Kimi)
  ↓ reads SKILL.md / AGENTS.md / rules
  ↓
vmware-aiops CLI
  ↓ pyVmomi (vSphere SOAP API)
  ↓
vCenter Server ──→ ESXi Cluster ──→ VM
    or
ESXi Standalone Host ──→ VM
版本兼容性
vSphere / VCF 版本支持情况备注
VCF 9.1 / vSphere 9.1✅ 完全支持于 2026-05-12 发布。pyVmomi <10.0 可通过 SOAP 解析并建立连接;新的纯 REST 功能(PATCH /deployment/size、仅支持 IPv6 的 GOSC)尚未封装,相关功能请参阅 VCF Python SDK。
VCF 9.0 / vSphere 9.0✅ 完全支持pyVmomi 8.0.3+ 可通过 vSphere 9 SOAP API 建立连接。从 VCF 9 开始,pyVmomi 也已捆绑在统一的 VCF Python SDK 中。
8.0 / 8.0U1-U3✅ 完全支持CreateSnapshot_Task 已弃用 → 请使用 CreateSnapshotEx_Task
7.0 / 7.0U1-U3✅ 完全支持支持所有 API
6.7✅ 兼容向后兼容,已测试
6.5✅ 兼容向后兼容,已测试

pyVmomi 会在 SOAP 握手期间自动协商 API 版本,无需手动配置。同一代码库可无缝管理 7.0 / 8.0 / 9.0 / 9.1 环境。

Broadcom 官方参考资料

常见工作流

部署实验室环境
  1. 浏览数据存储中的 OVA 映像 → vmware-aiops datastore browse <ds> --pattern "*.ova"
  2. 从 OVA 部署虚拟机 → vmware-aiops deploy ova ./image.ova --name lab-vm --datastore ds1
  3. 在虚拟机内安装软件 → vmware-aiops vm guest-exec lab-vm --cmd /bin/bash --args "-c 'apt-get install -y nginx'" --user root
  4. 创建基准快照 → vmware-aiops vm snapshot-create lab-vm --name baseline
  5. 设置 TTL 以自动清理 → vmware-aiops vm set-ttl lab-vm --minutes 480
批量克隆以进行测试
  1. 创建计划:使用 create_vm_plan 添加多个克隆和重新配置步骤
  2. 与用户一起审核计划(显示受影响的虚拟机和不可逆操作警告)
  3. 应用计划:apply_vm_plan 按顺序执行,失败时停止
  4. 如果失败:rollback_vm_plan 撤销已执行的步骤
  5. 为所有克隆设置 TTL,以便自动清理
将虚拟机迁移到另一台主机
  1. 通过 vmware-monitor 检查虚拟机信息 → 验证电源状态和当前主机
  2. 迁移:vmware-aiops vm migrate my-vm --to-host esxi-02
  3. 验证迁移是否完成

VM 生命周期

操作命令确认vCenterESXi
开机vm power-on <name>—✅✅
正常关机vm power-off <name>两次✅✅
强制关机vm power-off <name> --force两次✅✅
重置通过 create_vm_plan 执行计划操作 reset(MCP;无 CLI 命令)—✅✅
挂起通过 create_vm_plan 执行计划操作 suspend(MCP;无 CLI 命令)—✅✅
创建 VMvm create <name> --cpu --memory --disk—✅✅
删除 VMvm delete <name>两次✅✅
重新配置vm reconfigure <name> --cpu --memory两次✅✅
创建快照vm snapshot-create <name> --name <snap>—✅✅
列出快照vm snapshot-list <name>—✅✅
恢复快照vm snapshot-revert <name> --name <snap>两次✅✅
删除快照vm snapshot-delete <name> --name <snap> [--no-wait]两次✅✅
任务状态vm task-status <task-id>—✅✅
克隆 VMvm clone <name> --new-name <new>两次✅✅
vMotionvm migrate <name> --to-host <host>两次✅❌
设置 TTLvm set-ttl <name> --minutes <n>两次✅✅
取消 TTLvm cancel-ttl <name>—✅✅
列出 TTLvm list-ttl—✅✅
清理环境vm clean-slate <name> [--snapshot baseline]两次✅✅
访客系统执行命令vm guest-exec <name> --cmd /bin/bash --args "..." --user <account>两次✅✅
访客系统执行命令(含输出)仅 MCP:run_vm_guest_command_with_output(必须提供 username)——无 CLI 命令—✅✅
访客系统上传文件vm guest-upload <name> --local f.sh --guest /tmp/f.sh --user <account>两次✅✅
访客系统下载文件vm guest-download <name> --guest /var/log/syslog --local ./syslog --user <account>—✅✅

访客系统操作要求在访客 OS 内运行 VMware Tools,并且必须明确指定访客账户——CLI 使用 --user,MCP 使用 username。没有默认账户,因此除非选择 root,否则任何调用都不会以 root 身份运行。run_vm_guest_command_with_output(仅 MCP;CLI 没有对应命令)会自动检测 Linux/Windows shell 并捕获 stdout/stderr。

计划 → 应用(多步骤操作)

对于涉及 2 个或更多步骤或 2 个或更多 VM 的复杂操作,请使用计划/应用工作流,而不是逐项执行:

步骤执行内容
1. 创建计划AI 调用 create_vm_plan——验证操作、检查 vSphere 中的目标,并生成包含回滚信息的计划
2. 审阅AI 向用户展示计划:步骤、受影响的 VM、不可逆操作警告
3. 应用apply_vm_plan 会先预览;使用 confirm=True 时按顺序执行,遇到失败即停止。每个受限步骤都由相应工具单独检查;iSCSI/重新扫描步骤会被拒绝(请使用 vmware-storage)
4. 回滚(如失败)询问用户是否回滚,然后由 rollback_vm_plan 撤销已执行的步骤(跳过不可逆步骤);每个破坏性回滚步骤都会先经过检查,检查被拒绝时回滚即停止

计划存储在 ~/.vmware-aiops/plans/ 中,成功后自动删除,并在 24 小时后自动清理。

VM 部署与置备

操作命令耗时vCenterESXi
从 OVA 部署deploy ova <path> --name <vm>数分钟✅✅
从模板部署deploy template <tmpl> --name <vm>数分钟✅✅
链接克隆deploy linked-clone --source <vm> --snapshot <snap> --name <new>数秒✅✅
挂载 ISOdeploy iso <vm> --iso "[ds] path/to.iso"即时✅✅
转换为模板deploy mark-template <vm>即时✅✅
批量克隆deploy batch-clone --source <vm> --count <n>数分钟✅✅
批量部署(YAML)deploy batch spec.yaml自动✅✅

集群管理

操作命令确认vCenterESXi
集群信息cluster info <name>—✅❌
创建集群cluster create <name> [--ha] [--drs]—✅❌
删除集群cluster delete <name>二次确认✅❌
添加主机cluster add-host <cluster> --host <host>二次确认✅❌
移除主机cluster remove-host <cluster> --host <host>二次确认✅❌
配置 HA/DRScluster configure <name> [--ha/--no-ha] [--drs/--no-drs]二次确认✅❌

remove-host 要求主机先进入维护模式;主机会从集群中移出,并作为独立主机放入数据中心的主机文件夹。

警报管理

操作命令确认vCenterESXi
列出已触发的警报alarm list [--target <t>]—✅❌
确认警报alarm acknowledge <entity> <alarm>—✅❌
清除(重置)警报alarm reset <entity> <alarm>二次确认✅❌

影响范围:vSphere 没有针对单个警报的清除 API。alarm reset 使用 AlarmManager.ClearTriggeredAlarms,会清除与指定警报实体类型(主机/VM/全部)和当前状态(红色/黄色)匹配的所有已触发警报,而不仅是指定的警报。系统会先查找指定警报(拼写错误会立即失败),输出中的 scope 字段会准确报告清除的范围。如果警报背后的条件仍然存在,已清除的警报会自动再次触发。

数据存储浏览器

功能vCenterESXi详情
浏览文件✅✅列出任意数据存储路径中的文件/文件夹
扫描映像✅✅在所有数据存储中查找 ISO、OVA、OVF、VMDK

定时扫描与通知

功能详情
守护进程基于 APScheduler,可配置扫描间隔(默认 15 分钟)
多目标扫描依次扫描所有已配置的 vCenter/ESXi 目标
扫描内容每个周期:已触发的警报、过去 lookback_hours 内的 vCenter 事件,以及 ESXi 主机日志 hostd、vmkernel、vpxa 中的新增行
主机日志增量读取:每行在每次守护进程运行期间只报告一次(守护进程重启后,会重新读取每个日志最后 500 行一次)。日志轮转,或两个周期之间新增行超过 500 行时,会添加一条 info 行,说明哪些行未扫描。读取主机日志需要 Global.Diagnostics 权限,而 vCenter 的只读角色不包含此权限;无法读取的日志会生成一条说明原因的 info 行,绝不会静默显示“一切正常”
日志分析主机日志中匹配 error、fail、critical、panic、lost access、cannot、timeout、refused、corrupt 的行——包含 critical/panic/corrupt 的行为 critical,其余为 warning
结构化日志JSONL 输出到 ~/.vmware-aiops/scan.log——记录每个问题,包括 info 行
WebhookSlack、Discord 或任意 HTTP 端点。接收每个严重问题以及每条警报/事件警告;主机日志警告仅写入扫描日志,不发送 info 行
周期摘要守护进程日志输出中每个周期一行:发现的问题(以及发送到 webhook 的数量)、无法读取的主机日志、含未扫描行的日志、失败的扫描阶段。如果任何扫描阶段失败或无法访问某个目标,会显示 Scan INCOMPLETE,绝不会显示“一切正常”
守护进程管理daemon start/stop/status、PID 文件、正常关闭

安全功能

功能详情
试运行模式(仅限 CLI)--dry-run 会打印确切的 API 调用而不执行;适用于每项 CLI 写入操作,但 deploy iso、deploy mark-template、vm cancel-ttl 和 vm guest-download 除外
计划 → 确认 → 执行 → 记录CLI 工作流:显示当前状态、确认更改、执行并写入审计日志
二次确认(仅限 CLI)破坏性 CLI 命令和部署 CLI 命令(vm 的 power-off、delete、reconfigure、snapshot-revert/delete、clone、migrate、set-ttl、clean-slate、guest-exec、guest-upload;deploy 的 ova、template、linked-clone、batch、batch-clone、mark-template;cluster 的 delete、add-host、remove-host、configure、drs-rule-set/create/delete;alarm reset)需要依次通过 2 次提示确认,且无法通过任何标志绕过
只有破坏性 MCP 工具需要确认Agent 通过 MCP 可见的 43 个写入工具中,有 23 个(所有标注为破坏性的工具,以及 migrate_vm 和网络/DRS 编写工具)会先预览,并需要 confirm=True;其余 20 个(创建、克隆、部署、开机、重新配置、创建快照、添加主机、模板和 ISO 操作、来宾下载、计划创建、确认警报)会在首次调用时执行。没有审批层级,也没有只读开关。写入操作是否生效取决于 vCenter 账户的权限,操作记录则由审计跟踪保存。请参阅什么能保护你
拒绝操作记录被拒绝的 CLI 确认会记录在审计跟踪中
审计跟踪所有操作都会连同前后状态记录到 ~/.vmware-aiops/audit.log(JSONL)
输入验证会验证 VM 名称、CPU(1-128)、内存(128-1048576 MB)和磁盘(1-65536 GB)
密码保护加载 .env 文件时会检查权限;密码不会出现在 shell 历史记录中
支持自签名 SSL 证书verify_ssl: false — 仅适用于隔离实验环境中使用自签名证书的 ESXi;生产环境应使用由 CA 签名的证书
提示词注入防护输出前会截断 vSphere 事件消息和主机日志、移除控制字符,并用边界标记包裹
Webhook 数据范围默认禁用。配置后,守护进程只会向你的 URL 发送:每个严重问题(警报、事件、包含 critical/panic/corrupt 的 ESXi 日志行、无法连接的目标)以及每条警告警报/事件——主机日志警告只保留在扫描日志中,且永远不会发送 info 行。每个问题都包含其实体名称和消息:经过清理的警报、事件或 ESXi 日志文本,或连接错误;其中可能包含主机名、IP 地址和用户名。不会发送该技能配置或 .env 中的凭据
等待任务完成所有异步操作都会等待完成并报告结果
状态验证操作前检查(VM 是否存在、电源状态是否正确)
vCenter 与 ESXi 对比
功能vCenter独立 ESXi
vMotion 迁移✅❌
跨主机克隆✅❌
集群管理✅❌
所有 VM 生命周期操作✅✅
OVA/Template/Linked Clone 部署✅✅
数据存储浏览与镜像扫描✅✅
快照✅✅
来宾操作✅✅

清单、警报、事件、传感器、主机服务和扫描现已移至 vmware-monitor。

能保护你的措施

上表列出了两个不同的操作面,值得明确说明哪些保护措施适用于哪些操作面,因为搞错这一点比没有保护措施更糟——你相信某个防护措施后,就会停止采取其他补救措施。

在命令行中,破坏性命令会要求确认两次,且没有绕过标志;--dry-run 会预览每项写入操作,但 deploy iso、deploy mark-template、vm cancel-ttl 和 vm guest-download 除外。这可以防止人类输错命令,但无法防范 Agent,因为 Agent 可以通过 yes | 满足这两次确认。

通过 MCP,所有标记为破坏性的工具,加上 migrate_vm 和网络/DRS 配置工具——43 个写入工具中共有 23 个,包括 power_off_vm、migrate_vm、delete_cluster、快照、虚拟机客户机、TTL、Clean Slate 和计划工具,以及 reset_vcenter_alarm——都接受一个名为 confirm 的参数,其默认行为是不执行写入的预览:直接调用会返回影响范围,不会更改任何内容。confirm=True 会重新测量;如果预览发现阻碍(例如虚拟机未运行 VMware Tools、目标主机处于维护模式、集群中仍有主机、快照缺失或重复),或无法读取某些内容,就会拒绝执行,并记录一条说明性错误,作为失败审计。delete_vm 还要求传回预览中回显的 acknowledge_with;如果虚拟机自预览后发生变化,或处于开机或挂起状态,就会拒绝执行。其余 20 个写入工具——创建、克隆、部署、开机、重新配置、创建快照、添加主机、模板和 ISO 操作、客户机下载、创建计划、确认警报——首次调用时就会执行。确认不等于授权,因此我们移除了 VMWARE_READ_ONLY 开关(它只在 MCP 操作路径上生效,而任何拥有 shell 的 Agent 都能通过命令行绕过它)。预览所能提供的保障更有限:Agent 不会破坏它尚未检查过的内容。

**真正决定写入能否执行的是 vCenter/ESXi 服务账户。**为技能配置一个仅拥有工作所需权限的账户;其余操作由 vCenter 在所有操作面上自行拒绝,无法从技能内部绕过。若要让 Agent 只读运行,请为其配置只读的 vCenter 角色——只需做出这一个决定,就能在权限判定处强制执行。调用方看到结果之前,每次调用都会记录到 ~/.vmware/audit.db 中,你可以据此了解发生了什么。~/.vmware/rules.yaml 中可选的 deny 规则会在每次 MCP 调用前检查,并可拒绝操作,例如拒绝对标记为 environment: production 的目标进行写入。随附的基准配置不会拒绝任何操作;这些规则在同一进程内运行,是叠加在 RBAC 之上的防护措施,而非替代品。

**run_vm_guest_command 是最需要谨慎考虑的工具。**它会使用提供的凭据,在客户机操作系统中运行调用方提供的命令;必须指定 username(没有默认账户),且命令内容不受任何限制。客户机账户是独立于 vCenter 的另一个授权边界——只读 vCenter 角色不会限制此工具在虚拟机内部的操作。该技能不会存储客户机凭据:通过 MCP 使用时,凭据会作为工具参数被 Agent 看到(审计记录中的密码会被隐藏)。请使用权限最小化的客户机账户,不要向 Agent 提供其不需要的客户机凭据。upload_vm_guest_file 会读取服务器进程有权读取的任何本地文件。

各工具是否受控的完整清单见 references/capabilities.md;工具数量由测试套件对照实时工具注册表核验,而非手动维护。


故障排除

“未找到虚拟机”错误

vSphere 中的虚拟机名称区分大小写。请使用 vmware-monitor inventory vms 中显示的确切名称。

Guest exec 返回空输出

使用 run_vm_guest_command_with_output 代替 run_vm_guest_command——它会自动捕获 stdout/stderr。基础的 run_vm_guest_command 只返回退出代码。

部署 OVA 超时

大型 OVA 文件(>10GB)可能会超过默认的 120s 超时时间。上传通过 HTTP NFC 租约进行——请确保运行 vmware-aiops 的机器与 ESXi 之间的网络稳定。

计划应用中途失败

运行 vmware-aiops plan list 查看失败的计划状态。询问用户是否要使用 rollback_vm_plan 回滚。回滚期间会跳过不可逆步骤(delete_vm)。

连接被拒绝 / SSL 错误
  1. 验证目标是否可访问:vmware-aiops doctor
  2. 对于自签名证书:在 config.yaml 中设置 verify_ssl: false(仅限实验室环境)
doctor 报告“no vSphere role”,或每条命令都失败并提示“session is not authenticated”

该账户可以登录,但没有 vSphere 角色,因此 vCenter 不会为其创建会话(AIops#47)。请在 vCenter 根文件夹中为其分配角色(只读或更高权限):Administration > Access Control > Global Permissions。更改密码无济于事。vmware-aiops doctor 会明确报告此情况,而 attention 会将此类目标计为未读(总体至少为 WARN)。


支持的 AI 平台

平台状态配置文件AI 模型
Claude Code✅ 原生 Skillskills/vmware-aiops/SKILL.mdAnthropic Claude
Gemini CLI✅ 上下文文件 + MCPskills/vmware-aiops/SKILL.mdGoogle Gemini
OpenAI Codex CLI✅ Skill + AGENTS.mdskills/vmware-aiops/SKILL.mdOpenAI GPT
Aider✅ 约定skills/vmware-aiops/SKILL.md任意(云端 + 本地)
Continue CLI✅ 规则skills/vmware-aiops/SKILL.md任意(云端 + 本地)
Trae IDE✅ 规则skills/vmware-aiops/SKILL.mdClaude/DeepSeek/GPT-4o/Doubao
Kimi Code CLI✅ Skillskills/vmware-aiops/SKILL.mdMoonshot Kimi
MCP 服务✅ MCP 协议vmware_aiops/mcp_server/任意 MCP 客户端
Python CLI✅ 独立运行N/AN/A
平台比较
功能Claude CodeGemini CLICodex CLIAiderContinueTrae IDEKimi CLI
云端 AIAnthropicGoogleOpenAI任意任意多种Moonshot
本地模型———OllamaOllama——
Skill 系统SKILL.md上下文文件SKILL.md—规则规则SKILL.md
MCP 支持原生原生通过 Skills第三方原生——
免费层级—60 req/min—自托管自托管——
MCP 服务集成

vmware-aiops MCP 服务适用于任何兼容 MCP 的 Agent 或工具。可直接使用的配置模板位于 examples/mcp-configs/。

Agent / 工具本地模型支持配置模板集成指南
小怪(Xiaoguai)✅ 可自托管,支持任何大模型MCP 配置指南
Goose✅ Ollama、LM Studiogoose.json指南
LocalCowork✅ 完全离线localcowork.json指南
mcp-agent✅ Ollama、vLLMmcp-agent.yaml指南
VS Code Copilot—vscode-copilot.json指南
Cursor—cursor.json指南
Continue✅ Ollamacontinue.yaml指南
Claude Code—claude-code.json—

小怪(Xiaoguai) —— 来自同一位维护者的可自托管、审计优先的 Agent 平台(Rust,单一二进制文件 + 内嵌 SQLite)。它将 vmware-aiops MCP 服务作为其中一个工具箱运行;它既是 MCP 使用方,也是 MCP 服务,其 HMAC 链式审计日志和人在环路中的审批关卡,与本工具自身的审计 + 确认设计相契合。请参阅其 MCP 集成指南。

完全本地运行(无需云 API):

# Aider + Ollama + vmware-aiops (via SKILL.md)
aider --conventions skills/vmware-aiops/SKILL.md --model ollama/qwen2.5-coder:32b

# Any MCP agent + local model + vmware-aiops MCP server
# See examples/mcp-configs/ for your agent's config format

安装

步骤 0:先决条件
# Python 3.10+ required
python3 --version

# Node.js 18+ required for Gemini CLI and Codex CLI
node --version
步骤 1:克隆并安装 Python 后端

所有平台共用同一个 Python 后端。

git clone https://github.com/vmware-skills/VMware-AIops.git
cd VMware-AIops
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
步骤 2:配置
mkdir -p ~/.vmware-aiops
cp config.example.yaml ~/.vmware-aiops/config.yaml
# Edit config.yaml with your vCenter/ESXi targets

通过 .env 文件设置密码(推荐):

# Use the template
cp .env.example ~/.vmware-aiops/.env

# Edit and fill in your passwords, then lock permissions
chmod 600 ~/.vmware-aiops/.env

安全提示:建议使用 .env 文件,而不要通过命令行 export 设置密码,以避免密码出现在 shell 历史记录中。.env 文件应设置为 chmod 600(仅所有者可读写)。

密码环境变量命名约定:

VMWARE_{TARGET_NAME_UPPER}_PASSWORD
# Replace hyphens with underscores, UPPERCASE
# Example: target "home-esxi" → VMWARE_HOME_ESXI_PASSWORD
# Example: target "prod-vcenter" → VMWARE_PROD_VCENTER_PASSWORD
安全最佳实践
  • 绝不在脚本或配置文件中硬编码密码
  • 绝不将密码作为命令行参数传递(可通过 ps 查看)
  • 始终使用 ~/.vmware-aiops/.env,并设置权限为 chmod 600
  • 始终通过 config.yaml 配置连接——凭据会自动从 .env 加载
  • 配置文件内容:config.yaml 存储目标主机名、端口以及 .env 文件的引用。它不包含密码或令牌。所有机密信息仅存储在 .env 中
  • TLS:默认启用。仅在隔离的实验室环境中,针对使用自签名证书的 ESXi 主机禁用
  • Webhook:默认禁用。启用后,守护进程只会向你自行配置的 URL 发送信息——不会发送到任何第三方服务——发送内容包括每个严重问题(警报、事件、与严重/紧急/损坏相匹配的 ESXi 日志行、无法连接的目标)以及每条警报/事件警告;主机日志警告会保留在扫描日志中,info 行则不会发送。负载包含完整的问题文本(实体名称、警报名称、事件消息、ESXi 日志摘录、连接错误),其中可能包含主机名、IP 地址和用户名;不会包含配置文件或 .env 中的任何凭据
  • 最小权限:使用权限最少的专用 vCenter 服务账户。仅用于监控时,建议使用只读的 VMware-Monitor
  • 提示词注入防护:所有来自 vSphere 的内容都会在输出前进行截断、剥除控制字符并用边界标记包裹
  • 代码审查:建议在部署到生产环境前审查源代码和提交历史记录
  • 生产安全:生产环境请改用只读的 VMware-Monitor。AI Agent 可能会误解上下文并执行意料之外的破坏性操作——现实中的事故表明,缺乏适当隔离的 AI 驱动基础设施工具可能会删除生产数据库和整个环境。VMware-Monitor 从代码层面消除了这一风险:其代码库中不存在任何破坏性功能
第 3 步:连接 AI 工具

选择以下一项(或多项):


选项 A:Claude Code

方法 1:Skills.sh 或 ClawHub(推荐)

任一安装程序都会自动将技能安装到 Claude Code 的技能目录中:

npx skills add vmware-skills/VMware-AIops
# or
clawhub install @zw008/vmware-aiops

方法 2:手动安装技能

git clone https://github.com/vmware-skills/VMware-AIops.git
cd VMware-AIops

# Copy the skill into Claude Code's personal skills directory
mkdir -p ~/.claude/skills/vmware-aiops
cp -r skills/vmware-aiops/. ~/.claude/skills/vmware-aiops/

如需访问工具(而不仅仅是技能上下文),还需注册 MCP 服务:

claude mcp add vmware-aiops -- vmware-aiops mcp

重启 Claude Code,然后:

> Show me all VMs on esxi-lab.example.com

提交到官方市场

此插件也可以提交到 Anthropic 官方插件目录,供公众发现。


选项 B:Gemini CLI
# Install Gemini CLI
npm install -g @google/gemini-cli

# Load the skill as project context (Gemini CLI reads GEMINI.md on startup)
cp skills/vmware-aiops/SKILL.md ./GEMINI.md

如需访问工具(而不仅仅是上下文),请在 ~/.gemini/settings.json 中注册 MCP 服务:

{
  "mcpServers": {
    "vmware-aiops": {
      "command": "vmware-aiops",
      "args": ["mcp"],
      "env": { "VMWARE_AIOPS_CONFIG": "~/.vmware-aiops/config.yaml" }
    }
  }
}

然后启动 Gemini CLI:

gemini
> Show me all VMs on my ESXi host

选项 C:OpenAI Codex CLI
# Install Codex CLI
npm i -g @openai/codex
# Or on macOS:
# brew install --cask codex

# Copy skill to Codex skills directory
mkdir -p ~/.codex/skills/vmware-aiops
cp skills/vmware-aiops/SKILL.md ~/.codex/skills/vmware-aiops/SKILL.md

# Copy AGENTS.md to project root
cp skills/vmware-aiops/SKILL.md ./AGENTS.md

然后启动 Codex CLI:

codex --enable skills
> List all VMs on my ESXi

选项 D:Aider(支持本地模型)
# Install Aider
pip install aider-chat

# Install Ollama for local models (optional)
# macOS:
brew install ollama
ollama pull qwen2.5-coder:32b

# Run with cloud API
aider --conventions skills/vmware-aiops/SKILL.md

# Or with local model via Ollama
aider --conventions skills/vmware-aiops/SKILL.md \
  --model ollama/qwen2.5-coder:32b

选项 E:Continue CLI(支持本地模型)
# Install Continue CLI
npm i -g @continuedev/cli

# Copy rules file
mkdir -p .continue/rules
cp skills/vmware-aiops/SKILL.md .continue/rules/vmware-aiops.md

为本地模型配置 ~/.continue/config.yaml:

models:
  - name: local-coder
    provider: ollama
    model: qwen2.5-coder:32b

然后:

cn
> Check ESXi health and alarms

选项 F:Trae IDE

将规则文件复制到项目的 .trae/rules/ 目录:

mkdir -p .trae/rules
cp skills/vmware-aiops/SKILL.md .trae/rules/project_rules.md

Trae IDE 的 Builder Mode 会在启动时读取 .trae/rules/ 中的 Markdown 文件。

注意:你也可以在 Trae IDE 中安装 Claude Code 扩展,并直接使用 .claude/skills/ 格式。


选项 G:Kimi Code CLI
# Copy skill file to Kimi skills directory
mkdir -p ~/.kimi/skills/vmware-aiops
cp skills/vmware-aiops/SKILL.md ~/.kimi/skills/vmware-aiops/SKILL.md

选项 H:MCP 服务(Glama / Claude Desktop)

MCP 服务通过 Model Context Protocol 将 VMware 操作作为工具提供。可与任何兼容 MCP 的客户端配合使用(Claude Desktop、Cursor 等)。

执行 uv tool install vmware-aiops 后,只需一条命令即可启动 MCP 服务(v1.5.15+):

# Recommended — single command, no network re-resolve
vmware-aiops mcp

# With a custom config path
VMWARE_AIOPS_CONFIG=/path/to/config.yaml vmware-aiops mcp

Claude Desktop 配置(claude_desktop_config.json):

{
  "mcpServers": {
    "vmware-aiops": {
      "command": "vmware-aiops",
      "args": ["mcp"],
      "env": {
        "VMWARE_AIOPS_CONFIG": "/path/to/config.yaml"
      }
    }
  }
}
替代方式:uvx(无需安装)或旧版入口点
# Run without installing (requires PyPI access each launch)
uvx --from vmware-aiops vmware-aiops mcp

# Legacy entry point (still works, kept for backward compatibility)
vmware-aiops-mcp

处于企业 TLS 代理之后? uvx 可能会因 invalid peer certificate: UnknownIssuer 而失败。 请使用上面推荐的 vmware-aiops mcp 形式(无需网络),或设置 UV_NATIVE_TLS=true。


选项 I:独立 CLI(无需 AI)
# Already installed in Step 1
source .venv/bin/activate

vmware-aiops vm power-on my-vm --target home-esxi
vmware-aiops deploy ova ./ubuntu.ova --name my-vm --target home-esxi
vmware-aiops datastore browse datastore1 --target home-esxi

更新 / 升级

已经安装?重新运行对应渠道的安装命令即可获取最新版本:

安装渠道更新命令
ClawHubclawhub install @zw008/vmware-aiops
Skills.shnpx skills add vmware-skills/VMware-AIops
Git 克隆cd VMware-AIops && git pull origin main && uv pip install --no-sources -e .(如果不加 --no-sources,uv 会查找同级目录下的 ../VMware-Monitor 检出)
uvuv tool install vmware-aiops --force

查看当前版本:vmware-aiops --version


中国云模型

适用于偏好使用国内云 API 或访问海外服务受限的中国用户。

DeepSeek

经济实惠,编码能力强。

# Set DeepSeek API key (get from https://platform.deepseek.com)
export DEEPSEEK_API_KEY="your-key"

# Run with Aider
aider --conventions skills/vmware-aiops/SKILL.md \
  --model deepseek/deepseek-coder

持久化配置 ~/.aider.conf.yml:

model: deepseek/deepseek-coder
conventions: skills/vmware-aiops/SKILL.md
Qwen(Alibaba Cloud)

Alibaba Cloud 的编码模型,提供免费套餐。

# Set DashScope API key (get from https://dashscope.console.aliyun.com)
export DASHSCOPE_API_KEY="your-key"

aider --conventions skills/vmware-aiops/SKILL.md \
  --model qwen/qwen-coder-plus

或通过兼容 OpenAI 的端点使用:

export OPENAI_API_BASE="https://dashscope.aliyuncs.com/compatible-mode/v1"
export OPENAI_API_KEY="your-dashscope-key"

aider --conventions skills/vmware-aiops/SKILL.md \
  --model qwen-coder-plus-latest
Doubao(ByteDance)
export OPENAI_API_BASE="https://ark.cn-beijing.volces.com/api/v3"
export OPENAI_API_KEY="your-ark-key"

aider --conventions skills/vmware-aiops/SKILL.md \
  --model your-doubao-endpoint-id
使用 Continue CLI

配置 ~/.continue/config.yaml:

# DeepSeek
models:
  - name: deepseek-coder
    provider: openai-compatible
    apiBase: https://api.deepseek.com/v1
    apiKey: your-deepseek-key
    model: deepseek-coder

# Qwen
models:
  - name: qwen-coder
    provider: openai-compatible
    apiBase: https://dashscope.aliyuncs.com/compatible-mode/v1
    apiKey: your-dashscope-key
    model: qwen-coder-plus-latest

本地模型(Aider + Ollama)

适用于完全离线运行——无需云 API、无需互联网,保障完全隐私。

Aider + Ollama + 本地 Qwen/DeepSeek 非常适合物理隔离环境。

第 1 步:安装 Ollama
# macOS
brew install ollama

# Linux — download from https://ollama.com/download and install manually
# See https://github.com/ollama/ollama for platform-specific instructions
第 2 步:拉取模型
模型命令大小备注
Qwen 2.5 Coder 32Bollama pull qwen2.5-coder:32b~20GB最佳本地编码模型
Qwen 2.5 Coder 7Bollama pull qwen2.5-coder:7b~4.5GB低内存占用选项
DeepSeek Coder V2ollama pull deepseek-coder-v2~8.9GB推理能力强
CodeLlama 34Bollama pull codellama:34b~19GBMeta 编码模型

硬件要求:32B → 约需 20GB VRAM(或使用 CPU 时需 32GB RAM)。7B → 需 8GB RAM。

第 3 步:使用 Aider 运行
pip install aider-chat
ollama serve

# Aider + local Qwen (recommended)
aider --conventions skills/vmware-aiops/SKILL.md \
  --model ollama/qwen2.5-coder:32b

# Aider + local DeepSeek
aider --conventions skills/vmware-aiops/SKILL.md \
  --model ollama/deepseek-coder-v2

# Low-memory option
aider --conventions skills/vmware-aiops/SKILL.md \
  --model ollama/qwen2.5-coder:7b

持久化配置 ~/.aider.conf.yml:

model: ollama/qwen2.5-coder:32b
conventions: skills/vmware-aiops/SKILL.md
本地架构
User → Aider CLI → Ollama (localhost:11434) → Qwen / DeepSeek local model
  │                                                    ↓
  │                                          reads AGENTS.md instructions
  │                                                    ↓
  └──────────────────────────────→ vmware-aiops CLI ──→ ESXi / vCenter

提示:本地模型完全离线运行——非常适合物理隔离环境或严格的数据合规要求。


CLI 参考

# Diagnostics
vmware-aiops doctor                   # Check environment, config, connectivity
vmware-aiops doctor --skip-auth       # Skip vSphere auth check (faster)
vmware-aiops access-info [--tool <mcp-tool>] [--target <name>]  # Account in use + privileges per tool

# MCP Config Generator
vmware-aiops mcp-config generate --agent goose        # Generate config for Goose
vmware-aiops mcp-config generate --agent claude-code  # Generate config for Claude Code
vmware-aiops mcp-config list                          # List all supported agents

# VM operations
vmware-aiops vm power-on my-vm                                 # Power on
vmware-aiops vm power-off my-vm                                # Graceful shutdown (2x confirm)
vmware-aiops vm power-off my-vm --force                        # Force power off (2x confirm)
vmware-aiops vm create my-new-vm --cpu 4 --memory 8192 --disk 100  # Create VM
vmware-aiops vm delete my-vm                                   # Delete VM (asks twice; --dry-run previews)
vmware-aiops vm reconfigure my-vm --cpu 4 --memory 8192        # Reconfigure (2x confirm)
vmware-aiops vm snapshot-create my-vm --name "before-upgrade"  # Create snapshot
vmware-aiops vm snapshot-list my-vm                            # List snapshots
vmware-aiops vm snapshot-revert my-vm --name "before-upgrade"  # Revert snapshot
vmware-aiops vm snapshot-delete my-vm --name "before-upgrade"  # Delete snapshot (waits ≤30 min for consolidation)
vmware-aiops vm snapshot-delete my-vm --name "old-big" --no-wait  # Fire async, return a task id
vmware-aiops vm task-status task-1234                          # Poll an async task by id
vmware-aiops vm clone my-vm --new-name my-vm-clone             # Clone VM
vmware-aiops vm migrate my-vm --to-host esxi-02                # vMotion
vmware-aiops vm set-ttl my-vm --minutes 60                     # Auto-delete in 60 min
vmware-aiops vm cancel-ttl my-vm                               # Cancel TTL
vmware-aiops vm list-ttl                                       # Show all TTLs
vmware-aiops vm clean-slate my-vm --snapshot baseline          # Revert to baseline (2x confirm)

# Guest Operations (requires VMware Tools in guest)
vmware-aiops vm guest-exec my-vm --cmd /bin/bash --args "-c 'whoami'" --user root
vmware-aiops vm guest-upload my-vm --local ./script.sh --guest /tmp/script.sh --user root
vmware-aiops vm guest-download my-vm --guest /var/log/syslog --local ./syslog.txt --user root

# Plan → Apply (multi-step operations)
vmware-aiops plan list                                        # List pending/failed plans

# Deploy
vmware-aiops deploy ova ./ubuntu.ova --name my-vm --datastore ds1      # Deploy from OVA
vmware-aiops deploy template golden-ubuntu --name new-vm               # Deploy from template
vmware-aiops deploy linked-clone --source base-vm --snapshot clean --name test-vm  # Linked clone (seconds)
vmware-aiops deploy iso my-vm --iso "[datastore1] iso/ubuntu-22.04.iso"  # Attach ISO
vmware-aiops deploy mark-template golden-vm                            # Convert VM to template
vmware-aiops deploy batch-clone --source base-vm --count 5 --prefix lab  # Batch clone
vmware-aiops deploy batch deploy.yaml                                  # Batch deploy from YAML spec

# Cluster
vmware-aiops cluster info my-cluster                                   # Cluster details (HA/DRS status)
vmware-aiops cluster create my-cluster --ha --drs                      # Create cluster with HA+DRS
vmware-aiops cluster delete my-cluster                                 # Delete cluster (2x confirm)
vmware-aiops cluster add-host my-cluster --host esxi-03                # Add host to cluster (2x confirm)
vmware-aiops cluster remove-host my-cluster --host esxi-03             # Remove host (2x confirm)
vmware-aiops cluster configure my-cluster --ha --drs                   # Configure HA/DRS (2x confirm)

# Alarm management
vmware-aiops alarm list                                                # List triggered alarms
vmware-aiops alarm acknowledge esxi-01 "Host memory usage"             # Acknowledge alarm
vmware-aiops alarm reset esxi-01 "Host memory usage"                   # Clear alarms (2x confirm; clears ALL matching entity type + status)

# Datastore (browse and scan only — iSCSI/vSAN moved to vmware-storage)
vmware-aiops datastore browse datastore1 --path "iso/"                 # Browse datastore
vmware-aiops datastore scan-images --target home-esxi                  # Scan all datastores for images

# Scan
vmware-aiops scan now              # One-time scan of alarms and events (host logs: daemon only)

# Daemon
vmware-aiops daemon start          # Start scanner
vmware-aiops daemon status         # Check status
vmware-aiops daemon stop           # Stop daemon

# Companion skills for other operations:
#   vmware-monitor: inventory, alarms, events, sensors
#   vmware-storage: datastores, iSCSI, vSAN
#   vmware-vks:     Tanzu/TKC cluster lifecycle

配置

所有选项请参见 config.example.yaml。

部分键默认值说明
targetsname—易读名称
targetshost—vCenter/ESXi 主机名或 IP
targetstypevcentervcenter 或 esxi
targetsport443连接端口
targetsverify_ssltrue验证目标的 TLS 证书(仅对使用自签名证书的实验室主机设为 false)
scannerinterval_minutes15扫描频率
scannerseverity_thresholdwarning最低严重级别:critical/warning/info
scannerlookback_hours1向前追溯的时间范围
scannerlog_types—没有任何代码会读取此项——守护进程始终读取 hostd、vmkernel 和 vpxa 主机日志。设置此项不会产生任何影响
notifylog_file~/.vmware-aiops/scan.logJSONL 日志输出
notifywebhook_url—Webhook 端点(Slack、Discord 等)

项目结构

VMware-AIops/
├── skills/                        # Skills index (npx skills add)
│   └── vmware-aiops/
│       ├── SKILL.md               # Slimmed-down skill (progressive disclosure)
│       └── references/            # Detailed docs loaded on-demand
│           ├── capabilities.md    # Full capabilities tables
│           ├── cli-reference.md   # Complete CLI reference
│           └── setup-guide.md     # Install, security, AI platforms
├── vmware_aiops/                  # Python backend
│   ├── config.py                  # YAML + .env config
│   ├── connection.py              # Multi-target pyVmomi
│   ├── cli/                       # Typer CLI (double confirm)
│   ├── ops/                       # Operations
│   │   ├── inventory.py           # VMs, hosts, datastores, clusters
│   │   ├── health.py              # Alarms, events, sensors
│   │   ├── vm_lifecycle.py        # VM CRUD, snapshots, clone, migrate
│   │   ├── vm_deploy.py           # OVA, template, linked clone, batch deploy
│   │   └── datastore_browser.py   # Datastore browsing, image discovery
│   ├── scanner/                   # Log scanning daemon
│   ├── notify/                    # Notifications (JSONL + webhook)
│   └── mcp_server/                # MCP server wrapper
│       ├── server.py              # FastMCP server with tools
│       └── __main__.py
├── examples/mcp-configs/          # MCP client config templates
├── tests/                         # Test suite
├── smithery.yaml                  # Smithery marketplace config
├── RELEASE_NOTES.md
├── config.example.yaml
└── pyproject.toml

API 覆盖范围

基于 pyVmomi 构建(vSphere Web Services API / SOAP)。

API 对象用途
vim.VirtualMachine虚拟机生命周期、快照、克隆、迁移
vim.HostSystemESXi 主机信息、传感器、服务
vim.Datastore存储容量、类型、可访问性
vim.host.DatastoreBrowser文件浏览、映像发现(ISO/OVA/VMDK)
vim.OvfManagerOVA 导入和部署
vim.ClusterComputeResource集群、DRS、HA
vim.Network网络列表
vim.alarm.AlarmManager活动警报监控
vim.event.EventManager事件/日志查询

相关项目

技能范围工具安装
vmware-aiops虚拟机生命周期、部署、客户机操作、集群、数据存储浏览、分类处理49uv tool install vmware-aiops
vmware-monitor只读监控、警报、事件、调查包27uv tool install vmware-monitor
vmware-storage数据存储、iSCSI、vSAN11uv tool install vmware-storage
vmware-vksTanzu 命名空间、TKC 集群生命周期20uv tool install vmware-vks
vmware-nsxNSX 网络:网段、网关、NAT、路由、IPAM33uv tool install vmware-nsx-mgmt
vmware-nsx-securityDFW 策略/规则、安全组、Traceflow、IDS/IPS21uv tool install vmware-nsx-security
vmware-ariaAria Operations 指标、警报、容量、异常28uv tool install vmware-aria
vmware-aviAVI(NSX ALB)负载均衡、AKO Kubernetes 运维28uv tool install vmware-avi
vmware-harden合规基线(CIS / vSphere SCG / 等保 / PCI-DSS)、偏差检测6uv tool install vmware-harden

故障排查与贡献

如果遇到任何错误或问题,请将错误消息、日志或屏幕截图发送至 [email protected]。欢迎贡献,欢迎加入我们,共同维护和改进此项目!

远程访问(HTTPS)和限制工具

默认情况下,vmware-aiops 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-aiops 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 为例;任何支持 streamable HTTP 和自定义标头的 MCP 客户端都可以):

claude mcp add --transport http vmware-aiops https://mcp.example.com:8443/mcp \
    --header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
  "mcpServers": {
    "vmware-aiops": {
      "type": "http",
      "url": "https://mcp.example.com:8443/mcp",
      "headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
    }
  }
}
  • 没有 token 时服务不会启动;如果 Host/Origin 的值不在 --public-name 范围内,服务会拒绝请求;绑定前还会检查未认证请求是否会收到 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 查找对应某个平台请求的调用。
  • 读取或写入此服务文件的工具(此处包括客户机文件上传/下载、OVA 和部署规格文件)不会触及其配置、token、审计日志或 TLS 密钥;通过网络使用时,除非 VMWARE_MCP_FILE_ROOT 指定了供这些工具使用的目录,否则这些工具默认关闭(vmware-policy ≥ 1.23.1)。
  • 审计日志会将每个调用方记录为 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-aiops mcp --expose read --allow-write acknowledge_vcenter_alarm
# or: VMWARE_AIOPS_MCP_EXPOSE=read VMWARE_AIOPS_MCP_ALLOW_WRITE=acknowledge_vcenter_alarm vmware-aiops mcp

未提供的工具不会出现在客户端的工具列表中。值无效或指定了未知的写入工具时,服务会停止运行 (退出代码 2)。这会限制向客户端提供的工具,但不构成授权,因此账户本身应遵循最小权限原则。

详情:skills/vmware-aiops/references/setup-guide.md(“通过 HTTPS 提供 MCP 服务”、“限制提供的工具”)。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。