mcp-utm
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-utmClone the 'Ubuntu Server' template VM."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-utmRelated MCP server: Discord Server Setup MCP
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
Tool | Description |
| List all registered VMs with status |
| Get status and configuration of a VM |
| Clone a template with unique random MAC |
| Start a stopped or suspended VM |
| Stop a running VM (graceful or force) |
| Delete a VM permanently |
State
Tool | Description |
| Suspend a running VM to memory |
| Poll until VM reaches a target status |
Networking
Tool | Description |
| Discover VM IP via ARP table |
| Update MAC address or network mode |
Configuration
Tool | Description |
| Update memory and CPU cores |
| Rename a VM |
| Toggle dynamic resolution |
Directory Shares (VirtioFS)
Tool | Description |
| List shared directories |
| Add a host directory share |
| Remove a directory share |
| Replace all shares |
Drives
Tool | Description |
| List attached drives |
| Attach an ISO or disk image |
Portability
Tool | Description |
| Export VM to a |
| Import VM from a |
Console
Tool | Description |
| Get 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
Available Tools
22 toolsattach_driveA
Attach an ISO or disk image to a removable drive.
Args: name: VM name (must be stopped) drive_id: Drive ID (from list_vm_drives) source_path: Path to ISO or disk image file
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| drive_id | Yes | ||
| source_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions only the action and preconditions, but does not disclose side effects, success/failure indicators, or behavior on existing attachments. Minimal beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences plus structured parameter list. No redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers preconditions and parameter origins, but lacks description of return value, postconditions, or confirmation of successful attachment. Adequate given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so description fully compensates by explaining each parameter's purpose and constraints (name: must be stopped, drive_id: from list_vm_drives, source_path: path).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (attach), the resource (ISO/disk image to removable drive), and distinguishes from siblings as no other tool performs this operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit precondition (VM must be stopped) and indicates source for drive_id (list_vm_drives). Lacks explicit alternatives or when-not-to-use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_vmA
Clone a UTM template VM with a unique random MAC address.
Args: template: Name of the template VM to clone name: Name for the new VM randomize_mac: Assign a random MAC so clones get unique IPs (default: True)
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes | ||
| name | Yes | ||
| randomize_mac | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions MAC randomization but does not discuss side effects (e.g., whether the original template is affected), required permissions, or error conditions. Minimal behavioral disclosure for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single-sentence summary followed by an Args section. No superfluous information, and the structure allows quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description provides essential purpose and parameter semantics. Minor gaps exist (e.g., missing return value details, error handling) but overall adequate for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds clear explanations for each parameter: 'template' is the source VM name, 'name' is the new VM name, and 'randomize_mac' explains its purpose and default. This compensates well for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Clone', the resource 'UTM template VM', and the key feature 'unique random MAC address'. This distinguishes it from other VM operations like start, stop, or add shares.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for cloning from a template VM but does not provide explicit guidance on when to use this versus other tools, nor does it state when not to use it or suggest alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vmC
Delete a VM permanently. Cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations so description must disclose behavior. It correctly signals destruction is permanent, but omits details like required VM state, effect on attached drives, or need for confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is direct and contains no filler. Perfectly concise for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple destructive operation with one required parameter, but lacks preconditions and post-condition details beyond permanence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has one parameter 'name' with zero description. The description does not mention this parameter or explain its format/usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Delete a VM' which identifies the action and resource. The permanence is noted, helping distinguish from stop/suspend siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use delete vs other VM lifecycle tools like stop or suspend. No prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_vmB
Export a VM to a .utm file.
Args: name: VM name path: Destination file path (e.g. "/tmp/my-vm.utm")
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states action without disclosing side effects (e.g., whether VM is locked, if state must be off, or if export modifies the VM). Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short single sentence plus minimal Args list. No wasted words; adequately front-loaded. Could benefit from structured use of description to include more details without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 simple params and no output schema or annotations, the description covers basic function. However, missing details like VM state requirements, synchronous/asynchronous behavior, and output format confirmation limit completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, description adds basic parameter meaning (VM name, path example) but lacks constraints like path format, required permissions, or file extension details. Adds some value but insufficient for full understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Export a VM to a .utm file.' Distinguishes from siblings like clone_vm (creates copy) and import_vm (opposite operation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., may require VM to be stopped, compare to clone_vm). The description lacks context for proper tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_serial_portA
Get the serial port address of a VM.
Returns the ptty path (for Apple VF) or TCP address/port (for QEMU) that can be used for direct console access without SSH.
Args: name: VM name
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the variable return format (ptty vs TCP) based on VM type, but does not mention side effects, prerequisites (e.g., VM must exist), or error scenarios. The read-only nature is implied but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the purpose and return types, followed by a single-line parameter definition. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description covers the essential: what it returns, platform variations, and use case. However, it omits prerequisites like VM state and does not explicitly differentiate from similar sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It clarifies that 'name' refers to the VM name, but provides no additional context like format, expected values, or relationship to other tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource ('serial port address of a VM') and the action ('get'), and distinguishes the return type by platform (Apple VF vs QEMU). It is specific and helps the agent understand the tool's exact purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for direct console access without SSH, but it does not explicitly state when to use this tool over alternatives like get_vm_ip. No when-not conditions or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vmA
Get status and configuration of a VM by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It indicates a read operation but does not disclose whether authentication is needed, what exactly 'status and configuration' entails, or any potential side effects. Adequate but not explicit beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 8 words, directly conveying the action and resource. No unnecessary words or structure. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is mostly complete. It explains what the tool does and how to specify the VM. Could elaborate on what configuration covers, but still adequate for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'name' exists with no schema description (0% coverage). The description adds 'by name', clarifying its purpose, but adds no format, constraints, or examples beyond what the schema already provides (string, required).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get status and configuration of a VM by name', using a specific verb ('Get'), resource ('VM'), and scope ('status and configuration'). This distinguishes it from sibling tools like list_vms (listing) and other getters like get_vm_ip (specific attribute).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving details of a single VM but provides no explicit guidance on when to use this tool versus alternatives (e.g., list_vms for all VMs, get_vm_ip for specific info). No when-not-to-use or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vm_ipA
Discover the IP address of a running VM via ARP.
Polls the ARP table for the VM's MAC address. Works for Apple VF (macOS) VMs on the 192.168.64.0/24 subnet and bridged QEMU VMs.
Args: name: VM name timeout: Seconds to wait for ARP discovery (default: 60)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| timeout | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses polling behavior, applicable VM types, and timeout. It does not contradict any annotations (none provided) and is consistent with a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is clear and well-structured with a summary line followed by details and argument documentation. It is appropriately concise without being overly brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters, no output schema, and no annotations, the description sufficiently covers the purpose, mechanism, and parameters. It lacks return value details but is adequate for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by explaining 'name' as VM name and 'timeout' with default 60. However, it does not specify name format or constraints, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it discovers the IP of a running VM via ARP, specifying VM types and subnet. It is distinct from sibling tools like get_vm or list_vms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the mechanism (ARP table polling) and provides context for when it works (Apple VF and QEMU VMs). It does not explicitly state when not to use, but the context implies usage after VM is running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_vmC
Import a VM from a .utm file.
Args: path: Path to the .utm file to import
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits such as whether the import overwrites existing VMs, required permissions, or error handling for missing files. The burden is not met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short: one sentence plus an argument line. It is front-loaded and efficient, with no wasted words. However, it could benefit from slight expansion for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool and no output schema, the description still omits important context like return values, prerequisites (e.g., VM state), and side effects. It is not complete for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and while the description adds that 'path' is for a '.utm file', it lacks details on path type (absolute/relative), file accessibility, or constraints. The added value over the schema is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Import a VM from a .utm file,' clearly identifying the verb and resource. It distinguishes from sibling tools like export_vm (export to file) and list_vms (listing). The mention of '.utm file' adds specificity, though details about the operation context are minimal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., creating a new VM, cloning). There is no mention of prerequisites, complementary tools, or scenarios where importing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vm_drivesA
List drives attached to a VM with their IDs and sizes.
Args: name: VM name
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states function. It does not explicitly disclose read-only nature or potential side effects, leaving the agent to infer safety from the verb 'list'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is extremely concise, with one sentence and an Args line. No wasted words, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool with an output schema, the description covers the essential purpose and parameter. Minor omission: no mention of error conditions or response structure, but output schema compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage (only title 'Name'), but the tool description adds 'VM name' for the parameter, providing meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists drives attached to a VM with IDs and sizes, using a specific verb and resource. It distinguishes from siblings like list_vms and attach_drive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use when needing drive information for a VM, but provides no explicit when-to-use or alternatives. No exclusions or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vmsA
List all registered UTM virtual machines with their status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states a basic list action without mentioning any behavioral traits such as that it's read-only, performance implications, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that is front-loaded and contains no superfluous information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only listing), the description is complete. An output schema exists, so return values need not be elaborated. The description covers the essential scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and schema description coverage is 100%. The description adds no parameter info because none exist, which is appropriate. Baseline 4 is suitable for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'List', the resource 'registered UTM virtual machines', and the returned information 'with their status'. This distinguishes it from sibling tools like get_vm (single VM) and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While it's implied that it's for listing all VMs, there is no mention of exclusions or alternatives (e.g., for specific VM use get_vm).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_vmA
Rename a stopped VM.
Args: name: Current VM name (must be stopped) new_name: New name for the VM
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| new_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It discloses the precondition (stopped VM) but omits details like error behavior if the VM is running, whether the operation is synchronous, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus labeled parameter explanations—extremely concise and front-loaded with the core action and precondition. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers purpose, preconditions, and parameters adequately for a simple rename operation. However, it lacks any mention of return values or reversibility, which could be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining each parameter: 'name' is the current VM name (must be stopped) and 'new_name' is the new name. This adds critical meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Rename'), the resource ('a stopped VM'), and a precondition ('stopped'). This distinguishes it from sibling tools like 'clone_vm' or 'delete_vm'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly notes the VM must be stopped before renaming, providing a clear usage condition. It does not specify when not to use or suggest alternatives, but the essential context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_vm_displayA
Toggle dynamic resolution on the VM display.
Args: name: VM name (must be stopped) dynamic_resolution: Enable or disable dynamic resolution
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| dynamic_resolution | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states the precondition, but fails to detail what happens during the toggle, error conditions, or side effects. The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single action line followed by clear parameter definitions. No unnecessary words, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 parameters, no output schema), the description is mostly adequate but lacks details on return values, error handling, or prerequisites beyond the VM state. Sibling tools are not differentiated aside from the action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description adds significant value. It explains both parameters: name is the VM name (with a constraint), and dynamic_resolution explicitly says 'Enable or disable dynamic resolution,' which clarifies the boolean's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action: 'Toggle dynamic resolution on the VM display,' which is a specific verb and resource. It clearly distinguishes from sibling tools, none of which involve display settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a crucial precondition: the VM must be stopped ('name: VM name (must be stopped)'). However, it does not mention when not to use this tool, or suggest alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_vm_networkA
Update network configuration of a stopped VM.
Args: name: VM name (must be stopped) mac_address: New MAC address (e.g. "aa:bb:cc:dd:ee:ff"), or None to keep current mode: Network mode ("shared" or "bridged"), or None to keep current
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| mac_address | No | ||
| mode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description adds behavioral context: it explains that passing None for mac_address or mode keeps the current value, and that the VM must be stopped. This goes beyond the schema (which only defines nullability). It could be improved by noting whether changes take effect immediately or after restart, but it covers key behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence for purpose followed by three inline parameter descriptions. No unnecessary words; every sentence adds value. Well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (3 parameters, no output schema, no annotations), the description covers the essentials: purpose, precondition, and parameter behaviors. It lacks error handling details or confirmation of what the function returns, but for a simple update tool, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining each parameter: name as 'VM name (must be stopped)', mac_address with an example and clarification of None behavior, and mode with valid values and None behavior. This is comprehensive and adds critical meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Update network configuration of a stopped VM.' It specifies the resource (network configuration) and a precondition (VM must be stopped). This distinguishes it from sibling tools like set_vm_display or set_vm_resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear precondition: VM must be stopped. However, it does not explicitly mention when to use this tool versus alternatives, nor does it give examples of when not to use it. Given the context, the prerequisite is useful but lacks comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_vm_resourcesA
Update memory and CPU cores of a stopped VM.
Args: name: VM name (must be stopped) memory: Memory in MiB, or None to keep current cpu_cores: Number of CPU cores, or None to keep current
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| memory | No | ||
| cpu_cores | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden. It adds the important constraint that the VM must be stopped. However, it does not disclose other behavioral aspects such as what happens if the VM is running, whether a reboot is required, or any error conditions. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a single sentence followed by a clear Args section with three items. Every sentence adds value, and the structure is optimal for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description covers the essential aspects: action, precondition (stopped VM), and parameter semantics. However, it lacks information on return values, validation ranges, or error handling, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It explains each parameter: 'name: VM name', 'memory: Memory in MiB', 'cpu_cores: Number of CPU cores', and clarifies the 'None' default behavior. This adds significant value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Update memory and CPU cores of a stopped VM.' It identifies the specific resource (memory and CPU cores) and distinguishes from sibling tools like set_vm_display or set_vm_network.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies that the VM must be stopped, providing a clear prerequisite. It also explains the optional parameters with None to keep current values. However, it does not explicitly compare with other VM modification tools or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_vmB
Start a stopped or suspended VM.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description bears full burden. It only states the action 'start' but does not disclose behavioral traits like potential delays, permission requirements, or side effects. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-front-loaded sentence with no extraneous words. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the core action but omits parameter clarification and usage context, making it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'name' has 0% schema description coverage, and the tool description does not clarify whether it refers to VM name, ID, or path, leaving the agent to guess its semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action ('start'), the resource ('VM'), and the applicable states ('stopped or suspended'), clearly distinguishing from sibling tools like stop_vm and suspend_vm.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives, such as when a VM is already running or prerequisites like VM existence. The description lacks context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_vmB
Stop a running VM.
Args: name: VM name force: Force stop if graceful shutdown fails
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| force | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description lacks behavioral details such as state changes, reversibility, required permissions, or whether force stop is safe. Only basic stop action described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, two sentences plus arg list. However, structure could be improved with bullet points or clearer separation of parameter descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations. Description does not cover return values, error handling, prerequisites, or post-conditions. For a simple action, still lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains both parameters (name, force) minimally. Provides meaning beyond schema for force parameter but not for name. Adequate for simple tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Stop a running VM' with a specific verb and resource. It distinguishes from sibling tools like start_vm, suspend_vm, and delete_vm.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Usage is implied but not clarified, e.g., when a graceful shutdown is needed or when to force stop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suspend_vmA
Suspend a running VM to memory.
Args: name: VM name (must be running) save: Save VM state to disk for later resume (default: True)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| save | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the sole source of behavioral info. It discloses that the VM is suspended to memory and optionally saves state to disk (via the save parameter). However, it does not mention what happens after suspension (e.g., how to resume), required permissions, or side effects like network disconnection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences: the first states the action, and the second lists parameters with conditions. Every sentence is necessary and front-loaded, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description covers the basic action and parameters. However, it lacks information about the result of the operation (e.g., return status), error conditions, or instructions for resuming, which would make it more complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It explains that 'name' must be a running VM and adds context for 'save' as saving state to disk for later resume. This adds meaningful semantics beyond the schema's type and default, though it could elaborate on the exact state saved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Suspend' and resource 'a running VM to memory', clearly indicating the action. It distinguishes from sibling tools like stop_vm (likely powers off) and start_vm by focusing on suspending to memory, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the prerequisite that the VM must be running, but provides no guidance on when to use this tool versus alternatives such as stop_vm or wait_for_vm. There is no explicit comparison or exclusions, leaving the agent without clear decision-making context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_vmA
Wait until a VM reaches a target status.
Useful for orchestration — start a VM then wait for it to be ready.
Args: name: VM name target_status: Status to wait for: "stopped", "started", or "paused" timeout: Seconds to wait (default: 120)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| target_status | No | started | |
| timeout | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must explain behavior. It mentions waiting and timeout, but does not specify polling interval, blocking nature, or behavior on timeout expiry (e.g., error vs success). This leaves some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is four sentences, front-loaded with purpose and usage hint, then parameter details. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential purpose and parameters, but lacks information about return values or error handling (e.g., what happens on timeout). Given no output schema, more detail on timeout behavior would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description includes an Args block that explains each parameter, including valid target_status values and timeout default. This adds significant meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool waits for a VM to reach a target status, using specific verb and resource. It distinguishes itself from sibling tools like start_vm or stop_vm by focusing on the waiting/polling aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description gives a clear usage context ('Useful for orchestration — start a VM then wait for it to be ready'), implying when to use it. However, it lacks explicit when-not-to-use or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct operation: lifecycle (start/stop/suspend/delete/clone/import/export/rename), configuration (resources/network/display/shares/drives), and status (get/ip/serial/list/wait). No functional overlaps.
All tools follow a consistent verb_noun pattern in snake_case (e.g., start_vm, set_vm_network). No mixing with camelCase or inconsistent verb styles.
22 tools is slightly above the typical 3-15 range but justified by comprehensive VM management—lifecycle, configuration, and diagnostics are all covered without being excessive.
Covers CRUD, lifecycle, and most configuration aspects. Minor gap: no tool to create a VM from scratch (only clone/import), but core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Secure access to a dedicated Otherlay Mac for files, terminals, Git, builds and UI inspection.
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides programmatic access to Apple's container CLI tool on macOS, enabling users to perform 50+ container operations including creation, management, and system control of Apple Silicon containers.3Apache 2.0
- FlicenseAqualityBmaintenanceAn automation tool for macOS that uses AppleScript and JXA to manage Discord server setups through AI assistants. It enables the creation and configuration of servers, channels, roles, and settings using pre-built templates or custom commands.1924
- AlicenseBqualityCmaintenanceMCP bridge for Nemeton — control native macOS virtual machines (Apple Virtualization.framework) from Claude Desktop, Claude Code, or any MCP client. 50+ tools across VM lifecycle, snapshots, console, files, networking, and host metrics. Bridge open-source (MIT), Nemeton app is commercial.491MIT
- AlicenseAqualityCmaintenanceEnables full control of macOS by executing AppleScript commands through an MCP server, allowing automation of tasks, application control, and system management.112315MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/neverprepared/mcp-utm'
If you have feedback or need assistance with the MCP directory API, please join our Discord server