anyvm-mcp
Officialanyvm-mcp is an MCP server that lets AI assistants boot and manage virtual machines (BSD, Linux, illumos, Haiku, Android, GNU Hurd, Plan 9) using natural language commands via QEMU.
List supported OSes: Discover all bootable guest OSes — FreeBSD, OpenBSD, NetBSD, DragonFly BSD, GhostBSD, MidnightBSD, Solaris, OmniOS, OpenIndiana, Tribblix, Haiku, Ubuntu, openEuler, BlissOS (Android), Debian GNU/Hurd, and Plan 9 — along with SSH users and notes.
Boot VMs: Launch VMs in the background with configurable OS, release version, CPU count, memory, architecture (x86_64, aarch64, riscv64, sparc64, powerpc64, s390x, etc.), port mappings, volume mounts, folder sync method (rsync/sshfs/nfs/scp/9p), snapshot mode, and boot timeout.
List running VMs: View all booted VMs with live running/stopped status, SSH ports, and log locations.
Get VM details: Retrieve state, SSH port/user/key, and serial log path for a specific VM.
Execute commands: Run shell commands over SSH inside a running VM (not available for Plan 9, which has no SSH).
Stop VMs: Gracefully shut down via SSH with ACPI fallback, or force-kill via QEMU monitor.
Read console output: Tail the serial console log to debug boot failures — works even without SSH, and is the only way to view Plan 9 output.
AI assistant integration: Works with MCP-compatible assistants like Claude Code and GitHub Copilot for natural language VM control.
Allows booting and managing Android (BlissOS) VMs with natural language, including SSH execution and serial console access.
Allows booting and managing various BSD VMs (FreeBSD, OpenBSD, NetBSD, DragonFly BSD, GhostBSD, MidnightBSD) with natural language, including SSH execution and serial console access.
Allows booting and managing Debian GNU/Hurd VMs with natural language, including SSH execution and serial console access.
Allows booting and managing FreeBSD VMs with natural language, including SSH execution and serial console access.
Allows booting and managing GNU Hurd VMs with natural language, including SSH execution and serial console access.
Allows booting and managing Linux VMs (Ubuntu, openEuler) with natural language, including SSH execution and serial console access.
Allows booting and managing NetBSD VMs with natural language, including SSH execution and serial console access.
Allows booting and managing OpenBSD VMs with natural language, including SSH execution and serial console access.
Allows booting and managing Ubuntu VMs with natural language, including SSH execution and serial console access.
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., "@anyvm-mcpcreate a FreeBSD 14 VM named 'dev' with 2 CPUs and 2GB RAM"
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.
anyvm-mcp
MCP server for anyvm -- boot and manage BSD, illumos, Linux, Haiku, Android, GNU Hurd, and Plan 9 VMs with natural language. Works with Claude Code, GitHub Copilot, and any other MCP-compatible AI assistant.
Overview
anyvm-mcp is a Model Context Protocol (MCP) server that bridges AI coding assistants with the anyvm VM launcher. anyvm boots prebuilt guest images under QEMU -- no manual installation, no libvirt. Once installed, your AI assistant can:
Boot FreeBSD, OpenBSD, NetBSD, DragonFly BSD, GhostBSD, MidnightBSD, Solaris, OmniOS, OpenIndiana, Tribblix, Haiku, Ubuntu, openEuler, BlissOS (Android), Debian GNU/Hurd, and Plan 9 guests in the background
Target x86_64, aarch64, riscv64, sparc64, powerpc64, s390x and more (per-OS availability varies)
Execute commands inside running VMs over SSH for instant diagnostics
Read the serial console to debug boot failures
Map ports and sync folders (rsync / sshfs / nfs / scp / 9p) between host and guest
Stop VMs gracefully (guest shutdown with an ACPI fallback) or hard-kill via the QEMU monitor
The VM model mirrors the anyvm CLI: a VM is identified by its OS name plus
optional release (e.g. freebsd + 14.3), not by user-invented names.
The first boot of an OS/release downloads the image from the matching
anyvm-org builder release, so allow several
minutes; later boots reuse the cached image.
Related MCP server: virtualization-mcp
Requirements
Requirement | Notes |
Python >= 3.10 | |
QEMU |
|
OpenSSH client |
|
An MCP-compatible AI assistant | Claude Code, GitHub Copilot in VS Code, or any other MCP client |
Note: The
anyvm.pylauncher is bundled automatically -- no separate installation needed.
Installation
pipx install anyvm-mcpOr with pip:
pip install anyvm-mcpOr install from source:
git clone https://github.com/anyvm-org/mcp
cd mcp
pip install -e .Quickstart
Claude Code
Add the server to ~/.claude/mcp.json (or the project-level .claude/mcp.json):
{
"mcpServers": {
"anyvm": {
"command": "anyvm-mcp"
}
}
}Restart Claude Code. You can now say things like:
"Boot a FreeBSD 14.3 VM with 2 CPUs and 2 GB RAM, then run uname -a in it."
"My OpenBSD VM won't answer SSH. Show me the serial console output and suggest a fix."
GitHub Copilot (VS Code)
Add the server to .vscode/mcp.json in your workspace (or the user-level settings):
{
"servers": {
"anyvm": {
"type": "stdio",
"command": "anyvm-mcp"
}
}
}Generic MCP client (HTTP/SSE)
Run anyvm-mcp as an HTTP server:
anyvm-mcp --transport sse --host 127.0.0.1 --port 8000Then point your MCP client at http://127.0.0.1:8000/sse.
CLI reference
usage: anyvm-mcp [-h] [--anyvm PATH] [--data-dir DIR]
[--transport {stdio,sse,streamable-http}]
[--host HOST] [--port PORT]
options:
--anyvm PATH Path to the anyvm launcher (default: bundled anyvm.py)
--data-dir DIR Directory for images, logs, and VM state (default: ~/.anyvm-mcp)
--transport MCP transport: stdio (default), sse, or streamable-http
--host HOST Bind host for HTTP transports (default: 127.0.0.1)
--port PORT Bind port for HTTP transports (default: 8000)Available tools
Tool | Description |
| Every guest OS anyvm can boot, with notes and SSH user |
| Boot a guest in the background (os, release, arch, mem, cpus, ports, volumes, sync) |
| Registered VMs with a live running/stopped probe |
| State, SSH port/user/key, and serial-log path for one VM |
| Run a shell command over SSH inside a running VM |
| Graceful guest shutdown (SSH + ACPI fallback); |
| Tail the VM serial console log (works even when SSH is down) |
Notes:
start_vmseparates OS and release:os="freebsd", release="14.3"-- omitreleasefor the builder's default release.Plan 9 (9front) guests have no SSH;
exec_in_vmis unavailable for them. Useconsole_output, or the VNC web console anyvm prints at boot.Haiku's SSH user is
user; all other guests useroot.
Example conversations
Boot and inspect a VM
You: Boot an OmniOS VM with 4 CPUs and 4 GB RAM and show me its uname.
Copilot: [calls start_vm(os="omnios", cpus=4, mem_mb=4096)]
VM omnios-r151054 is running (ssh -p 42761 root@127.0.0.1).
[calls exec_in_vm(os="omnios", command="uname -a")]
SunOS omnios 5.11 omnios-r151054 i86pc i386 i86pcDebug a boot failure
You: My NetBSD VM never comes up on SSH. What's wrong?
Copilot: [calls console_output(os="netbsd", lines=200)]
The console shows the kernel waiting on root device selection...Cross-architecture testing
You: Run my test script on Ubuntu riscv64.
Copilot: [calls start_vm(os="ubuntu", arch="riscv64",
volumes=["/home/me/proj:/proj"], sync="rsync")]
[calls exec_in_vm(os="ubuntu", command="cd /proj && sh run-tests.sh")]Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run a single test file
pytest tests/test_vm_manager.py -vLicense
MIT -- see LICENSE.
Available Tools
7 toolsconsole_outputA
Tail the VM's serial console log. Works even when SSH is down -- the tool for debugging boot failures, and the only way to see plan9 output.
| Name | Required | Description | Default |
|---|---|---|---|
| os | Yes | ||
| lines | No | ||
| release | No |
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 reveals the tool is a read-only tail operation, works without SSH, and handles plan9 output. However, it does not mention potential error states, behavior when VM is not running, or rate limits. This is minimally adequate but lacks depth.
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?
Two concise sentences with no wasted words. The first sentence states the action and resource, the second provides key context and value. Information is front-loaded and every sentence is necessary.
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 there are 3 parameters with 0% schema coverage and an existing output schema, the description is incomplete. It explains the tool's purpose but offers no guidance on parameter usage or output format. The user must rely solely on parameter names, which is insufficient for effective use.
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, and the tool description provides no information about the parameters 'os', 'lines', or 'release'. The description adds no value beyond the schema's property names and types. For a tool where schema coverage is low, the description must compensate, which it fails to do.
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: 'Tail the VM's serial console log', specifies the resource, and distinguishes from siblings by highlighting it works even when SSH is down and is the only way to see plan9 output. This is specific and differentiates from sibling tools like exec_in_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?
The description explicitly states when to use: 'Works even when SSH is down -- the tool for debugging boot failures, and the only way to see plan9 output.' It provides clear context for boot failure and plan9 scenarios but does not explicitly mention alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exec_in_vmA
Execute a shell command over SSH inside a running VM and return the combined stdout/stderr. Not available for plan9 (no SSH).
| Name | Required | Description | Default |
|---|---|---|---|
| os | Yes | ||
| command | Yes | ||
| release | No | ||
| timeout_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It explains the basic operation (SSH execution, combined stdout/stderr) but omits details about authentication, state changes, error handling, or the fact that the command runs with default permissions. More transparency would be beneficial.
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 sentence that immediately conveys the tool's purpose, followed by a crucial limitation. No unnecessary words; it is front-loaded and efficient.
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?
The description is functionally complete for a basic understanding but lacks contextual details such as the requirement that the VM must be running, the return format (though output schema exists), and potential failure modes. Given the tool's complexity, this is adequate but not thorough.
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 the description adds no parameter information. It does not explain what 'os' or 'command' entail, nor the purpose of 'release' or 'timeout_sec'. The description should compensate for the missing schema descriptions, but it does not.
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: 'Execute a shell command over SSH inside a running VM and return the combined stdout/stderr.' It distinguishes from sibling tools like list_supported_os, start_vm, console_output, etc., and includes a notable exception (plan9).
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 explicitly notes that the tool is not available for plan9 (no SSH), providing a clear when-not-to-use. However, it does not elaborate on when to use this tool over alternatives like console_output or mention prerequisites such as requiring the VM to be running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_running_vmsA
List all VMs this server has booted, with a live running/stopped state probe, SSH ports, and log locations.
| 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?
Disclosure of 'live running/stopped state probe' adds behavioral insight beyond a simple list, but lacks details on permissions, performance impact, or side effects. No annotations to compensate.
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, efficient sentence with no unnecessary words. All information is relevant 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?
Given zero parameters and presence of an output schema, the description adequately covers input (none) and output details. Could mention output format or use cases.
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?
No parameters exist, so schema coverage is 100%. Description adds value by specifying what the list includes (state, SSH ports, log locations), meeting the baseline for zero-param 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?
Description clearly states it lists VMs with live state probe, SSH ports, and log locations. Verb and resource are specific, but it does not explicitly differentiate from sibling tools like vm_info or start_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 on when to use this tool vs alternatives (e.g., vm_info for detailed VM info). Implies usage for listing, but no when-not-to-use or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_osA
List every guest OS anyvm can boot (BSDs, illumos, Linux, Haiku, Android/BlissOS, GNU Hurd, Plan 9), with notes and the SSH user.
| 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, but the description discloses the output includes notes and SSH user. It's a read-only list, and the description is transparent about what is included.
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 that lists examples and important details (notes, SSH user). Every word earns its place; no waste.
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 has 0 parameters and an output schema, the description adds useful context about what the output contains. It is complete for a simple list tool.
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?
There are no parameters (0 count), so baseline is 4. The description adds no parameter info, but the schema coverage is 100%.
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 every guest OS anyvm can boot, enumerating specific families. It distinguishes from sibling tools like exec_in_vm, start_vm, etc., which are about execution or management, not listing.
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 does not explicitly state when to use or alternatives, but the context of sibling tools implies no other tool lists supported OS. Usage is clear from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_vmA
Boot a guest VM in the background. The first boot of an OS/release downloads the image (hundreds of MB -- allow several minutes). Returns SSH connection details on success. OS and release are separate: os='freebsd' release='14.3', not 'freebsd-14.3'. Omit release to get the default release.
| Name | Required | Description | Default |
|---|---|---|---|
| os | Yes | ||
| arch | No | ||
| cpus | No | ||
| sync | No | ||
| ports | No | ||
| mem_mb | No | ||
| release | No | ||
| volumes | No | ||
| snapshot_mode | No | ||
| boot_timeout_sec | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers that booting happens in the background, returns SSH details, and first boot is slow. It lacks disclosure on potential conflicts, resource limits, or state changes beyond creation. 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?
Three sentences, each adding distinct value: purpose, performance caveat, and parameter clarification. No redundant or vague statements; information is front-loaded and efficient.
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 (10 parameters, no output schema, no annotations), the description is too sparse. Key details about optional parameters and expected return values beyond SSH info are missing, making it incomplete for an agent to use effectively.
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%, so the description must compensate. It only explains two parameters (os and release) with formatting hints, leaving eight parameters (arch, cpus, ports, etc.) completely unexplained. This is insufficient for a tool with 10 parameters.
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 boots a guest VM in the background, specifying the action and resource. It distinguishes from sibling tools like list_supported_os or exec_in_vm by focusing on VM startup and return of SSH details.
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 guidance on first boot performance and the correct format for os and release parameters, including how to get the default release. However, it does not discuss when alternatives might be preferred or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_vmA
Stop a running VM: graceful guest shutdown over SSH with an ACPI fallback; force=true hard-kills QEMU via its monitor.
| Name | Required | Description | Default |
|---|---|---|---|
| os | Yes | ||
| force | No | ||
| release | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It explains the two behavioral paths (graceful shutdown with fallback and hard-kill), though it could clarify the fallback sequence.
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?
Two concise sentences, front-loaded with the main action, no superfluous 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?
Description covers the main behavior but lacks parameter details and does not address output or edge cases. Output schema exists but is not leveraged in description.
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%, and description only explains 'force' parameter. Required parameter 'os' and optional 'release' are not described, leaving the agent with insufficient parameter 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?
Clearly states 'Stop a running VM' and details two shutdown methods (graceful via SSH/ACPI fallback and hard-kill via monitor), distinguishing it from sibling tools like start_vm and exec_in_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?
Implies use cases for graceful vs force shutdown, but lacks explicit guidance on when to use force=true or prerequisites like VM must be running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vm_infoB
Detailed info about one VM (state, SSH port/user/key, serial log path). Identify the VM by OS name and optional release.
| Name | Required | Description | Default |
|---|---|---|---|
| os | Yes | ||
| release | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states the tool returns state, SSH port/user/key, and serial log path, but does not clarify if the VM must be running, if it is a read-only operation, 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 a single, front-loaded sentence that effectively communicates the tool's purpose and key parameters. It avoids 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 the sibling tools and no output schema, the description lists returned fields (state, SSH port/user/key, serial log path) but does not confirm if this is exhaustive or mention other possible details. Adequate but not fully comprehensive.
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%, so the description must compensate. It adds that 'os' identifies the VM by name and 'release' is optional, but does not explain constraints, formats, or how to obtain valid values.
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 retrieves 'detailed info about one VM' and lists specific fields (state, SSH port/user/key, serial log path). It distinguishes from siblings like list_running_vms (list all) and exec_in_vm (execute commands).
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. The description implies it is for getting details about a specific VM identified by OS name and optional release, but does not provide scenarios or exclusions.
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. Dates show when Glama detected each change.
15 tool updates
v0.0.3- Changed
console_output4 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / osAdded value: +{ + "title": "Os", + "type": "string" +} - added
Input schema / properties / releaseAdded value: +{ + "default": "", + "title": "Release", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "os" +]
- Removed
create_snapshot - Removed
create_vm - Removed
delete_snapshot - Removed
destroy_vm - Changed
exec_in_vm5 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / osAdded value: +{ + "title": "Os", + "type": "string" +} - added
Input schema / properties / releaseAdded value: +{ + "default": "", + "title": "Release", + "type": "string" +} - added
Input schema / properties / timeout_secAdded value: +{ + "default": 120, + "title": "Timeout Sec", + "type": "integer" +} - changed
Input schema / requiredPrevious value: -[ - "name", - "command" -]New value: +[ + "os", + "command" +]
- Added
list_running_vms - Removed
list_snapshots - Added
list_supported_os - Removed
list_vms - Removed
network_info - Removed
restore_snapshot - Changed
start_vm13 fields changed- added
Input schema / properties / archAdded value: +{ + "default": "", + "title": "Arch", + "type": "string" +} - added
Input schema / properties / boot_timeout_secAdded value: +{ + "default": 1800, + "title": "Boot Timeout Sec", + "type": "integer" +} - added
Input schema / properties / cpusAdded value: +{ + "default": 0, + "title": "Cpus", + "type": "integer" +} - added
Input schema / properties / mem_mbAdded value: +{ + "default": 0, + "title": "Mem Mb", + "type": "integer" +} - removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / osAdded value: +{ + "title": "Os", + "type": "string" +} - added
Input schema / properties / portsAdded value: +{ + "default": [], + "items": { + "type": "string" + }, + "title": "Ports", + "type": "array" +} - added
Input schema / properties / releaseAdded value: +{ + "default": "", + "title": "Release", + "type": "string" +} - added
Input schema / properties / snapshot_modeAdded value: +{ + "default": false, + "title": "Snapshot Mode", + "type": "boolean" +} - added
Input schema / properties / syncAdded value: +{ + "default": "", + "title": "Sync", + "type": "string" +} - added
Input schema / properties / volumesAdded value: +{ + "default": [], + "items": { + "type": "string" + }, + "title": "Volumes", + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "os" +] - changed
Output schema / (root)Previous value: -{ - "properties": { - "result": { - "title": "Result", - "type": "string" - } - }, - "required": [ - "result" - ], - "title": "start_vmOutput", - "type": "object" -}New value: +null
- Changed
stop_vm4 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / osAdded value: +{ + "title": "Os", + "type": "string" +} - added
Input schema / properties / releaseAdded value: +{ + "default": "", + "title": "Release", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "os" +]
- Changed
vm_info4 fields changed- removed
Input schema / properties / nameRemoved value: -{ - "title": "Name", - "type": "string" -} - added
Input schema / properties / osAdded value: +{ + "title": "Os", + "type": "string" +} - added
Input schema / properties / releaseAdded value: +{ + "default": "", + "title": "Release", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "os" +]
13 tool updates
v0.0.2- First observed
console_output - First observed
create_snapshot - First observed
create_vm - First observed
delete_snapshot - First observed
destroy_vm - First observed
exec_in_vm - First observed
list_snapshots - First observed
list_vms - First observed
network_info - First observed
restore_snapshot - First observed
start_vm - First observed
stop_vm - First observed
vm_info
TDQS
Each tool has a distinct purpose: listing supported OS, executing commands, viewing console, starting, listing all VMs, getting VM info, and stopping VMs. No overlap.
All tool names follow a consistent verb_noun pattern in snake_case (list_supported_os, exec_in_vm, start_vm, etc.) with no deviations.
7 tools cover the core VM lifecycle (start, stop, exec, console, list, info) and supported OS queries, which is well-scoped for the server's purpose.
Covers most essential operations: start, stop, execute commands, console output, listing, and details. Missing destroy/reboot but still functional.
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
- emisarOAuthdev.emisar
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Your AI Agent's Infrastructure Layer. Connect Claude, Copilot, Codex, or ChatGPT to 200+ managed open source services. Start databases, pipelines, and applications through natural language.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables AI assistants to manage homelab infrastructure through automated service installation (Jellyfin, Pi-hole, Ollama, Home Assistant, Frigate NVR), VM operations, AI accelerator support (MemryX, Coral TPU, Hailo-8), and Terraform state management with SSH-based discovery and deployment.584MIT
- AlicenseBqualityAmaintenanceEnables AI assistants to manage virtual machines, sandboxes, and dev environments through VirtualBox, Hyper-V, and Windows Sandbox, supporting VM lifecycle, ISO downloads, networking, and unattended installs.914MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Proxmox VE infrastructure, including VMs, containers, storage, and cluster operations via natural language.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to manage virtual machines via natural language, including creating, editing, and VNC control.18MIT
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/anyvm-org/mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server