mcpField
V
VMware Monitor

VMware Monitor

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

关于 VMware Monitor

VMware Monitor 是面向 vCenter 和 ESXi 运维人员的只读监控服务。它将清单与健康数据整合为关联报告,并通过测试将 vSphere 调用限制在经审查的允许列表内。

主要功能

  1. 01vCenter 和 ESXi 清单查询
  2. 02告警、事件与硬件健康监控
  3. 03VM、主机和数据存储调查报告
  4. 04跨 vCenter 问题汇总
  5. 05离线 HTML 报告快照

适用场景

  1. 01排查集群和 vCenter 的待处理问题
  2. 02追踪 VM 或主机相关事件
  3. 03检查数据存储容量与关联对象

MCP 相关

通过 MCP 暴露 VMware 查询工具,供客户端读取清单、健康信息和调查报告。代码库不包含改变 vCenter 或 ESXi 状态的操作。

配置

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

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

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

安装包
pypivmware-monitor1.8.8

工具

还没有获取到工具列表

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

详细介绍

VMware Monitor

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

English | 中文

只读 VMware vCenter/ESXi 监控 — 33 个工具。此代码库中不存在任何破坏性操作,并且有测试对此进行强制检查。

为何单独设立仓库? VMware Monitor 完全独立于 VMware-AIops。此代码库中不存在关机、删除、创建、重新配置、创建/还原/删除快照、克隆或迁移功能——这不是提示词限制,而是功能缺失。

如何精确地强制执行。 tests/eval/regression/test_read_only_enforcement.py 使用 ast 解析每个源文件,并要求软件包调用的每个 vSphere 方法都出现在经过审查的允许列表中,同时与 pyVmomi 自身的类型元数据进行交叉核对:任何返回 vim.Task 的方法,或在 vCenter 上需要非只读权限的方法,都会导致检查失败,除非有人明确记录了原因。目前该允许列表包含 14 个方法。这项检查针对的是已编写的代码——它无法识别运行时拼接的方法名,也不会自动运行,因此只有在有人运行测试套件时才能发挥作用。若要获得完全不依赖此仓库的保障,请让技能使用仅拥有 vCenter 内置只读角色的专用帐户(哪些读取操作需要更高权限)。

“只读”不涵盖什么。 这是对 vCenter/ESXi 的说明:没有任何代码路径会更改其状态。在 vCenter 上,该技能只会打开自己的登录会话和短期查询句柄,并在使用后释放。它确实会在本地写入内容:~/.vmware-monitor/config.yaml 和 .env(通过 init 写入;加载时,.env 中的明文密码会被改写为 b64: 格式)、审计日志(MCP 调用写入 ~/.vmware/audit.db,命令行命令写入 ~/.vmware-monitor/audit.log)、位于 ~/vmware-health/ 的 --html 快照,以及——仅在执行 daemon start 后——daemon.pid、scan.log,并向你配置的 webhook 发送请求。完整列表见:设置指南。

ClawHub Skills.sh Claude Code Marketplace License: MIT

配套技能
技能范围工具安装
vmware-aiops ⭐ 入口VM 生命周期、部署、来宾操作、集群49uv tool install vmware-aiops
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 微分段、安全组、Traceflow21uv tool install vmware-nsx-security
vmware-ariaAria Ops 指标、告警、容量规划28uv tool install vmware-aria
vmware-aviAVI(NSX ALB)负载均衡、Kubernetes 上的 AKO28uv tool install vmware-avi
vmware-harden合规基线、偏差检测(只读)6uv tool install vmware-harden
vmware-log-insight集中式 syslog 搜索、聚合、告警7uv tool install vmware-log-insight
vmware-debug事件时间线关联、根因分析2uv tool install vmware-debug
vmware-pilot多步骤工作流编排、审批关卡13uv tool install vmware-pilot

升级到 2.0

