Parallels MCP Server
Click on "Deploy 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., "@Parallels MCP Serverlist my virtual machines"
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.
Parallels MCP Server
A Model Context Protocol (MCP) server for managing Parallels Desktop virtual machines.
Features
This MCP server provides tools to interact with Parallels Desktop VMs:
list_vms - List all virtual machines
get_vm_info - Get detailed information about a specific VM
get_vm_status - Get the current status of a VM
start_vm - Start a virtual machine
stop_vm - Stop a virtual machine (with optional force flag)
suspend_vm - Suspend a virtual machine
resume_vm - Resume a suspended virtual machine
reset_vm - Reset (restart) a virtual machine
exec_vm_command - Execute a command inside a running VM
Related MCP server: vmware-mcp
Prerequisites
macOS with Parallels Desktop installed
Node.js 16 or higher
prlctlcommand-line tool (comes with Parallels Desktop)
Installation
From npm
# Install globally
npm install -g parallels-mcp-server
# Or use with npx (no installation needed)
npx parallels-mcp-serverFrom source
# Clone the repository
git clone <repository-url>
cd parallels-mcp-server
# Install dependencies
npm install
# Build the project
npm run buildUsage
With Claude Desktop
After installation, add this to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"parallels": {
"command": "npx",
"args": ["parallels-mcp-server"]
}
}
}Or if you have it installed globally:
{
"mcpServers": {
"parallels": {
"command": "parallels-mcp-server"
}
}
}With VS Code
The server is already configured in .vscode/mcp.json and ready to use!
Development
# Run in development mode with tsx
npm run devExample Usage
Once connected to an MCP client, you can use the tools like this:
Available Tools
list_vms
Lists all Parallels Desktop virtual machines on your system.
Parameters: None
Example:
Use the list_vms toolget_vm_info
Get detailed information about a specific virtual machine including configuration, hardware specs, and network settings.
Parameters:
vm(required): VM name or UUID
Example:
Use get_vm_info with vm="MyVM"get_vm_status
Get the current operational status of a virtual machine (running, stopped, suspended, etc.).
Parameters:
vm(required): VM name or UUID
Example:
Use get_vm_status with vm="MyVM"start_vm
Start a stopped or suspended virtual machine.
Parameters:
vm(required): VM name or UUID
Example:
Use start_vm with vm="MyVM"stop_vm
Stop a running virtual machine gracefully or forcefully.
Parameters:
vm(required): VM name or UUIDforce(optional): Boolean - if true, performs a hard shutdown (kill)
Examples:
# Graceful shutdown
Use stop_vm with vm="MyVM"
# Force shutdown
Use stop_vm with vm="MyVM" and force=truesuspend_vm
Suspend a running virtual machine, saving its current state to disk.
Parameters:
vm(required): VM name or UUID
Example:
Use suspend_vm with vm="MyVM"resume_vm
Resume a suspended virtual machine from its saved state.
Parameters:
vm(required): VM name or UUID
Example:
Use resume_vm with vm="MyVM"reset_vm
Restart a virtual machine (equivalent to pressing the reset button).
Parameters:
vm(required): VM name or UUID
Example:
Use reset_vm with vm="MyVM"exec_vm_command
Execute a command inside a running virtual machine.
Parameters:
vm(required): VM name or UUIDcommand(required): Command to execute
Example:
Use exec_vm_command with vm="MyVM" and command="ls -la /home"Note: The VM must be running and Parallels Tools must be installed for command execution to work.
Security Notes
This server has direct access to your Parallels VMs via
prlctlBe careful when executing commands inside VMs
The server requires Parallels Desktop to be installed and properly configured
Commands are executed with your current user permissions
Troubleshooting
Command not found: prlctl
Ensure Parallels Desktop is installed and the command-line tools are in your PATH. You can verify by running:
prlctl --versionVM not found
Check the VM name is correct (case-sensitive)
Use
list_vmsto see available VMsYou can use either the VM name or UUID
Command execution fails
Ensure the VM is running
Verify Parallels Tools are installed in the guest OS
Check that the command syntax is correct for the guest OS
Permission denied
The server runs with your user permissions. Ensure you have access to Parallels Desktop and the VMs.
FAQ
Q: Does this work on Windows or Linux?
A: No, this server is macOS-only as it requires Parallels Desktop, which is a macOS application.
Q: Can I use this with other MCP clients besides Claude Desktop?
A: Yes! Any MCP-compatible client can use this server.
Q: Is it safe to publish this to npm?
A: Yes, but make sure to update the author information and repository URL in package.json before publishing.
Q: How do I find my VM's UUID?
A: Use the list_vms tool or run prlctl list -a in the terminal.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details
Support
For issues and feature requests, please use the GitHub issue tracker.
The server runs with the same permissions as the user running it
Troubleshooting
If you encounter issues:
Verify Parallels Desktop is installed:
which prlctlTest that you can run prlctl commands manually:
prlctl list -aCheck the server logs (errors are logged to stderr)
Make sure the build directory exists and contains
index.js
License
MIT
Available Tools
9 toolsexec_vm_commandC
Execute a command inside a running virtual machine
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | VM name or UUID | |
| command | Yes | Command to execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states the execution environment is a running VM but omits critical traits such as required permissions, output capture, timeouts, side effects, or whether the command runs as root.
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?
A single, front-loaded sentence with no filler. It is appropriately sized for a simple two-parameter tool.
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?
With no annotations and no output schema, the description is too thin for a command-execution tool. An agent cannot learn what the tool returns, whether output is captured, or what constraints apply when commanding a running guest.
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 100% for both parameters, so the schema already explains 'vm' and 'command'. The description adds no formatting, naming, or execution-context details beyond the schema baseline.
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?
Names a specific verb (Execute) and resource (command inside a running VM). It clearly separates itself from the lifecycle siblings like start_vm and stop_vm, though it does not explicitly contrast with any alternative.
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 when-to-use or when-not-to-use guidance, and no alternatives are named. The phrase 'inside a running virtual machine' implies the VM must already be running, but prerequisites like guest tools or permissions are unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vm_infoC
Get detailed information about a specific virtual machine
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | VM name or UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read ('Get') but does not state permissions, whether the call is side-effect free, or what scope of detail ('detailed') is actually returned.
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?
A single efficient sentence with no wasted words, front-loading the verb and resource. Appropriately sized for a one-parameter read tool.
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 single-param read tool with no output schema, the description is minimally adequate but adds nothing beyond the schema. It does not clarify the relationship to the several sibling VM-inspection 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?
Schema description coverage is 100% and the single 'vm' parameter is documented as 'VM name or UUID', so the schema does the heavy lifting. The description adds nothing about accepted identifier formats beyond what the schema already says.
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 specific verb+resource: 'Get detailed information about a specific virtual machine'. However, it does not differentiate itself from the sibling get_vm_status, which an agent could easily confuse with a request for detailed VM info.
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 versus get_vm_status or list_vms, and no prerequisites or context is offered. The agent must infer the distinction from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vm_statusC
Get the current status of a virtual machine
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | VM name or UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says nothing about whether this is a safe read (implied but unstated), what 'status' values exist, whether the VM must be powered on, latency, or error behavior for unknown VMs.
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?
A single short sentence with the resource and scope front-loaded and no filler. It is terse to the point of being under-specified, but not verbose.
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 single-parameter read with no annotations and no output schema, the description is minimally adequate. It never conveys what the returned status looks like (running/stopped/suspended), which is the tool's whole purpose and is not covered by any structured field.
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 100% and there is a single parameter ('vm') documented as 'VM name or UUID'. The description adds no meaning beyond the schema, so the baseline 3 applies.
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?
States a specific verb ('Get') and resource ('current status of a virtual machine'), so the agent knows exactly what it retrieves. However, it does not differentiate itself from the close sibling get_vm_info, which an agent could easily confuse with a status query.
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 when-to-use guidance and no alternatives named, despite eight siblings including get_vm_info, list_vms, and the start/stop/suspend lifecycle tools. The agent must infer from the name alone that this is the status-only read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vmsB
List all Parallels Desktop virtual machines
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read-only enumeration but never states that it is non-destructive, whether it returns all VMs or only running ones, or how results are ordered. Minimal 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?
A single focused sentence with no waste, though it is arguably too terse to carry any useful context.
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 zero-param enumeration tool with no output schema, the description is only minimally adequate. It should at least state what is returned (all VMs vs. running ones) and that it is safe/read-only.
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?
Zero parameters and 100% coverage, so the baseline of 4 applies. There is nothing for the description to clarify.
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?
States a specific verb (List) and resource (Parallels Desktop virtual machines). It is reasonably distinguishable from siblings like get_vm_info (single VM detail) and the lifecycle tools, though it does not explicitly contrast itself with them.
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 when-to-use guidance or mention of alternatives. The agent must infer that this is the discovery step before calling get_vm_info or lifecycle tools, but nothing in the description says so.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_vmC
Reset (restart) a virtual machine
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | VM name or UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden, yet it only states that reset equals restart. For a VM reset it says nothing about whether this is a hard power-cycle, whether running workloads/in-flight state are lost, whether it is graceful or forced, or which permissions are required.
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?
A single four-word sentence with the verb front-loaded and zero filler. Nothing could be trimmed without losing the clarifying 'restart' synonym.
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 disruptive restart operation with no annotations and no output schema, the description leaves out the operational essentials: data-loss risk, force vs graceful behavior, and any required state or permissions. The schema covers the parameter, but the description does not cover the tool's behavior.
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 100%, so the single 'vm' parameter (name or UUID) is already fully documented in the schema. The description adds no format or identification detail beyond what the schema supplies, which is the expected baseline when the schema does the work.
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?
States a specific verb (reset) with a clarifying synonym (restart) and the target resource (virtual machine), which is enough to distinguish it from siblings like start_vm or stop_vm at a glance. It stops short of explicitly contrasting reset with the stop/start pair or suspend/resume, so the boundary with those siblings is left implicit.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as stop_vm followed by start_vm. The agent must infer the selection criteria entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_vmC
Resume a suspended virtual machine
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | VM name or UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It doesn't disclose that this is a state-changing (non-read-only, potentially destructive to current state) operation, nor any auth requirements, nor what happens if the VM isn't suspended.
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 front-loaded sentence with zero filler. Appropriately sized, though so terse it omits useful context.
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, no behavioral detail, and no differentiation from the nearly-identical start_vm sibling. For a state-mutating VM control tool this is under-specified.
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 100% with a self-documenting 'vm' parameter. The description adds no meaning beyond the schema, which is acceptable given full coverage.
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 specific verb+resource: 'Resume' + 'virtual machine'. However, it does not differentiate from sibling start_vm, which for a power-state operation is a critical ambiguity an agent needs resolved.
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 when-to-use guidance. The description implies it applies to suspended VMs but doesn't state the precondition (VM must be suspended) or distinguish from start_vm, which is the obvious sibling confusion for this operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_vmC
Start a virtual machine
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | VM name or UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the call is idempotent, what happens if the VM is already running, whether it blocks until boot completes, or what permissions are required for a state-changing 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?
One short, front-loaded sentence with zero filler. It is efficient, though its brevity is part of the under-specification problem rather than a strength in itself.
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 state-mutating VM lifecycle tool with no annotations and no output schema, the description omits critical context: current-state prerequisites, the start-vs-resume distinction, and any indication of the result. An agent could invoke it against the wrong state and get an error.
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 100%: the single required parameter is documented as "VM name or UUID". The description adds nothing beyond that schema text, so the baseline of 3 is appropriate.
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 a specific verb and resource ("Start a virtual machine"), so the action is unambiguous. However, it offers no differentiation from siblings that are semantically close, notably resume_vm and reset_vm, leaving the agent to guess which lifecycle operation applies.
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?
There is no guidance on when to use start_vm versus resume_vm (starting a stopped VM vs. resuming a suspended/paused one), which is the key ambiguity among the siblings. No preconditions, state requirements, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_vmC
Stop a virtual machine
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | VM name or UUID | |
| force | No | Force shutdown (kill) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the action but does not disclose what stopping entails: whether it is graceful, whether data is lost, what happens to the VM state, or how the 'force' parameter changes behavior. This is a significant gap for a mutation tool.
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, front-loaded sentence with zero wasted words. It is optimally concise for stating the core action, though brevity here comes at the cost of other dimensions.
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 this is a mutation tool with no annotations and no output schema, the description is far too sparse. It omits any mention of side effects, the difference between a graceful stop and a forced kill, or how the 'force' parameter affects behavior. An agent lacks critical context to invoke it safely.
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 100%, so the schema already documents both parameters ('vm' and 'force') clearly. The description adds no additional meaning beyond the schema, which is the baseline expectation when the schema is thorough.
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 a specific verb ('Stop') and resource ('virtual machine'), making the core action unambiguous. It distinguishes itself from siblings like start_vm and suspend_vm by verb alone, but does not explicitly differentiate when to choose stop over suspend or reset, which would warrant a 5.
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?
There is no guidance on when to use this tool versus alternatives such as suspend_vm or reset_vm, nor any prerequisites or context. The description simply states the action with no usage conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suspend_vmC
Suspend a virtual machine
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | VM name or UUID |
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 of behavioral disclosure. It confirms a mutation operation ('Suspend'), but says nothing about VM state persistence, handling of running processes, permission requirements, or reversibility via resume_vm; for a power-state mutation this leaves important behavioral traits undocumented.
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 four-word sentence with no filler, and the core action is front-loaded. For a simple one-parameter tool, this is appropriately sized and immediately readable.
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 annotations, no output schema, and several closely related sibling tools, the description is too sparse to fully guide selection or invocation. At minimum it should distinguish suspend from stop_vm and resume_vm and indicate what suspend does to the VM's state, which it does not do.
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 100%, with the single 'vm' parameter fully documented as 'VM name or UUID.' The description adds no extra syntax, format, or constraint information beyond the schema, so the baseline score of 3 applies when the schema does the heavy lifting.
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 a specific verb and resource: 'Suspend a virtual machine.' It is clearly distinct from read-only siblings like list_vms and get_vm_info, but it does not differentiate itself from closely related power-state siblings such as stop_vm and resume_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 usage guidance is provided: there is no statement of when to use this tool versus stop_vm, resume_vm, or reset_vm, nor any prerequisites or exclusions. The verb itself implies a power-state action, but the agent receives no explicit routing help among the many VM control siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v1.0.0- First observed
exec_vm_command - First observed
get_vm_info - First observed
get_vm_status - First observed
list_vms - First observed
reset_vm - First observed
resume_vm - First observed
start_vm - First observed
stop_vm - First observed
suspend_vm
TDQS
Scored across 9 tools
Most tools have clearly distinct purposes: list, info, status, lifecycle controls, and command execution. The only mild overlap is between get_vm_info and get_vm_status, but the descriptions clarify detailed information versus current status.
All tool names follow a consistent snake_case verb_noun pattern, such as list_vms, get_vm_info, start_vm, and exec_vm_command. The convention is predictable throughout.
Nine tools are well-scoped for a VM management server, covering discovery, inspection, lifecycle control, and command execution without excessive overlap or missing core actions.
The set covers listing, status, start, stop, suspend, resume, reset, and command execution for existing VMs. However, creation, deletion, cloning, and snapshot operations are absent, leaving minor gaps for full VM lifecycle management.
Maintenance
Related MCP Connectors
The Google Compute Engine MCP server is a fully-managed Model Context Protocol server that provides tools to manage Google Compute Engine resources through AI agents. It enables capabilities including instance management (creating, starting, stopping, resetting, listing), disk management, handling instance templates and group managers, viewing machine and accelerator types, managing images, and accessing reservation and commitment information. The server operates as a zero-deployment, enterprise-grade endpoint at https://compute.googleapis.com/mcp with built-in IAM-based security.
MCP server for Appcircle mobile CI/CD platform.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
Related MCP Servers
- AlicenseCqualityCmaintenanceA comprehensive MCP server providing 92 tools for managing Proxmox Virtual Environment, including QEMU VMs and LXC containers.9269 npm6MIT
- AlicenseBqualityDmaintenanceMCP server for controlling VMware Fusion/Workstation virtual machines via vmrun CLI, providing 32 tools for VM lifecycle, guest execution, and file operations without requiring a REST API daemon.3210 npm3MIT
- AlicenseBqualityCmaintenanceAn MCP server that exposes Proxmox VE node/cluster as tools for MCP clients, enabling management of VMs and containers including power control, resource reconfiguration, snapshots, and backups.20MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for managing Parallels Desktop VMs, including lifecycle operations and snapshots.-