SlateVM
officialNative Apple-silicon VM platform with 45 MCP tools to create, observe and operate macOS, Linux, and Windows 11 ARM guests.
What can you do with SlateVM MCP?
- Create and boot VMs — Create a VM from a listed install image, then start it and wait until it reaches a target run state.
- Observe the guest — Capture the screen, read console text, or wait for a regex pattern to appear on the console.
- Operate the guest — Inject keyboard, pointer, and text input, or run commands inside a booted guest over its per-VM SSH key.
- Configure hardware — Live-apply hardware and network settings, grow a disk, or set display resolution and console window size.
- Share host folders — Add or remove virtio-fs shared folders in mac/Linux VMs and toggle their read-only flag.
- Diagnose problems — Pull a one-shot diagnostics bundle or tail recent log lines when a VM won't boot.
Documentation
Real computers your AI can see and operate.
SlateVM’s built-in MCP server gives any compatible AI client 46 structured tools to create virtual machines, watch their screens, type and click, run commands inside the guest, and verify the result — with the same contract on Mac, Windows, and Linux.
Automation with evidence at every step.
Observe
Live state and jobs, screen capture, on-screen text (OCR), serial console text for headless Linux, logs, and guest network addresses.
Act
Keyboard, pointer, scroll, and text input; commands inside the guest over a per-VM SSH identity; hardware, disk, display, network, and shared-folder changes.
Verify
Wait for a state or for text to appear, capture the changed screen, and read diagnostics before reporting back.
Not a shell wrapper. Not UI scripting.
A small local adapter connects your AI client to SlateVM over a channel that never leaves your machine. SlateVM — the component that owns the VMs — answers every call, so the agent sees the same truth as the app. MCP in the hypervisor →
All 46 tools.
Identical names, schemas, and error codes on every host. A host that cannot do something (for example, macOS guests outside a Mac) returns a clear error rather than a different tool.
App (4)
launch_app
Launch the SlateVM app (visible, foreground).
quit_app
Quit the SlateVM app.
app_status
Report whether the SlateVM app is running, whether its control local channel is reachable, and the RUNNING app's version/build (read live from its bundle, so it stays correct after an auto-update swaps the app mid-session).
host_capabilities
Report host capabilities: nested-virt support, free disk, virtualization entitlement, macOS version.
Create & install (7)
create_vm
Create a new VM.
list_images
List all OS install images SlateVM can see (its image caches + your Downloads) with a guessed os, size, and whether it's readable — so you can pick a path for create_vm without being handed one.
list_restore_images
List macOS restore images (.ipsw) SlateVM knows about.
set_installer_media
Re-point a stopped VM's installer image to a new accessible path and write a fresh bookmark.
finish_install
Explicitly mark a VM's OS install complete: eject the installation ISO/media and flip installState from 'installing' to 'installed'.
apply_guest_tools
Stage/apply the guest-tools disc for a VM.
set_attach_linux_guest_tools
Toggle mounting the SlateVM Tools disc for a desktop Linux VM.
Lifecycle (8)
list_vms
List all SlateVM virtual machines with their state and hardware.
get_vm
Get the full configuration of one VM.
start_vm
Boot a VM and open its console window (visible).
stop_vm
Stop a running VM.
suspend_resume_vm
Toggle suspend/resume for a running VM.
wait_for_state
Block until a VM reaches a target run state, or timeout.
delete_vm
Delete a VM (moves its bundle to the trash).
reveal_vm
Reveal a VM's bundle in the file browser.
See the machine (4)
capture_screen
Capture the guest's screen.
read_console_text
Read the guest console as text.
wait_for_text
Block until `pattern` (case-insensitive regex) appears on the guest console, or timeout — polling for you so you don't sleep-and- screenshot.
read_guest_clipboard
Extract TEXT from a GRAPHICAL guest — the framebuffer analogue of read_console_text (which only covers headless serial Linux).
Act on the machine (5)
send_input
Inject input into the guest (not the Mac desktop).
run_in_guest
Run a command in a booted guest over SSH using its per-VM AI key.
provision_ssh
Return the dedicated per-VM SSH public key + an installCommand.
ssh_status
Report whether a VM has an AI SSH key provisioned, and its public key.
revoke_ssh
Remove the host-side AI SSH key for a VM.
Configure (7)
set_hardware
Live-apply hardware/network settings to a VM.
resize_disk
Grow a VM's disk.
set_display_resolution
Set the guest display resolution (headless Linux server; applies next boot).
set_console_window_size
Set the console window size for a VM.
add_shared_folder
Share a host folder into a mac/Linux VM (virtio-fs).
remove_shared_folder
Remove a shared folder from a VM.
set_shared_folder_readonly
Set a shared folder's read-only flag.
Network (6)
guest_network
Discover a running guest's IP address(es) from its MAC via the DHCP lease table and ARP (read-only).
set_linux_network_path
Set a Linux VM's NAT driver: native (Apple VZNAT) or service (socket_vmnet).
networking_status
Report whether the SlateVM networking service is installed and healthy.
networking_install
Install the SlateVM networking service.
networking_repair
Repair/reinstall the SlateVM networking service (admin-approved).
networking_uninstall
Uninstall the SlateVM networking service (admin-approved).
Jobs & diagnostics (5)
job_status
Get a background job's state (running/succeeded/failed), its latest stage, and its result or error.
job_wait
Block until a background job finishes or the timeout elapses; returns its state + result/error.
list_jobs
List recent background jobs and their states.
get_diagnostics
One-shot troubleshooting bundle for a VM: state, lastError ({code, message} — the reason a VM won't boot, e.g. MEDIA_INACCESSIBLE), per-drive media accessibility, recent log lines, disk size, network-service health, and config. Call this first when something is wrong.
tail_log
Return recent log lines for a VM.