2.0 将其中 23 个 MCP 工具重命名为动词开头(例如 active_sessions → list_active_sessions、active_tasks → list_active_tasks、certificate_status → get_certificate_status)。完整的旧名称 → 新名称对照表见 RELEASE_NOTES.md。其他内容均不变:工具、参数、安全关卡和 CLI 命令都相同。如果 Agent 提示词、脚本或 ~/.vmware/rules.yaml 中指定了工具,请更新名称。不过,使用旧名称编写的拒绝规则仍可正常工作,前提是 vmware-policy ≥ 1.18(vmware-audit policy 会列出重命名后适用范围扩大的规则);vmware-pilot ≥ 1.13 会转换已保存工作流中的旧名称。 如果低于 2.0 的安装共用该 rules.yaml,也请将其升级到 vmware-policy ≥ 1.18.2:它会针对新旧两种名称匹配每条规则,因此同一个文件可供两者使用。

⚡ 快速调查报告

五份主观精选的只读报告,解答运维人员真正关心的问题——每份报告都会在服务端进行聚合和关联分析,并返回高信号结果(绝非原始清单)。每份报告还支持通过 --html 生成独立的离线 HTML 快照(无外部资源,不会有任何内容离开本机;深入详情会折叠在原生 <details> 区段中,不使用 JavaScript)。

问题命令关联分析内容
“所有集群中有没有哪里着火了?”vmware-monitor summary每个集群的主机、VM 电源状态、实时 CPU/内存和警报 → 按优先级排列的前 N 个问题 + 各集群状态
“所有 vCenter 中现在有哪些事项需要关注?”vmware-monitor attention将所有已配置的 vCenter 合并为一个全局排序的问题列表;无法访问的目标会进行优雅降级
“这台 VM 周边发生了什么?”vmware-monitor investigate vm <name>VM 状态 + 所在主机 + 集群 + 所用数据存储 + 快照 + 警报 + 性能 + 合并后的事件时间线
“这台主机周边发生了什么?”vmware-monitor investigate host <name>主机状态 + 集群 + 其上运行的 VM + 已挂载的数据存储 + 警报 + 性能 + 关联时间线
“这个数据存储周边发生了什么?”vmware-monitor investigate datastore <name>容量/可用空间 + 挂载的主机 + 其承载的 VM + 警报 + 关联时间线
# Triage the estate, then drill into whatever it flags:
vmware-monitor attention                         # what needs attention now, all vCenters
vmware-monitor summary --top 5                   # is anything on fire, one vCenter
vmware-monitor investigate vm web-01 --hours 72  # everything around a VM, 72h event window
vmware-monitor 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——模型会调用它们,并用运维语言解释聚合结果。完整标志参数请参阅:references/cli-reference.md。

快速安装(推荐)

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

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

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

# Or via pip
pip install vmware-monitor

# China mainland mirror (faster)
pip install vmware-monitor -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-monitor

功能(只读)

架构
User (Natural Language)
  ↓
AI CLI Tool (Claude Code / Gemini / Codex / Aider / Continue / Trae / Kimi)
  ↓ Reads SKILL.md / AGENTS.md / rules
  ↓
vmware-monitor CLI (read-only)
  ↓ pyVmomi (vSphere SOAP API)
  ↓
vCenter Server ──→ ESXi Clusters ──→ VMs
    or
ESXi Standalone ──→ VMs
版本兼容性
vSphere / VCF 版本支持情况备注
VCF 9.1 / vSphere 9.1✅ 完全支持于 2026-05-12 发布。pyVmomi <10.0 可通过 SOAP 解析并建立连接。
VCF 9.0 / vSphere 9.0✅ 完全支持pyVmomi 8.0.3+ 可连接 vSphere 9 SOAP API。
8.0 / 8.0U1-U3✅ 完全支持pyVmomi 8.0.3+
7.0 / 7.0U1-U3✅ 完全支持支持所有只读 API
6.7✅ 兼容向后兼容,已测试
6.5✅ 兼容向后兼容,已测试
Broadcom 官方参考资料
1. 清单
功能vCenterESXi详情
列出虚拟机✅✅名称、电源状态、CPU、内存、客户机操作系统、IP、folder_path(vCenter 清单文件夹,例如 /Datacenters/Production/Web Tier);MCP list_virtual_machines 支持使用 folder_filter 搜索文件夹树,且不区分大小写
列出主机✅⚠️ 仅自身CPU 核心数、内存、ESXi 版本、虚拟机数量、运行时间
列出数据存储✅✅容量、可用/已用空间、类型(VMFS/NFS)、使用率
列出集群✅❌主机数量、DRS/HA 状态
列出网络✅✅网络名称、关联的虚拟机数量、可访问性 — CLI inventory networks,MCP list_all_networks
2. 健康状况与监控
功能vCenterESXi详情
活动警报✅✅严重性、警报名称、实体、时间戳
事件/日志查询✅✅按时间范围和严重性筛选;支持 50 多种事件类型
硬件传感器✅✅每个传感器的 type(温度/电压/风扇等)、读数、单位和健康 status(绿色/黄色/红色)— CLI health sensors,MCP get_host_sensors
主机服务✅✅hostd、vpxa 的运行/停止状态 — CLI health services,MCP get_host_services
账户访问权限✅✅服务使用的账户,以及该账户是否拥有各工具在根文件夹上的权限 — CLI access-info,MCP get_access_info

