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: Sprite MCP Server
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.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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