VMware-Monitor
VMware Monitor
Author: Wei Zhou, VMware by Broadcom — wei-wz.zhou@broadcom.com 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 — 8 tools, code-level safety. No destructive operations exist in this codebase.
Why a separate repository? VMware Monitor is fully independent from VMware-AIops. Safety is enforced at the code level: no power off, delete, create, reconfigure, snapshot-create/revert/delete, clone, or migrate functions exist in this codebase. Not just prompt constraints — zero destructive code paths.
Companion Skills
Skill | Scope | Tools | Install |
vmware-aiops ⭐ entry point | VM lifecycle, deployment, guest ops, clusters | 31 |
|
Datastores, iSCSI, vSAN | 11 |
| |
Tanzu Namespaces, TKC cluster lifecycle | 20 |
| |
NSX networking: segments, gateways, NAT, IPAM | 31 |
| |
DFW microsegmentation, security groups, Traceflow | 20 |
| |
Aria Ops metrics, alerts, capacity planning | 18 |
|
Quick Install (Recommended)
Works with Claude Code, Cursor, Codex, Gemini CLI, Trae, and 30+ AI agents:
# Via Skills.sh
npx skills add zw008/VMware-Monitor
# Via ClawHub
clawhub install vmware-monitorPyPI Install (No GitHub Access Required)
# 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/simpleClaude Code Plugin Install
# Add marketplace
/plugin marketplace add zw008/VMware-Monitor
# Install plugin
/plugin install vmware-monitor
# Use the skill
/vmware-monitor:vmware-monitorCapabilities (Read-Only)
Architecture
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 ──→ VMsVersion Compatibility
vSphere Version | Support | Notes |
8.0 / 8.0U1-U3 | ✅ Full | pyVmomi 8.0.3+ |
7.0 / 7.0U1-U3 | ✅ Full | All read-only APIs supported |
6.7 | ✅ Compatible | Backward-compatible, tested |
6.5 | ✅ Compatible | Backward-compatible, tested |
1. Inventory
Feature | vCenter | ESXi | Details |
List VMs | ✅ | ✅ | Name, power state, CPU, memory, guest OS, IP |
List Hosts | ✅ | ⚠️ Self only | CPU cores, memory, ESXi version, VM count, uptime |
List Datastores | ✅ | ✅ | Capacity, free/used, type (VMFS/NFS), usage % |
List Clusters | ✅ | ❌ | Host count, DRS/HA status |
List Networks | ✅ | ✅ | Network name, associated VM count |
2. Health & Monitoring
Feature | vCenter | ESXi | Details |
Active Alarms | ✅ | ✅ | Severity, alarm name, entity, timestamp |
Event/Log Query | ✅ | ✅ | Filter by time range, severity; 50+ event types |
Hardware Sensors | ✅ | ✅ | Temperature, voltage, fan status |
Host Services | ✅ | ✅ | hostd, vpxa running/stopped status |
Monitored Event Types:
Category | Events |
VM Failures |
|
Host Issues |
|
Storage |
|
HA/DRS |
|
Auth |
|
3. VM Info & Snapshot List (Read-Only)
Feature | Details |
VM Info | Name, power state, guest OS, CPU, memory, IP, VMware Tools, disks, NICs |
Snapshot List | List existing snapshots with name and creation time (no create/revert/delete) |
4. Scheduled Scanning & Notifications
Feature | Details |
Daemon | APScheduler-based, configurable interval (default 15 min) |
Multi-target Scan | Sequentially scan all configured vCenter/ESXi targets |
Scan Content | Alarms + Events + Host logs (hostd, vmkernel, vpxd) |
Log Analysis | Regex pattern matching: error, fail, critical, panic, timeout |
Structured Log | JSONL output to |
Webhook | Slack, Discord, or any HTTP endpoint |
Daemon Management |
|
5. Safety Features
Feature | Details |
Code-Level Isolation | Independent repository — zero destructive functions in codebase |
Audit Trail | All queries logged to |
Password Protection |
|
SSL Self-signed Support |
|
Prompt Injection Protection | vSphere event messages and host logs are truncated, sanitized, and wrapped in boundary markers |
Webhook Data Scope | Sends monitoring summaries to user-configured URLs only — no third-party services by default |
Production Recommended | AI agents can misinterpret context and execute unintended destructive operations — real-world incidents have shown AI-driven tools deleting production databases and entire environments. VMware-Monitor eliminates this risk: no destructive code paths exist. Use VMware-AIops only in dev/lab environments |
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.
Related MCP server: VMWare MCP
Common Workflows
Daily Health Check
Check alarms:
vmware-monitor health alarms --target prod-vcenterReview recent events:
vmware-monitor health events --hours 24 --severity warningList hosts:
vmware-monitor inventory hosts— check connection state and memory usage
Investigate a Specific VM
Find the VM:
vmware-monitor inventory vms --power-state poweredOffGet details:
vmware-monitor vm info problem-vmCheck related events:
vmware-monitor health events --hours 48
Set Up Continuous Monitoring
Configure webhook in
~/.vmware-monitor/config.yamlStart daemon:
vmware-monitor daemon startDaemon 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 diagnoseVerify target hostname/IP and port (443) in
config.yamlFor self-signed certs: set
disableSslCertValidation: true
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.
Supported AI Platforms
Platform | Status | Config File | AI Model |
Claude Code | ✅ Native Skill |
| Anthropic Claude |
Gemini CLI | ✅ Extension |
| Google Gemini |
OpenAI Codex CLI | ✅ Skill + AGENTS.md |
| OpenAI GPT |
Aider | ✅ Conventions |
| Any (cloud + local) |
Continue CLI | ✅ Rules |
| Any (cloud + local) |
Trae IDE | ✅ Rules |
| Claude/DeepSeek/GPT-4o |
Kimi Code CLI | ✅ Skill |
| Moonshot Kimi |
MCP Server | ✅ MCP Protocol |
| Any MCP client |
Python CLI | ✅ Standalone | N/A | N/A |
Platform Comparison
Feature | Claude Code | Gemini CLI | Codex CLI | Aider | Continue | Trae IDE | Kimi CLI |
Cloud AI | Anthropic | OpenAI | Any | Any | Multi | Moonshot | |
Local models | — | — | — | Ollama | Ollama | — | — |
Skill system | SKILL.md | Extension | SKILL.md | — | Rules | Rules | SKILL.md |
MCP support | Native | Native | Via Skills | Third-party | Native | — | — |
Free tier | — | 60 req/min | — | Self-hosted | Self-hosted | — | — |
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 8 tools are read-only — code-level enforced safety.
Agent / Tool | Local Model Support | Config Template | Integration Guide |
✅ Ollama, LM Studio | |||
✅ Fully offline | |||
✅ Ollama, vLLM | |||
VS Code Copilot | — | ||
Cursor | — | — | |
Continue | ✅ Ollama | ||
Claude Code | — | — |
Fully local operation (no cloud API required):
# Aider + Ollama + vmware-monitor (via AGENTS.md)
aider --conventions codex-skill/AGENTS.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 formatInstallation
Step 0: Prerequisites
# Python 3.10+ required
python3 --version
# Node.js 18+ required for Gemini CLI and Codex CLI
node --versionStep 1: Clone & Install Python Backend
git clone https://github.com/zw008/VMware-Monitor.git
cd VMware-Monitor
python3 -m venv .venv
source .venv/bin/activate
pip install -e .Step 2: Configure
mkdir -p ~/.vmware-monitor
cp config.example.yaml ~/.vmware-monitor/config.yaml
# Edit config.yaml with your vCenter/ESXi targetsSet passwords via .env file (recommended):
cp .env.example ~/.vmware-monitor/.env
chmod 600 ~/.vmware-monitor/.env
# Edit and fill in your passwordsSecurity 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 contain no credentials, IPs, or PII — only aggregated alert metadata sent to user-configured URLs only. We recommend using a least-privilege read-only vCenter service account.
Password environment variable naming convention:
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_PASSWORDStep 3: Connect Your AI Tool
Choose one (or more) of the following:
Option A: Claude Code (Marketplace)
Method 1: Marketplace (recommended)
In Claude Code, run:
/plugin marketplace add zw008/VMware-Monitor
/plugin install vmware-monitorThen use:
/vmware-monitor:vmware-monitor
> Show me all VMs on esxi-lab.example.comMethod 2: Local install
# Clone and symlink
git clone https://github.com/zw008/VMware-Monitor.git
ln -sf $(pwd)/VMware-Monitor ~/.claude/plugins/marketplaces/vmware-monitor
# Register marketplace
python3 -c "
import json, pathlib
f = pathlib.Path.home() / '.claude/plugins/known_marketplaces.json'
d = json.loads(f.read_text()) if f.exists() else {}
d['vmware-monitor'] = {
'source': {'source': 'github', 'repo': 'zw008/VMware-Monitor'},
'installLocation': str(pathlib.Path.home() / '.claude/plugins/marketplaces/vmware-monitor')
}
f.write_text(json.dumps(d, indent=2))
"
# Enable plugin
python3 -c "
import json, pathlib
f = pathlib.Path.home() / '.claude/settings.json'
d = json.loads(f.read_text()) if f.exists() else {}
d.setdefault('enabledPlugins', {})['vmware-monitor@vmware-monitor'] = True
f.write_text(json.dumps(d, indent=2))
"Restart Claude Code, then:
/vmware-monitor:vmware-monitorOption B: Gemini CLI
# Install Gemini CLI
npm install -g @google/gemini-cli
# Install the extension from the cloned repo
gemini extensions install ./gemini-extension
# Or install directly from GitHub
# gemini extensions install https://github.com/zw008/VMware-MonitorThen start Gemini CLI:
gemini
> Show me all VMs on my ESXi hostOption 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 codex-skill/SKILL.md ~/.codex/skills/vmware-monitor/SKILL.md
# Copy AGENTS.md to project root
cp codex-skill/AGENTS.md ./AGENTS.mdThen start Codex CLI:
codex --enable skills
> List all VMs on my ESXiOption D: Aider (supports local models)
# 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 codex-skill/AGENTS.md
# Or with local model via Ollama
aider --conventions codex-skill/AGENTS.md \
--model ollama/qwen2.5-coder:32bOption E: Continue CLI (supports local models)
# Install Continue CLI
npm i -g @continuedev/cli
# Copy rules file
mkdir -p .continue/rules
cp codex-skill/AGENTS.md .continue/rules/vmware-monitor.mdConfigure ~/.continue/config.yaml for local model:
models:
- name: local-coder
provider: ollama
model: qwen2.5-coder:32bThen:
cn
> Check ESXi health and alarmsOption F: Trae IDE
Copy the rules file to your project's .trae/rules/ directory:
mkdir -p .trae/rules
cp trae-rules/project_rules.md .trae/rules/project_rules.mdTrae 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
# Copy skill file to Kimi skills directory
mkdir -p ~/.kimi/skills/vmware-monitor
cp kimi-skill/SKILL.md ~/.kimi/skills/vmware-monitor/SKILL.mdOption H: MCP Server (Smithery / 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+):
# Recommended — single command, no network re-resolve
vmware-monitor mcp
# With a custom config path
VMWARE_MONITOR_CONFIG=/path/to/config.yaml vmware-monitor mcpClaude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"vmware-monitor": {
"command": "vmware-monitor",
"args": ["mcp"],
"env": {
"VMWARE_MONITOR_CONFIG": "/path/to/config.yaml"
}
}
}
}# 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-mcpBehind 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.
Install via Smithery:
npx -y @smithery/cli install @zw008/VMware-Monitor --client claudeOption I: Standalone CLI (no 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-esxiUpdate / Upgrade
Already installed? Re-run the install command for your channel to get the latest version:
Install Channel | Update Command |
ClawHub |
|
Skills.sh |
|
Claude Code Plugin |
|
Git clone |
|
uv |
|
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
export DEEPSEEK_API_KEY="your-key"
aider --conventions codex-skill/AGENTS.md \
--model deepseek/deepseek-coderQwen (Alibaba Cloud)
export DASHSCOPE_API_KEY="your-key"
aider --conventions codex-skill/AGENTS.md \
--model qwen/qwen-coder-plusLocal Models (Aider + Ollama)
For fully offline operation — no cloud API, no internet, full privacy.
brew install ollama
ollama pull qwen2.5-coder:32b
ollama serve
aider --conventions codex-skill/AGENTS.md \
--model ollama/qwen2.5-coder:32bCLI Reference
# Diagnostics
vmware-monitor doctor # Check environment, config, connectivity
vmware-monitor doctor --skip-auth # Skip vSphere auth check (faster)
# 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 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 statusConfiguration
See config.example.yaml for all options.
Section | Key | Default | Description |
targets | name | — | Friendly name |
targets | host | — | vCenter/ESXi hostname or IP |
targets | type | vcenter |
|
targets | port | 443 | Connection port |
targets | verify_ssl | false | SSL certificate verification |
scanner | interval_minutes | 15 | Scan frequency |
scanner | severity_threshold | warning | Min severity: critical/warning/info |
scanner | lookback_hours | 1 | How far back to scan |
notify | log_file | ~/.vmware-monitor/scan.log | JSONL log output |
notify | webhook_url | — | Webhook endpoint (Slack, Discord, etc.) |
Project Structure
VMware-Monitor/
├── .claude-plugin/ # Claude Code marketplace manifest
│ └── marketplace.json
├── plugins/ # Claude Code plugin
│ └── vmware-monitor/
│ ├── .claude-plugin/
│ │ └── plugin.json
│ └── skills/
│ └── vmware-monitor/
│ └── SKILL.md # Read-only monitoring skill
├── skills/ # Skills index (npx skills add)
│ └── vmware-monitor/
│ └── SKILL.md
├── 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)
├── gemini-extension/ # Gemini CLI extension
│ ├── gemini-extension.json
│ └── GEMINI.md
├── codex-skill/ # Codex + Aider + Continue
│ ├── SKILL.md
│ └── AGENTS.md
├── trae-rules/ # Trae IDE rules
│ └── project_rules.md
├── kimi-skill/ # Kimi Code CLI skill
│ └── SKILL.md
├── mcp_server/ # MCP server (read-only tools only)
│ └── server.py
├── .agents/skills/ # Agent orchestration
│ └── vmware-monitor/
│ └── AGENTS.md
├── smithery.yaml # Smithery marketplace config
├── RELEASE_NOTES.md
├── config.example.yaml
└── pyproject.tomlRelated Projects
Skill | Scope | Tools | Install |
Read-only monitoring, alarms, events | 8 |
| |
VM lifecycle, deployment, guest ops, clusters | 33 |
| |
Datastores, iSCSI, vSAN | 11 |
| |
Tanzu Namespaces, TKC cluster lifecycle | 20 |
|
Troubleshooting & Contributing
If you encounter any errors or issues, please send the error message, logs, or screenshots to zhouwei008@gmail.com. Contributions are welcome!
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceEnables AI agents to manage VMware vSphere virtual infrastructure through comprehensive operations including VM power control, snapshot management, resource monitoring, performance analytics, and bulk operations with built-in safety confirmations for destructive actions.Last updated
- Alicense-qualityDmaintenanceEnables AI agents to manage VMware vSphere infrastructure through 55 typed tools built on the govc CLI. It supports comprehensive operations including VM lifecycle management, snapshot control, datastore navigation, and networking configuration.Last updated172MIT
- AlicenseAqualityAmaintenanceAI-powered VMware vCenter/ESXi monitoring and operations. 20 MCP tools for inventory queries, health monitoring, VM lifecycle management, fast provisioning (Linked Clone, OVA, template deploy), snapshot management, and datastore browsing. Supports vSphere 6.5–8.0. Works with local models via Ollama/LM Studio.Last updated4464MIT
- Alicense-qualityDmaintenanceEnables management of VMware vCenter and ESXi environments, including VM operations, resource management, and automation with Ollama AI and n8n workflows.Last updated4MIT
Related MCP Connectors
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Read-only MCP server for Muovi, Argentina's trust-first local services marketplace (6 tools).
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vmware-skills/VMware-Monitor'
If you have feedback or need assistance with the MCP directory API, please join our Discord server