受监控的事件类型:

类别事件
虚拟机故障VmFailedToPowerOnEvent、VmDiskFailedEvent、VmFailoverFailed
主机问题HostConnectionLostEvent、HostShutdownEvent、HostIpChangedEvent
存储DatastoreCapacityIncreasedEvent、SCSI 高延迟
HA/DRSDasHostFailedEvent、DrsVmMigratedEvent、DrsSoftRuleViolationEvent
身份验证UserLoginSessionEvent、BadUsernameSessionEvent
3. 虚拟机信息与快照列表(只读)
功能详情
虚拟机信息名称、电源状态、客户机操作系统、CPU、内存、IP、VMware Tools、磁盘、NIC、folder_path
快照列表列出已有快照及其名称和创建时间(不支持创建/还原/删除)— CLI vm snapshot-list,MCP 工具 list_vm_snapshots
备份窗口根据 vCenter 任务历史记录,备份在虚拟机上保持快照打开的时长。CLI snapshots backup-window,MCP 工具 get_vm_backup_snapshot_history。这是备份作业时长的下限,并非其官方时长
4. 定时扫描与通知
功能详情
守护进程基于 APScheduler,可配置间隔(默认 15 min)
多目标扫描按顺序扫描所有已配置的 vCenter/ESXi 目标
扫描内容每个周期:触发的告警、lookback_hours 范围内的 vCenter 事件,以及 ESXi 主机日志 hostd、vmkernel、vpxa 中的新行
主机日志增量读取:每行在每次守护进程运行时只报告一次(重启后的守护进程会重新读取每个日志最近的 500 行一次)。日志轮转,或两个周期之间新增超过 500 行时,会添加一条 info 行,说明哪些行未扫描。读取主机日志需要 Global.Diagnostics 权限,而 vCenter 的 Read-Only 角色不包含该权限;无法读取的日志会生成一条说明原因的 info 行,绝不会悄无声息地报出“全部正常”
日志分析匹配 error、fail、critical、panic、lost access、cannot、timeout、refused、corrupt 的主机日志行——包含 critical/panic/corrupt 的行标记为 critical,其余标记为 warning
结构化日志输出 JSONL 到 ~/.vmware-monitor/scan.log——包含每个问题,也包括 info 行
WebhookSlack、Discord 或任意 HTTP 端点。接收每个 critical 问题和每个告警/事件 warning;主机日志 warning 仅写入扫描日志,info 行绝不会发送
周期摘要守护进程日志输出中每个周期占一行:发现的问题(以及发送到 webhook 的数量)、无法读取的主机日志、存在未扫描行的日志、失败的扫描阶段。如果任何扫描阶段失败或无法连接某个目标,则显示 Scan INCOMPLETE,绝不会显示“全部正常”
守护进程管理daemon start/stop/status、PID 文件、平稳关闭
5. 安全功能
功能详情
代码级隔离独立代码库——代码中不含任何破坏性函数,并通过针对每次 vSphere 调用的 AST 允许列表门禁进行检查(tests/eval/regression/test_read_only_enforcement.py)
审计跟踪MCP 工具调用以及所有访问 vCenter 的 CLI 命令都会记录到 ~/.vmware/audit.db(SQLite,通过 vmware-policy);CLI 查询也会追加到 ~/.vmware-monitor/audit.log(JSONL)
密码保护加载 .env 文件时检查权限(权限不是 600 时发出警告)
支持 SSL 自签名证书verify_ssl: false——仅适用于隔离实验环境中使用自签名证书的 ESXi;生产环境应使用 CA 签名的证书
提示词注入防护vSphere 事件消息和主机日志会被截断、清理,并用边界标记括起来
Webhook 数据范围默认禁用。配置后,守护进程只会向你的 URL 发送:每个 critical 问题(告警、事件、匹配 critical/panic/corrupt 的 ESXi 日志行、无法连接的目标)和每个告警/事件 warning——主机日志 warning 保留在扫描日志中,info 行绝不会发送。每个问题都包含实体名称和消息:经过清理的告警、事件或 ESXi 日志文本,或连接错误,其中可能包含主机名、IP 和用户名。不会发送该技能配置或 .env 中的凭据
生产环境建议AI Agent 可能误解上下文并执行意外的破坏性操作——现实中的事故表明,由 AI 驱动的工具曾删除生产数据库和整个环境。VMware-Monitor 从自身代码中消除了这类风险:不存在破坏性代码路径,添加此类代码会导致允许列表门禁构建失败。搭配只读 vCenter 账户使用,提供不依赖此代码库的防护。仅在开发/实验室环境中使用 VMware-AIops
有意不包含的功能

