vmm-mcp-server
The vmm-mcp-server provides an MCP interface to the VMM API, enabling management of network topologies, VMs, configurations, YAML/JSON conversion, and leases.
Current state: Only vmm_list_topologies is exposed in the active server schema. The project defines many additional tools (per README):
Topology Management: List, launch, validate, bind/start/stop/unbind VMs, export/import/clone topologies.
Configuration Management: Upload configs, show active config, and manage a library of saved configs (list, get, save, remove).
YAML/JSON Conversion: Parse lab YAML to quickstart spec JSON, render JSON to YAML, and convert existing VMM configs to lab YAML.
Lease Management: Check lease status, schedule earlier unbind, and extend leases.
All operations leverage the vmm-api CLI.
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., "@vmm-mcp-server List all network topologies."
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.
vmm-mcp-server
An MCP server for VMM, a tool for creating and
managing network topologies. It wraps the vmm-api CLI and exposes its subcommands as
MCP tools so any MCP-compatible client (Claude Code, Claude Desktop, etc.) can drive VMM.
Tools
Tool | VMM CLI command | Description |
|
| List all network topologies known to VMM. |
|
| Configure, bind, and start a topology in one step. |
|
| Upload a topology config without binding/starting it. |
|
| Display the currently active topology config. |
|
| Dry-run capacity check for a config, no deployment. |
|
| Launch VMs' QEMU processes, paused. |
|
| Start paused VMs (binds first if needed). |
|
| Pause QEMU emulation without deleting the process. |
|
| Release VMs (hard teardown, no guest shutdown). |
|
| Print a topology's userdb as JSON. |
|
| Recreate a topology from exported JSON. |
|
| Copy a topology's config into a new topo_id. |
|
| Lab YAML -> normalized quickstart spec JSON. |
|
| Quickstart spec JSON -> clean lab YAML. |
|
| Existing VMM config -> lab YAML. |
|
| List your saved-config library. |
|
| Print one saved config. |
|
| Store a config file into the saved-config library. |
|
| Delete a saved config. |
|
| Show lease expiry and extensions used/remaining. |
|
| Move auto-unbind earlier than the lease expiry. |
|
| Extend a topology's lease by 30 days. |
More tools (e.g. auth) can be added as needed — see Adding a new tool.
Related MCP server: vsphere-mcp
Requirements
Node.js >= 18
The
vmm-apiCLI installed and available onPATH(or pointVMM_API_BINat it)
Install & build
npm install
npm run buildConfiguration
The server reads two optional environment variables:
Variable | Default | Purpose |
|
| Path to the VMM CLI executable. |
|
| Timeout for each |
Running
npm startThe server speaks MCP over stdio, so it's meant to be launched by an MCP client rather
than run standalone. For example, in Claude Code's mcp config:
{
"mcpServers": {
"vmm": {
"command": "node",
"args": ["/absolute/path/to/vmm-mcp-server/dist/index.js"],
"env": {
"VMM_API_BIN": "/usr/local/bin/vmm-api"
}
}
}
}During development you can run it directly from TypeScript without building first:
npm run devAdding a new tool
Each tool is a small, self-contained module:
Create
src/tools/<name>.tsexporting aVmmTool(seesrc/tools/types.ts) that callsrunVmmApi([...])fromsrc/lib/vmmApi.tswith the rightvmm-apiargs.Register it by adding it to the array in
src/tools/index.ts.
No changes to src/index.ts are needed — it registers whatever tools are listed there.
Project layout
src/
index.ts MCP server entry point (stdio transport, tool registration)
lib/
vmmApi.ts Wrapper around spawning the vmm-api CLI
args.ts Helpers for building argv from flags (-x, --require, repeated -r, ...)
tools/
types.ts Shared VmmTool interface + runAsToolResult() helper
schemas.ts Shared zod field definitions (groupId, requires, topoId, vmNames)
listTopologies.ts vmm_list_topologies -> vmm-api ls
launchTopology.ts vmm_launch_topology -> vmm-api launch
uploadConfig.ts vmm_upload_config -> vmm-api config
configPrint.ts vmm_show_active_config -> vmm-api config-print
validateTopology.ts vmm_validate_topology -> vmm-api validate
vmLifecycle.ts vmm_bind_vms/start_vms/stop_vms/unbind_vms -> bind/start/stop/unbind
exportTopology.ts vmm_export_topology -> vmm-api export
importTopology.ts vmm_import_topology -> vmm-api import
cloneTopology.ts vmm_clone_topology -> vmm-api clone
yaml.ts vmm_yaml_parse/render/convert -> vmm-api yaml ...
savedConfigs.ts vmm_*_saved_config(s) -> vmm-api configs ...
lease.ts vmm_lease_status/schedule_unbind/extend_lease -> lease/extend
index.ts Registry of all toolsAvailable Tools
1 toolvmm_list_topologiesList VMM topologiesA
List all network topologies known to VMM by running "vmm-api ls". Use this to discover existing topology names/IDs before creating, inspecting, or modifying one.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 1 tool
Only one tool exists, so there is no possibility of confusing it with another. The purpose of vmm_list_topologies is clearly described and unambiguous.
The single tool follows a clear verb_noun pattern with a consistent namespace prefix (vmm_list_topologies), establishing a clear convention that is internally consistent.
A single tool for a VMM server is an extreme mismatch. The description implies create, inspect, and modify operations that are entirely absent, making the tool surface far too thin for its apparent scope.
The server exposes only a list operation. There are no create, get, update, delete, or other management capabilities, leaving massive gaps that would prevent any meaningful workflow beyond discovery.
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP server for the Vulners.com API
MCP server for searching Airweave collections with natural language queries.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for managing Proxmox VE clusters — provision VMs and containers, manage snapshots and backups, execute commands, browse storage, and monitor resources through natural language37289 PyPI18MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for VMware vSphere/vCenter operations, enabling natural language control of VMs, hosts, and infrastructure.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with NetBox API, enabling users to query and manage NetBox resources such as devices through natural language.MIT
- AlicenseAqualityCmaintenanceMCP server for controlling PNETLab v6 network labs via natural language, enabling topology creation, node management, config push, console interaction, and link fault injection.241Apache 2.0