MCP Hub
Back to servers

mcp-utm

Manages UTM virtual machines on macOS via AppleScript, enabling cloning, configuration, and control with unique MAC randomization.

glama
Updated
Apr 26, 2026

mcp-utm

MCP server for managing UTM virtual machines on macOS via AppleScript.

Provides 22 tools for cloning, configuring, and controlling UTM VMs — including proper MAC address randomization for Apple Virtualization Framework clones, which enables concurrent VMs with unique network identities.

Install

# PyPI
uvx mcp-utm

# Or install globally
uv tool install mcp-utm
pip install mcp-utm

Claude Code config

{
  "mcpServers": {
    "utm": {
      "command": "uvx",
      "args": ["mcp-utm"]
    }
  }
}

Requirements

  • macOS (uses AppleScript / osascript)
  • UTM 4.6+ (download or brew install --cask utm)
  • Python 3.11+

Tools

Lifecycle

ToolDescription
list_vmsList all registered VMs with status
get_vmGet status and configuration of a VM
clone_vmClone a template with unique random MAC
start_vmStart a stopped or suspended VM
stop_vmStop a running VM (graceful or force)
delete_vmDelete a VM permanently

State

ToolDescription
suspend_vmSuspend a running VM to memory
wait_for_vmPoll until VM reaches a target status

Networking

ToolDescription
get_vm_ipDiscover VM IP via ARP table
set_vm_networkUpdate MAC address or network mode

Configuration

ToolDescription
set_vm_resourcesUpdate memory and CPU cores
rename_vmRename a VM
set_vm_displayToggle dynamic resolution

Directory Shares (VirtioFS)

ToolDescription
list_vm_sharesList shared directories
add_vm_shareAdd a host directory share
remove_vm_shareRemove a directory share
set_vm_sharesReplace all shares

Drives

ToolDescription
list_vm_drivesList attached drives
attach_driveAttach an ISO or disk image

Portability

ToolDescription
export_vmExport VM to a .utm file
import_vmImport VM from a .utm file

Console

ToolDescription
get_serial_portGet serial port address for console access

How MAC randomization works

Apple's Virtualization Framework ignores MacAddress changes written directly to config.plist — UTM caches the config in memory. This server uses AppleScript's update configuration command which properly updates UTM's internal state, giving each clone a unique MAC and therefore a unique IP on the 192.168.64.0/24 subnet.

License

MIT

Reviews

No reviews yet

Sign in to write a review