以下操作不存在于此代码仓库中:

  • ❌ 开启/关闭、重置、挂起 VM
  • ❌ 创建、删除、重新配置 VM
  • ❌ 创建、还原、删除快照
  • ❌ 克隆或迁移 VM
  • ❌ _double_confirm、_show_state_preview、_validate_vm_params

如需执行这些操作,请使用完整的 VMware-AIops 代码仓库。


使用本地模型或小型模型?请参阅 skills/vmware-monitor/references/agent-guardrails.md。


常见工作流

每日健康检查
  1. 检查警报:vmware-monitor health alarms --target prod-vcenter
  2. 查看近期事件:vmware-monitor health events --hours 24 --severity warning
  3. 列出主机:vmware-monitor inventory hosts — 检查连接状态和内存使用情况
调查特定对象(逐层深入)

一次调用即可将对象与其周边基础设施及近期历史关联起来 — 请参阅上文的 ⚡ 快速调查报告。

  1. 从分诊开始:vmware-monitor attention(所有 vCenter)或 vmware-monitor summary(单个 vCenter)
  2. 深入查看标记的问题:vmware-monitor investigate vm <name>(或 host / datastore)
  3. 使用 --hours 72 扩大事件时间范围;使用 --html 分享(离线快照)
  4. 如果名称未知 → 教学错误会指出如何列出对象(inventory vms/hosts、list_all_datastores)
设置持续监控
  1. 在 ~/.vmware-monitor/config.yaml 中配置 webhook
  2. 启动守护进程:vmware-monitor daemon start
  3. 守护进程每 15 分钟扫描一次,并向 Slack/Discord 发送警报

故障排除

警报返回空结果,但 vCenter 显示有警报

get_alarms 工具会查询根文件夹级别触发的警报。有些警报是针对特定实体的 — 请尝试改为检查事件:vmware-monitor health events --hours 1 --severity info。

“Connection refused” 错误
  1. 运行 vmware-monitor doctor 进行诊断
  2. 在 config.yaml 中确认目标主机名/IP 和端口(443)
  3. 对于自签名证书:信任 CA;仅在隔离的实验室主机上设置 verify_ssl: false
事件返回的结果过多

使用严重性筛选器:--severity warning(默认值)会筛除 info 级别的事件。使用 --hours 4 缩小时间范围。

VM 信息显示 “guest_os: unknown”

来宾操作系统中未安装或未运行 VMware Tools。安装/启动 VMware Tools,以检测来宾操作系统、IP 地址和来宾系列信息。

Doctor 检查通过,但命令因超时而失败

vCenter 可能负载过高。请尝试直接指定某台 ESXi 主机,而不是 vCenter;或者在 config.yaml 中延长连接超时。

doctor 报告 “no vSphere role”,或每条命令都因 “session is not authenticated” 而失败

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


支持的 AI 平台

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

