Skip to main content
Glama
VMware Fusion MCP Server

VMware Fusion MCP Server

by yeahdongcn

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

Demo

  • 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.


Related MCP server: OpenAPI MCP Server

Prerequisites

  • VMware Fusion Pro (with REST API enabled)

  • Python 3.10+

  • uv (recommended) or pip

  • uvx (for VS Code/LLM integration)


Installation

  1. Clone the repository:

    git clone https://github.com/yeahdongcn/vmware-fusion-mcp-server.git
    cd vmware-fusion-mcp-server
  2. Set up the environment and install dependencies:

    make env

VMware Fusion Setup

  1. Enable the REST API:

    • Open VMware Fusion > Preferences > Advanced

    • Check "Enable REST API"

    • Note the API port (default: 8697)

  2. Start the REST API service:

    vmrest

    The API will be available at http://localhost:8697 by 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_USER and VMREST_PASS to your vmrest credentials.


Usage

Run the MCP Server

With Make

VMREST_USER=your-username VMREST_PASS=your-password make run
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):

  1. Install uvx:

    uv pip install uvx
  2. Add 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_USER and VMREST_PASS to your vmrest credentials.

    • You can now use the VMware Fusion tools in any MCP-enabled LLM or agent in VS Code.


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 VM

    • action (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 implementation

  • vmware_fusion_mcp/vmware_client.py - VMware Fusion REST API client

  • tests/ - Unit and integration tests


License

MIT License - see LICENSE for details.


Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Run tests and linting: make test && make lint

  5. Submit a pull request


References

Available Tools

4 tools
get_vm_infoB

Get detailed information about a specific VM.

Inputs: vm_id (required). Returns: object

get_vm_power_stateB

Get the power state of a specific VM.

Inputs: vm_id (required). Returns: object

list_vmsB

List all VMs in VMware Fusion.

Inputs: no named parameters. Returns: object

power_vmA

Perform a power action on a VM. Valid actions are 'on', 'off', 'shutdown', 'suspend', 'pause', 'unpause'.

Inputs: vm_id (required), action (required). Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: get_vm_info retrieves detailed VM data, get_vm_power_state focuses only on power status, list_vms enumerates all VMs, and power_vm performs power operations. There is no overlap or ambiguity between these functions.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case: get_vm_info, get_vm_power_state, list_vms, and power_vm. The naming is predictable and uniform throughout the set.

    Tool Count4/5

    With 4 tools, the count is reasonable for basic VM management, covering listing, info retrieval, power state checks, and power actions. It might be slightly thin for advanced operations like configuration changes, but it's well-scoped for core functionality.

    Completeness3/5

    The tools cover core VM operations (list, info, power state, power actions), but there are notable gaps for a full VM management domain, such as creating/deleting VMs, modifying settings, or handling snapshots. Agents can perform basic tasks but may hit dead ends for more complex workflows.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol Server that enables LLMs to interact with and execute REST API calls through natural language prompts, supporting GET/PUT/POST/PATCH operations on configured APIs.
      6
      Apache 2.0
    • A
      license
      C
      quality
      D
      maintenance
      A Model Context Protocol server for the Hetzner Cloud API that enables natural language management of cloud infrastructure. Users can list, create, and modify servers, networks, volumes, and load balancers through MCP-compatible clients.
      67
      352 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for VMware vSphere/vCenter operations, enabling natural language control of VMs, hosts, and infrastructure.
      Apache 2.0