MCP server for controlling ephemeral macOS and Linux virtual machines on Apple Silicon
Mirage provides 13 tools with basic naming (vm_* prefix) and descriptions, but quality is inconsistent. All tools have input schemas with typed parameters and descriptions, meeting minimum requirements. However, descriptions are terse (avg ~40 chars, well below the 194-char baseline), lack context on when to use each tool, and omit error recovery guidance. No output schemas are documented. Parameter descriptions are minimal, e.g., 'VM name' for the 'name' param appears in 12 tools identically. No enum constraints, no pagination support, no idempotency hints. Error handling is absent from tool definitions. Security-sensitive tools (vm_delete, vm_exec) lack permission gates or confirmation patterns. Composition is reasonable (each tool does one thing), but tools like vm_run combine clone+exec+delete without clear atomicity guarantees.
Enable boot-to-desktop auto-login
Create an instant copy-on-write clone of a VM
Create a new VM from a macOS IPSW restore image or Linux ISO
Delete a VM bundle
Run a command in the guest VM
List all VM images and running VMs with their status
Print a VM's supervisor log
Zero-touch prep an installed image
Clone, run, and destroy a VM (ephemeral execution)
Descriptions are uniformly terse (avg 40 chars vs 194-char baseline). Most lack context on when to use the tool, prerequisites, or what the output contains. E.g., 'List all VM images and running VMs with their status' does not explain output structure or when to call it.
No output schemas documented. LLMs cannot infer what fields vm_list returns, what vm_create returns (VM ID? status?), or how to chain results to downstream tools. This violates the 100% baseline for A+ tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Capture the guest display as PNG
Freeze a warm restore point of a running VM
Boot a VM (headless/restore, or windowed)
Stop a running VM
Destructive tools (vm_delete, vm_stop) lack confirmation or dry-run patterns. An agent could accidentally delete a VM without a safety gate. No error recovery guidance in descriptions.
Parameter descriptions are minimal and repetitive. 'VM name' appears identically in 12 tools. No constraints (e.g., name length, allowed characters), no format hints, no enum values where applicable (e.g., vm_start 'restore' and 'gui' could be clearer about defaults).
vm_run combines clone, exec, and delete in one tool without documenting atomicity, rollback behavior, or partial failure modes. If exec fails, is the clone left behind? No error classification or recovery guidance.