Desktop Hypervisor MCP
Provider-neutral MCP server for managing VirtualBox, VMware Fusion, and VMware Workstation, offering tools for VM lifecycle, configuration, snapshots, guest operations, networking, and artifact resolution.
README
Desktop Hypervisor MCP
One provider-neutral MCP server for the desktop hypervisors: VirtualBox, VMware Fusion, and VMware Workstation. Nine tools, ~1,800 context tokens, full coverage of what its two predecessor servers did in ~5,600.
It succeeds virtualbox-mcp-server (that
history is preserved on the predecessor-virtualbox branch) and the never-
released vmware-fusion-mcp-server, folding both into one capability-based
surface.
Design
- Capability-based, not lowest-common-denominator. Providers advertise
what they can actually do (
provider action=list): guest exec, OVA import/export, linked clones, pre-boot guestinfo injection, DHCP-lease IP discovery, ISO mastering… Unsupported operations fail by naming the missing capability, not with a provider error. - Intent, not mechanism. "Ensure the cluster nodes share a network the
host can reach" is expressible on both families; "create a host-only
interface" is not. The neutral tools express intent; provider-native
mechanism stays reachable, unabstracted, through
execute_command. - Artifacts resolve per provider. The same image name gives each
hypervisor the artifact it can actually import — Talos's
vmware-*.ovavsvirtualbox-*.ova, Vagrant'svmware_desktopvsvirtualboxboxes, Microsoft's per-hypervisor dev VM — keyed on (image, provider family, host arch).
Tools
| Tool | Actions |
|---|---|
provider |
list — installed hypervisors with status, capabilities, formats, and remediation when not ready |
artifact |
catalog, resolve, fetch (dry_run) — verified downloads of official OS images, per provider |
vm_lifecycle |
create, start, stop, suspend, reset, delete, clone, import, export |
vm_info |
list, running, show, ip (in-guest tools, else DHCP leases by MAC — works for agentless guests like Talos) |
vm_config |
resources, nested_virt, attach_iso, guestinfo (pre-boot key/value injection, VMware) |
snapshot |
take, restore, delete, list (tree) |
guest |
exec, script, copy_in, copy_out, screenshot |
network |
ensure_cluster_network, expose_guest_port, make_iso, repack_iso |
execute_command |
raw VBoxManage / vmrun argv on the selected provider |
With one hypervisor installed it is selected automatically; with several, the ambiguity is surfaced, never guessed.
Image catalog
artifact action=catalog lists maintained images: Talos (appliance and metal
ISO), Ubuntu (cloud image and Vagrant), Debian, Fedora, Rocky, Alma,
openSUSE, FreeBSD, Kali, TurnKey, the Windows dev VM, plus vagrant:org/box
passthrough to the whole registry. Downloads are sha256-verified wherever the
publisher provides a digest (GitHub release assets always do); unverified
sources say so loudly. Vagrant boxes are fetched for the right provider and
auto-extracted to their importable machine file. The cache lives in
~/.hypervisor-images (HV_IMAGE_DIR overrides).
Prerequisites
- VirtualBox (
VBoxManage) and/or VMware Fusion / Workstation (vmrun). Detection is per-call, so a hypervisor installed mid-session is picked up. - Nothing else: a single static Go binary, no Python, no Node.
Optional, detected at runtime: ovftool enables OVA import/export on VMware;
xorriso enables repack_iso.
Building
go build -o desktop-hypervisor-mcp .
Registration with Claude Code
claude mcp add --scope user hypervisor -- /path/to/desktop-hypervisor-mcp
Guest-operation credentials come from the server environment, never from tool parameters:
claude mcp add --scope user hypervisor \
--env HV_GUEST_USER=vagrant --env HV_GUEST_PASSWORD=vagrant \
-- /path/to/desktop-hypervisor-mcp
(VMRUN_GUEST_USER/VMRUN_GUEST_PASSWORD are honored for compatibility.)
The server ships usage recipes in the MCP initialize handshake, generated from what was actually detected on the host — a session on a VirtualBox-only machine never pays context for VMware guidance.
Permissions
Per-tool allowlisting in .claude/settings.json keeps prompts meaningful —
read-only tools are safe to always-allow:
{
"permissions": {
"allow": [
"mcp__hypervisor__provider",
"mcp__hypervisor__vm_info",
"mcp__hypervisor__artifact",
"mcp__hypervisor__snapshot"
]
}
}
Keep mutating tools (vm_lifecycle, execute_command) behind prompts
unless you accept unattended VM mutation.
Related projects
- talos-mcp-server — Talos/Kubernetes orchestration; consumes this server for node provisioning and stays deliberately hypervisor-agnostic.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.