Skip to main content
Glama
anyvm-org

anyvm-mcp

by anyvm-org

anyvm-mcp

MCP server for anyvm β€” run, manage, and debug BSD/Illumos 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 manager.
Once installed, your AI assistant can:

  • πŸ–₯️ Create FreeBSD, OpenBSD, NetBSD, OmniOS, and other BSD/Illumos VMs in seconds

  • πŸš€ Start / Stop / Destroy VMs on demand

  • πŸ” Inspect VM state, IPs, CPU, memory, and network configuration

  • πŸ’» Execute commands inside running VMs for instant diagnostics

  • πŸ“œ Read console output to debug boot failures or system errors

  • πŸ“Έ Snapshot and restore VMs to safe checkpoints


Requirements

Requirement

Notes

Python β‰₯ 3.10

An MCP-compatible AI assistant

Claude Code, GitHub Copilot in VS Code, or any other MCP client

Note: The anyvm CLI is bundled automatically β€” no separate installation needed.


Installation

pipx install anyvm-mcp

Or with pip:

pip install anyvm-mcp

Or 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:

"Create a FreeBSD 14 VM called 'dev' with 2 CPUs and 2 GB RAM, then show me its IP."

"My OpenBSD VM won't boot. Show me the 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 8000

Then point your MCP client at http://127.0.0.1:8000/sse.


CLI reference

usage: anyvm-mcp [-h] [--anyvm PATH] [--transport {stdio,sse,streamable-http}]
                   [--host HOST] [--port PORT]

options:
  --anyvm PATH          Path to the anyvm binary (default: bundled version)
  --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

list_vms

List all VMs with state, OS, CPU, RAM, and IP

vm_info

Detailed info about a single VM

create_vm

Create a new BSD/Illumos VM

start_vm

Start a stopped VM

stop_vm

Gracefully (or forcefully) stop a running VM

destroy_vm

Permanently delete a VM and free its resources

exec_in_vm

Run a shell command inside a VM

console_output

Fetch the latest VM serial/console log

list_snapshots

List snapshots for a VM

create_snapshot

Snapshot a VM at its current state

restore_snapshot

Roll a VM back to a snapshot

delete_snapshot

Delete a snapshot

network_info

IPs, MACs, and virtual NIC configuration


Example conversations

Creating and inspecting a VM

You:      Create an OmniOS VM called "omnios-test" with 4 CPUs, 4 GB RAM, and 40 GB disk.
Copilot:  βœ… VM "omnios-test" created. State: stopped.
          Run `start_vm` to boot it.

You:      Start it and tell me its IP address.
Copilot:  βœ… VM started. IP: 192.168.100.42

Debugging a boot failure

You:      My FreeBSD VM "bsd-web" won't respond to SSH. What's wrong?
Copilot:  [calls console_output("bsd-web", lines=200)]
          The console log shows a panic in vtnet0 β€” likely a driver issue.
          Try: exec_in_vm("bsd-web", "sysctl hw.vtnet.0.csum_disable=1")

Snapshot workflow

You:      Snapshot "bsd-web" before I upgrade it.
Copilot:  [calls create_snapshot("bsd-web", "pre-upgrade", description="before pkg upgrade")]
          βœ… Snapshot "pre-upgrade" created.

You:      The upgrade broke something. Roll back.
Copilot:  [calls restore_snapshot("bsd-web", "pre-upgrade")]
          βœ… Restored to snapshot "pre-upgrade".

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run a single test file
pytest tests/test_vm_manager.py -v

License

MIT β€” see LICENSE.

-
security - not tested
-
license - not tested
-
quality - not tested

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

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