loading…
Search for a command to run...
loading…
Enables AI assistants to run, manage, and debug BSD/Illumos VMs through natural language. Supports creating FreeBSD, OpenBSD, NetBSD, and OmniOS VMs, executing
Enables AI assistants to run, manage, and debug BSD/Illumos VMs through natural language. Supports creating FreeBSD, OpenBSD, NetBSD, and OmniOS VMs, executing commands inside them, accessing console logs, and managing snapshots.
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.
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:
| Requirement | Notes |
|---|---|
| Python ≥ 3.10 | |
| An MCP-compatible AI assistant | Claude Code, GitHub Copilot in VS Code, or any other MCP client |
Note: The
anyvmCLI is bundled automatically — no separate installation needed.
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 .
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."
Add the server to .vscode/mcp.json in your workspace (or the user-level settings):
{
"servers": {
"anyvm": {
"type": "stdio",
"command": "anyvm-mcp"
}
}
}
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.
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)
| 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 |
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
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")
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".
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run a single test file
pytest tests/test_vm_manager.py -v
MIT — see LICENSE.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"anyvm-mcp": {
"command": "npx",
"args": []
}
}
}