
VMware Monitor
io.github.zw008由 GitHub 账号 zw008 发布v1.8.8更新于 Oct 24, 2026
Read-only VMware vCenter/ESXi monitoring with 27 MCP tools. Code-level safety.
概览
只读的 VMware vCenter/ESXi 监控:以 MCP 工具提供清单、健康、告警、事件、主机传感器与日志查询。
- 可以做什么
- 把只读的 VMware vCenter 与独立 ESXi 监控能力封装为 MCP 工具,涵盖虚拟机、主机、数据存储、集群和网络的清单查询,以及告警、事件与日志检索、硬件传感器、主机服务、虚拟机详情和快照列表。还提供针对虚拟机、主机或数据存储的关联排查报告,并可选启用定时守护进程按间隔扫描目标、把结果推送到 webhook。代码库中不存在开关机、创建、删除、重配置、快照或迁移操作。
- 适用场景
- 适合让助手在不改动 vSphere 环境的前提下进行查看:排查告警与事件、检查主机健康与传感器,或收集某台虚拟机、主机、数据存储周边的上下文。也适合做持续的只读监控并向 Slack、Discord 或其他 HTTP 端点发送告警。
- 运行要求
- 本地需 Python 3.10+(PyPI 包 vmware-monitor,以 vmware-monitor mcp 启动)。需要能访问 vCenter 或 ESXi 的 443 端口,准备含目标主机名的 config.yaml,并通过 .env 以 VMWARE_{TARGET_NAME_UPPER}_PASSWORD 形式的变量提供目标密码。通知可选配置 webhook URL;Node.js 18+ 仅部分 AI CLI 客户端需要。
安装
在 SourceWeft 中
- 打开 控制台中的 VMware Monitor,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
VMware Monitor
For a read-only check of this skill with your model and agent host, use the shared model-fit self-test in the marketplace root.
Author: Wei Zhou, VMware by Broadcom — [email protected] This is a community-driven project by a VMware engineer, not an official VMware product. For official VMware developer tools see developer.broadcom.com.
English | 中文
Read-only VMware vCenter/ESXi monitoring — 33 tools. No destructive operations exist in this codebase, and a test enforces that.
Why a separate repository? VMware Monitor is fully independent from VMware-AIops. No power off, delete, create, reconfigure, snapshot-create/revert/delete, clone, or migrate functions exist in this codebase — not a prompt constraint, an absence.
How that is enforced, precisely.
tests/eval/regression/test_read_only_enforcement.pyparses every source file withastand requires each vSphere method the package calls to appear on a reviewed allowlist, cross-checked against pyVmomi's own type metadata: anything returning avim.Task, or gated by vCenter on a non-read privilege, fails unless a human wrote down why. Today that allowlist is fourteen methods. The check is a gate on the code as written — it cannot see a method name assembled at runtime, and nothing runs it automatically, so it holds only as far as someone runs the test suite. For a guarantee that does not depend on this repository at all, point the skill at a dedicated account holding vCenter's built-in Read-Only role (which reads need more than that role).What "read-only" does not cover. It is a claim about vCenter/ESXi: no code path changes their state. On vCenter the skill opens only its own login session and short-lived query handles it releases. It does write locally:
~/.vmware-monitor/config.yamland.env(viainit; plaintext passwords in.envare rewritten asb64:on load), audit logs (~/.vmware/audit.dbfor MCP calls,~/.vmware-monitor/audit.logfor CLI commands),--htmlsnapshots in~/vmware-health/, and — only afterdaemon start—daemon.pid,scan.log, and posts to a webhook you configured. Full table: setup guide.
[ClawHub] [Skills.sh] [Claude Code Marketplace] [License: MIT]
Companion Skills
Upgrading to 2.0
2.0 renames 23 of its MCP tools so every name starts with a verb (e.g. active_sessions → list_active_sessions, active_tasks → list_active_tasks, certificate_status → get_certificate_status). The full old → new table is in
RELEASE_NOTES.md. Nothing else changes: same tools, parameters,
safety gates and CLI commands. If an agent prompt, script or ~/.vmware/rules.yaml names a tool, update it — though deny
rules written with the old names keep working with vmware-policy ≥ 1.18 (vmware-audit policy lists any rule the
renames widened), and vmware-pilot ≥ 1.13 translates old names in saved workflows.
If an install older than 2.0 shares that rules.yaml, give it vmware-policy ≥ 1.18.2 too: it matches each rule
against both the old and the new name, so one file serves both.
⚡ Quick Investigation Reports
Five opinionated, read-only reports that answer an operator's real questions — each aggregates and correlates server-side and hands back a high-signal result (never raw inventory). Every report also renders a self-contained offline HTML snapshot with --html (no external assets, nothing leaves the machine; drill-down detail collapses in native <details> sections, zero JavaScript).
Unknown object names return a teaching error naming exactly how to list objects. Via MCP these are the tools get_cluster_health_summary, get_cross_vcenter_attention, investigate_vm, investigate_host, investigate_datastore — the model calls them and explains the aggregated result in operational language. Full flags: references/cli-reference.md.
MCP Apps cluster health view (unreleased)
get_cluster_health_summary also advertises ui://vmware-monitor/cluster-health.html to MCP Apps hosts. A supporting host can render a live cluster dashboard and use its Investigate buttons to call the read-only host or datastore tool through the same MCP server, role, Policy and audit path. The HTML is self-contained and renders vSphere names as text. Hosts without MCP Apps support receive the same tool result as before. The view and real vCenter data have been verified through the production loopback HTTP transport; visual rendering in a current third-party host remains to be verified. This is separate from the CLI's offline --html snapshot.
Quick Install (Recommended)
Works with Claude Code, Cursor, Codex, Gemini CLI, Trae, and 30+ AI agents:
PyPI Install (No GitHub Access Required)
Offline / Air-Gapped Install (from source)
This project uses the modern PEP 517 build system (hatchling), so there is no
setup.py by design — that is expected, not a missing file. If you cloned the
source and hit ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build, your pip is older than 21.3 and
cannot do an editable (-e) install with a non-setuptools backend. Editable
mode is a developer convenience, not needed to run the tool — do one of:
For a truly air-gapped host, build the wheels on a connected machine and copy them over — the target then needs no network:
Capabilities (Read-Only)
Architecture
Version Compatibility
Official Broadcom References
- SDKs: https://developer.broadcom.com/sdks — VCF Python SDK (recommended for VCF 9+, bundles pyVmomi + vSAN SDK), vSphere Automation SDK for Python
- REST APIs: https://developer.broadcom.com/xapis — vSphere Automation API, VCF API
- CLI Tools: https://developer.broadcom.com/tools — PowerCLI 9.1, ESXCLI, OVF Tool
1. Inventory
2. Health & Monitoring
Monitored Event Types:
3. VM Info & Snapshot List (Read-Only)
4. Scheduled Scanning & Notifications
5. Safety Features
What's NOT Included (By Design)
These operations do not exist in this repository:
- ❌ Power on/off, reset, suspend VMs
- ❌ Create, delete, reconfigure VMs
- ❌ Create, revert, delete snapshots
- ❌ Clone or migrate VMs
- ❌
_double_confirm,_show_state_preview,_validate_vm_params
For these operations, use the full VMware-AIops repository.
Running with local or small models? See skills/vmware-monitor/references/agent-guardrails.md.
Common Workflows
Daily Health Check
- Check alarms:
vmware-monitor health alarms --target prod-vcenter - Review recent events:
vmware-monitor health events --hours 24 --severity warning - List hosts:
vmware-monitor inventory hosts— check connection state and memory usage
Investigate a Specific Object (drill-down)
One call correlates the object with its surrounding infrastructure and recent history — see ⚡ Quick Investigation Reports above.
- Start from triage:
vmware-monitor attention(all vCenters) orvmware-monitor summary(one) - Drill into what it flags:
vmware-monitor investigate vm <name>(orhost/datastore) - Widen the event window with
--hours 72; share it with--html(offline snapshot) - If the name is unknown → the teaching error names how to list objects (
inventory vms/hosts,list_all_datastores)
Set Up Continuous Monitoring
- Configure webhook in
~/.vmware-monitor/config.yaml - Start daemon:
vmware-monitor daemon start - Daemon scans every 15 min, sends alerts to Slack/Discord
Troubleshooting
Alarms returns empty but vCenter shows alarms
The get_alarms tool queries triggered alarms at the root folder level. Some alarms are entity-specific — try checking events instead: vmware-monitor health events --hours 1 --severity info.
"Connection refused" error
- Run
vmware-monitor doctorto diagnose - Verify target hostname/IP and port (443) in
config.yaml - For self-signed certs: trust the CA; set
verify_ssl: falseonly for an isolated lab host
Events returns too many results
Use severity filter: --severity warning (default) filters out info-level events. Use --hours 4 to narrow the time range.
VM info shows "guest_os: unknown"
VMware Tools not installed or not running in the guest. Install/start VMware Tools for guest OS detection, IP address, and guest family info.
Doctor passes but commands fail with timeout
vCenter may be under heavy load. Try targeting a specific ESXi host directly instead of vCenter, or increase connection timeout in config.yaml.
doctor reports "no vSphere role", or every command fails with "session is not authenticated"
The account logs in but has no vSphere role, so vCenter gives it no session (AIops#47). Assign it a role (Read-Only or higher) on the vCenter root folder: Administration > Access Control > Global Permissions. Changing the password will not help. vmware-monitor doctor reports this case by name, and attention counts such a target as unread (overall at least WARN).
Supported AI Platforms
Platform Comparison
MCP Server Integrations
The vmware-monitor MCP server works with any MCP-compatible agent or tool. Ready-to-use configuration templates are in examples/mcp-configs/. All 33 tools are read-only, enforced by the allowlist gate described above.
Xiaoguai (小怪) — a self-hostable, audit-first agent platform (Rust, single binary + embedded SQLite) from the same maintainer. It runs the read-only vmware-monitor MCP server as one of its toolboxes; being both an MCP consumer and an MCP server, its HMAC-chained audit log pairs naturally with this skill's read-only design — every query is logged, and no code path here mutates. See its MCP integration guide.
Fully local operation (no cloud API required):
Installation
Step 0: Prerequisites
Step 1: Clone & Install Python Backend
Step 2: Configure
Set passwords via .env file (recommended):
Security note: Prefer
.envfile over command-lineexportto avoid passwords appearing in shell history.config.yamlstores only hostnames, ports, and a reference to the.envfile — it does not contain passwords or tokens. All secrets are stored exclusively in.env(chmod 600). Webhook notifications are disabled by default; when enabled, payloads go to user-configured URLs only and carry no credentials from your config — but they do carry vSphere's own alarm, event, and log text, which can include host names, IPs, and user names. We recommend a dedicated service account with vCenter's built-in Read-Only role.
Password environment variable naming convention:
Step 3: Connect Your AI Tool
Choose one (or more) of the following:
Option A: Claude Code
Method 1: Skills.sh or ClawHub (recommended)
Either installer places the skill in Claude Code's skills directory for you:
Method 2: Manual skill install
For tool access (not just skill context), also register the MCP server:
Restart Claude Code, then:
Option B: Gemini CLI
For tool access (not just context), register the MCP server in ~/.gemini/settings.json:
Then start Gemini CLI:
Option C: OpenAI Codex CLI
Then start Codex CLI:
Option D: Aider (supports local models)
Option E: Continue CLI (supports local models)
Configure ~/.continue/config.yaml for local model:
Then:
Option F: Trae IDE
Copy the rules file to your project's .trae/rules/ directory:
Trae IDE's Builder Mode reads .trae/rules/ Markdown files at startup.
Note: You can also install Claude Code extension in Trae IDE and use
.claude/skills/format directly.
Option G: Kimi Code CLI
Option H: MCP Server (Glama / Claude Desktop)
The MCP server exposes VMware read-only monitoring as tools via the Model Context Protocol. Works with any MCP-compatible client (Claude Desktop, Cursor, etc.).
After uv tool install vmware-monitor, start the MCP server with one command (v1.5.15+):
Claude Desktop config (claude_desktop_config.json):
Alternative: uvx (no install) or legacy entry point
Behind a corporate TLS proxy? uvx may fail with
invalid peer certificate: UnknownIssuer. Use the recommendedvmware-monitor mcpform above (no network needed), or setUV_NATIVE_TLS=true.
Option I: Standalone CLI (no AI)
Update / Upgrade
Already installed? Re-run the install command for your channel to get the latest version:
Check your current version: vmware-monitor --version
Chinese Cloud Models
For users in China who prefer domestic cloud APIs or have limited access to overseas services.
DeepSeek
Qwen (Alibaba Cloud)
Local Models (Aider + Ollama)
For fully offline operation — no cloud API, no internet, full privacy.
CLI Reference
Configuration
See config.example.yaml for all options.
Project Structure
Related Projects
Troubleshooting & Contributing
If you encounter any errors or issues, please send the error message, logs, or screenshots to [email protected]. Contributions are welcome!
Remote access (HTTPS) and limiting tools
By default vmware-monitor mcp speaks stdio to one local client and offers every tool. Two options change that
(vmware-policy ≥ 1.21.0).
Serve over HTTPS so clients on other machines can connect. Every caller needs a bearer token:
Connect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):
- The server will not start without a token, refuses Host/Origin values outside
--public-name, and checks before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names. - Behind a TLS-terminating reverse proxy on the same machine use
--transport http --host 127.0.0.1 --public-name mcp.example.comand pass theAuthorizationheader through. - Behind a load balancer or gateway on another machine, keep
--transport https(a self-signed certificate is fine), list in--public-namethe host name the balancer sends asHost, and have it forwardAuthorization. Its health probe can useGET /healthz, which needs no token and returns only{"status": "ok"}(vmware-policy ≥ 1.23.0). - Send
traceparentorX-Request-IDwith each request to have it stored on the audit row;vmware-audit log --correlation-id IDthen finds the calls behind one platform request. - The audit log records each caller as
token:<name>. Calls run side by side, with up toVMWARE_MCP_POOL_SIZE(default 2) sessions per target; each session is a login on the target, and a call waits at most 300 s for one. - Everyone who can reach the endpoint acts with this server's account. Tokens identify callers; they grant nothing on the platform. Run one endpoint per privilege level.
- Several people or roles on one endpoint: run
vmware-audit roles enableonce, then give each token a role (vmware-audit token create NAME --role reader, or a role inroles.yamlnaming tools and targets; vmware-policy ≥ 1.24.0). A role limits what the token may call on this endpoint; it cannot grant more than the account has. See vmware-policy's README, "Roles for network callers".
Limiting tools: every tool of this server is read-only, so --expose read changes nothing here; it
exists for the write-capable skills. Least privilege comes from the account the server uses.
Details: skills/vmware-monitor/references/setup-guide.md ("Serving MCP over HTTPS", "Limiting which tools are offered").
License
MIT
来源:README.md,提交 03868e3
工具
0版本历史
1- v1.8.8最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分