vmware-monitor MCP 服务可与任何兼容 MCP 的 Agent 或工具配合使用。可直接使用的配置模板位于 examples/mcp-configs/。所有 33 个工具均为只读,并通过上文所述的允许列表关卡强制执行。

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-monitor MCP 服务作为其工具箱之一;作为 MCP 客户端和 MCP 服务,其 HMAC 链式审计日志与此技能的只读设计相得益彰——每次查询都会记录,且此处没有任何代码路径会修改数据。请参阅其 MCP 集成指南。

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

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

# Any MCP agent + local model + vmware-monitor 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 后端
git clone https://github.com/vmware-skills/VMware-Monitor.git
cd VMware-Monitor
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
步骤 2:配置
mkdir -p ~/.vmware-monitor
cp config.example.yaml ~/.vmware-monitor/config.yaml
# Edit config.yaml with your vCenter/ESXi targets

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

cp .env.example ~/.vmware-monitor/.env
chmod 600 ~/.vmware-monitor/.env
# Edit and fill in your passwords

安全提示:建议使用 .env 文件,而不是通过命令行 export 设置密码,以免密码出现在 shell 历史记录中。config.yaml 仅存储主机名、端口以及 .env 文件的引用,不包含密码或令牌。所有密钥仅存储在 .env 中(chmod 600)。Webhook 通知默认处于禁用状态;启用后,负载只会发送到用户配置的 URL,且不包含配置中的凭据,但会包含 vSphere 自身的告警、事件和日志文本,其中可能包含主机名、IP 和用户名。我们建议使用具有 vCenter 内置只读角色的专用服务账户。

密码环境变量命名约定:

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
步骤 3:连接 AI 工具

选择以下一项或多项:


选项 A:Claude Code

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

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

npx skills add vmware-skills/VMware-Monitor
# or
clawhub install @zw008/vmware-monitor

方法 2:手动安装技能

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

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

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

claude mcp add vmware-monitor -- vmware-monitor mcp

重启 Claude Code,然后:

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

选项 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-monitor/SKILL.md ./GEMINI.md

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

