Control VMware Fusion VMs via REST API
An MCP server for managing VMware Fusion VMs - list, inspect, and power-control them via Fusion's REST API.
Why it matters
Automate management of VMware Fusion virtual machines. This asset provides an MCP server to interact with the Fusion REST API for VM listing, information retrieval, and power operations.
Outcomes
What it gets done
List all virtual machines in VMware Fusion.
Retrieve detailed information about specific VMs.
Perform power operations (on, off, suspend, reboot) on VMs.
Integrate with LLMs and agent frameworks for automated VM control.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-vmware-fusion | bash Capabilities
Tools your agent gets
List all VMs in VMware Fusion
Get detailed information about a specific VM
Perform VM power operations (power on, power off, suspend, pause, unpause, reboot)
Get the power state of a specific VM
Overview
VMware Fusion MCP Server
This MCP server exposes four tools for VMware Fusion: listing VMs, getting VM details, controlling power state (on/off/suspend/pause/unpause/reset), and querying power state, via Fusion's local REST API. Use it when an AI assistant needs to list, inspect, or power-manage local VMware Fusion VMs. Requires VMware Fusion Pro with the REST API enabled and running.
What it does
An MCP server, built with FastMCP, for managing VMware Fusion virtual machines through Fusion's own REST API (vmrest). It exposes four tools: list_vms lists every VM registered in VMware Fusion with no parameters required; get_vm_info retrieves detailed information about a specific VM by vm_id; power_vm performs a power action - on, off, suspend, pause, unpause, or reset - on a VM given its vm_id and the desired action; and get_vm_power_state queries a specific VM's current power state. This lets an AI assistant or agent framework start, stop, inspect, and enumerate local VMware Fusion VMs conversationally instead of through the Fusion GUI. The server is split into two modules: server.py holds the FastMCP server implementation and tool definitions, while vmware_client.py wraps the vmrest REST API calls.
When to use - and when NOT to
Use it when an AI assistant needs to list, inspect, or power-manage VMware Fusion VMs on the local machine - for example, listing running VMs before a task, or resetting a hung VM. It requires VMware Fusion Pro with the REST API explicitly enabled (Preferences > Advanced > "Enable REST API"), the vmrest service running locally (default port 8697), and Python 3.10 or higher. It is not useful without VMware Fusion Pro installed and its REST API turned on and running.
Capabilities
Tool signatures at a glance: list_vms() takes no parameters; get_vm_info(vm_id) and get_vm_power_state(vm_id) each take only a VM ID string; power_vm(vm_id, action) additionally takes an action string constrained to one of "on", "off", "suspend", "pause", "unpause", or "reset".
How to install
git clone https://github.com/yeahdongcn/vmware-fusion-mcp-server.git
cd vmware-fusion-mcp-server
make env
Start VMware Fusion's REST API with vmrest (available by default at http://localhost:8697 once enabled in Preferences), then run the server with VMREST_USER=your-username VMREST_PASS=your-password make run, or via uvx for VS Code/LLM integration: VMREST_USER=your-username VMREST_PASS=your-password uvx vmware-fusion-mcp-server. A VS Code MCP config example:
{
"mcpServers": {
"vmware-fusion": {
"command": "uvx",
"args": ["vmware-fusion-mcp-server"],
"env": { "VMREST_USER": "your-username", "VMREST_PASS": "your-password" }
}
}
}
VMREST_USER and VMREST_PASS are required environment variables whenever vmrest authentication is enabled. The project ships make targets for running tests, formatting, and linting (make test, make fmt, make lint), and its own test suite lives under a dedicated tests/ directory alongside the two source modules.
Who it's for
Developers and power users running VMware Fusion Pro locally who want to list, inspect, and control their VMs' power state through an AI assistant or agent framework instead of switching to the Fusion GUI - available on PyPI and distributed under the MIT License, with a standard fork-branch-PR contribution workflow for anyone extending it.
Source README
VMware Fusion MCP Server
A Model Context Protocol (MCP) server for managing VMware Fusion virtual machines via the Fusion REST API, built with FastMCP.
Features
- List VMs: View all VMs registered in VMware Fusion.
- Get VM Info: Retrieve detailed information about a specific VM.
- Power Operations: Perform power actions (on, off, suspend, pause, unpause, reset) on a VM.
- Get Power State: Query the current power state of a VM.
- Modern MCP/LLM Integration: Exposes all features as MCP tools for LLMs and agent frameworks.
Prerequisites
- VMware Fusion Pro (with REST API enabled)
- Python 3.10+
- uv (recommended) or pip
- uvx (for VS Code/LLM integration)
Installation
Clone the repository:
git clone https://github.com/yeahdongcn/vmware-fusion-mcp-server.git cd vmware-fusion-mcp-serverSet up the environment and install dependencies:
make env
VMware Fusion Setup
Enable the REST API:
- Open VMware Fusion > Preferences > Advanced
- Check "Enable REST API"
- Note the API port (default: 8697)
Start the REST API service:
vmrestThe API will be available at
http://localhost:8697by default.
Configuration
The server connects to VMware Fusion's REST API at http://localhost:8697 by default. You must configure authentication for the vmrest API using environment variables:
VMREST_USER: Username for the vmrest API (required if authentication is enabled)VMREST_PASS: Password for the vmrest API (required if authentication is enabled)
These must be set in your shell, in your VS Code MCP config, or in your deployment environment.
Example: MCP server config for VS Code with credentials
{
"mcpServers": {
"vmware-fusion": {
"command": "uvx",
"args": ["vmware-fusion-mcp-server"],
"env": {
"VMREST_USER": "your-username",
"VMREST_PASS": "your-password"
}
}
}
}
- Set
VMREST_USERandVMREST_PASSto your vmrest credentials.
Usage
Run the MCP Server
With Make
VMREST_USER=your-username VMREST_PASS=your-password make run
With uvx (recommended for VS Code/LLM)
VMREST_USER=your-username VMREST_PASS=your-password uvx vmware-fusion-mcp-server
VS Code / LLM Integration
To use this server as a tool provider in VS Code (or any MCP-compatible client):
Install uvx:
uv pip install uvxAdd to your MCP server config (e.g.,
.vscode/mcp.json):{ "mcpServers": { "vmware-fusion": { "command": "uvx", "args": ["vmware-fusion-mcp-server"], "env": { "VMREST_USER": "your-username", "VMREST_PASS": "your-password" } } } }- Set
VMREST_USERandVMREST_PASSto your vmrest credentials. - You can now use the VMware Fusion tools in any MCP-enabled LLM or agent in VS Code.
- Set
MCP Tools
list_vms
- Description: List all VMs in VMware Fusion.
- Parameters: None
get_vm_info
- Description: Get detailed information about a specific VM.
- Parameters:
vm_id(string): The ID of the VM
power_vm
- Description: Perform a power action on a VM.
- Parameters:
vm_id(string): The ID of the VMaction(string): One of: "on", "off", "suspend", "pause", "unpause", "reset"
get_vm_power_state
- Description: Get the power state of a specific VM.
- Parameters:
vm_id(string): The ID of the VM
Development
Run Tests
make test
Format Code
make fmt
Lint
make lint
Project Structure
vmware_fusion_mcp/server.py- Main FastMCP server implementationvmware_fusion_mcp/vmware_client.py- VMware Fusion REST API clienttests/- Unit and integration tests
References
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.
