mcpField
V
VMware AIops

VMware AIops

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

关于 VMware AIops

VMware AIops 是用于管理 VMware vCenter/ESXi 虚拟机生命周期与部署的 CLI 和 MCP 服务。它将运维操作、只读调查报告及带治理机制的计划执行流程结合起来。

主要功能

  1. 01虚拟机生命周期操作
  2. 02OVA、模板和克隆部署
  3. 03来宾系统命令与文件操作
  4. 04支持回滚的多步计划
  5. 05集群与网络管理
  6. 06关联式只读报告

适用场景

  1. 01部署并配置实验室虚拟机
  2. 02批量克隆虚拟机用于测试
  3. 03将虚拟机迁移到其他主机
  4. 04调查资源相关的告警与性能

MCP 相关

它向 MCP 客户端提供 VMware 管理和调查工具,包括部署、生命周期、计划执行及报告功能。结构化参数与输出适用于自动化工作流。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"zw008-vmware-aiops": {
"command": "uvx",
"args": [
"vmware-aiops"
]
}
}
}
启动命令uvx vmware-aiops

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

安装包
pypivmware-aiops1.8.10

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。