{
  "mcpServers": {
    "vmware-monitor": {
      "command": "vmware-monitor",
      "args": ["mcp"],
      "env": { "VMWARE_MONITOR_CONFIG": "~/.vmware-monitor/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-monitor
cp skills/vmware-monitor/SKILL.md ~/.codex/skills/vmware-monitor/SKILL.md

# Copy AGENTS.md to project root
cp skills/vmware-monitor/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-monitor/SKILL.md

# Or with local model via Ollama
aider --conventions skills/vmware-monitor/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-monitor/SKILL.md .continue/rules/vmware-monitor.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-monitor/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-monitor
cp skills/vmware-monitor/SKILL.md ~/.kimi/skills/vmware-monitor/SKILL.md

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

MCP 服务通过 Model Context Protocol 将 VMware 只读监控功能作为工具提供。它适用于任何兼容 MCP 的客户端(Claude Desktop、Cursor 等)。

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

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

# With a custom config path
VMWARE_MONITOR_CONFIG=/path/to/config.yaml vmware-monitor mcp

Claude Desktop 配置(claude_desktop_config.json):

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

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

在企业 TLS 代理后运行? uvx 可能会报错 invalid peer certificate: UnknownIssuer。 请使用上方推荐的 vmware-monitor mcp 形式(无需联网),或设置 UV_NATIVE_TLS=true。


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

vmware-monitor inventory vms --target home-esxi
vmware-monitor health alarms --target home-esxi
vmware-monitor vm info my-vm --target home-esxi

更新 / 升级

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

安装渠道更新命令
ClawHubclawhub install @zw008/vmware-monitor
Skills.shnpx skills add vmware-skills/VMware-Monitor
Git 克隆cd VMware-Monitor && git pull origin main && uv pip install -e .
uvuv tool install vmware-monitor --force

检查当前版本:vmware-monitor --version


中国云模型

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

DeepSeek
export DEEPSEEK_API_KEY="your-key"
aider --conventions skills/vmware-monitor/SKILL.md \
  --model deepseek/deepseek-coder
Qwen(阿里云)
export DASHSCOPE_API_KEY="your-key"
aider --conventions skills/vmware-monitor/SKILL.md \
  --model qwen/qwen-coder-plus
本地模型(Aider + Ollama)

完全离线运行——无需云 API、无需互联网,充分保护隐私。

brew install ollama
ollama pull qwen2.5-coder:32b
ollama serve

aider --conventions skills/vmware-monitor/SKILL.md \
  --model ollama/qwen2.5-coder:32b

CLI 参考

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

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

# Inventory
vmware-monitor inventory vms [--target <name>]
vmware-monitor inventory vms --limit 10 --sort-by memory_mb   # Top 10 VMs by memory
vmware-monitor inventory vms --power-state poweredOn           # Only powered-on VMs
vmware-monitor inventory vms --sort-by folder_path             # Group VMs by inventory folder
# All `inventory vms` results include a `folder_path` field (e.g. `/Datacenters/Production/Web Tier`).
# MCP tool `list_virtual_machines` additionally supports `folder_filter="Production"` for case-insensitive folder-tree search.
vmware-monitor inventory hosts [--target <name>]
vmware-monitor inventory datastores [--target <name>]
vmware-monitor inventory clusters [--target <name>]

# Health
vmware-monitor health alarms [--target <name>]
vmware-monitor health events [--hours 24] [--severity warning]

# VM Info (read-only)
vmware-monitor vm info <vm-name>
vmware-monitor vm snapshot-list <vm-name>

# Scanning & Daemon
vmware-monitor scan now [--target <name>]
vmware-monitor daemon start
vmware-monitor daemon stop
vmware-monitor daemon status

配置

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

部分键默认值描述
targetsname—友好名称
targetshost—vCenter/ESXi 主机名或 IP
targetstypevcentervcenter 或 esxi
targetsport443连接端口
targetsverify_ssltrue验证目标的 TLS 证书(仅对使用自签名证书的实验室主机设为 false)
scannerinterval_minutes15扫描频率
scannerseverity_thresholdwarning最低严重性:critical/warning/info
scannerlookback_hours1向前回溯的扫描时间
notifylog_file~/.vmware-monitor/scan.logJSONL 日志输出
notifywebhook_url—Webhook 端点(Slack、Discord 等)

项目结构

VMware-Monitor/
├── skills/                        # Skills index (npx skills add)
│   └── vmware-monitor/
│       ├── SKILL.md
│       └── references/            # Detailed docs loaded on-demand
├── vmware_monitor/                # Python backend (read-only only)
│   ├── config.py                  # YAML + .env config
│   ├── connection.py              # Multi-target pyVmomi
│   ├── cli.py                     # Typer CLI (read-only commands only)
│   ├── ops/
│   │   ├── inventory.py           # VMs, hosts, datastores, clusters
│   │   ├── health.py              # Alarms, events, sensors
│   │   └── vm_info.py                 # VM info, snapshot list (read-only)
│   ├── scanner/                   # Log scanning daemon
│   ├── notify/                    # Notifications (JSONL + webhook)
│   └── mcp_server/                # MCP server (read-only tools only)
├── examples/mcp-configs/          # MCP client config templates
├── tests/                         # Test suite
├── smithery.yaml                  # Smithery marketplace config
├── RELEASE_NOTES.md
├── config.example.yaml
└── pyproject.toml

相关项目

技能范围工具安装
vmware-monitor只读监控、警报、事件27uv tool install vmware-monitor
vmware-aiopsVM 生命周期、部署、来宾操作、集群49uv tool install vmware-aiops
vmware-storage数据存储、iSCSI、vSAN11uv tool install vmware-storage
vmware-vksTanzu 命名空间、TKC 集群生命周期20uv tool install vmware-vks

故障排除与贡献

如果遇到任何错误或问题,请将错误消息、日志或屏幕截图发送至 [email protected]。欢迎贡献!

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

默认情况下,vmware-monitor 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-monitor 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-monitor https://mcp.example.com:8443/mcp \
    --header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
  "mcpServers": {
    "vmware-monitor": {
      "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 中的“网络调用方的角色”。

**限制工具:**此服务的所有工具均为只读,因此 --expose read 在此处不会改变任何内容;此选项适用于支持写入的技能。最小权限取决于服务使用的账户。

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

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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