nido-mcp
Nido MCP gives an agent local control over QEMU VMs, images, templates, blueprints, and system configuration over stdio.
Manage VM lifecycle: list, inspect, create, start, stop, delete, SSH, prune, update config, and manage forwarded ports.
Manage images and cache: list, inspect, pull, remove, refresh catalog, and prune unused cached images.
Manage reusable templates: list, create from a VM, and delete.
Inspect and build blueprints/image recipes.
Run system tasks: doctor, version, update check/update, config get/set, accelerator listing, registration, shell completion, image build, and uninstall.
Use read-only resources for fleet VMs, templates, catalog images/blueprints, cache, system config, and event stream health.
Opt into per-session event subscriptions with mute/unmute/unsubscribe controls; notifications only signal invalidated URIs.
Supports pulling and booting Debian cloud images from the catalog to create provisioned Debian guest VMs.
Supports discovery and provisioning of openSUSE cloud images from the catalog for spawning openSUSE guest VMs.
Nido runs QEMU locally as its VM engine, letting agents create, start, stop, connect to and delete QEMU-backed virtual machines with copy-on-write cloned disks and SSH access.
Supports provisioning Ubuntu cloud images (e.g. ubuntu:lts) from the image catalog to spawn disposable Ubuntu VMs with cloud-init provisioning.
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., "@nido-mcpspin up an Ubuntu VM called agent-lab with 2GB RAM and 2 CPUs"
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.
Nido

Real virtual machines for AI agents. One local engine, three ways to drive it: CLI, TUI and MCP.
Give an agent a machine it can provision, use and delete. Nido runs QEMU locally, clones cached images with copy-on-write disks, and exposes the same VM lifecycle to your terminal and your MCP client. Each VM has its own guest kernel.
Hatch your agents. Let them fly. Retro shell, practical machinery.
Get started · Connect an agent · Documentation · Wiki
Why Nido?
You want to... | Nido gives you... |
Test code away from your host | Disposable QEMU VMs with SSH access and cloud-init provisioning |
Let an agent manage its own environment | A built-in stdio MCP server with compact tools, read-only resources and opt-in event subscriptions |
Reuse an expensive setup | Templates and QCOW2 linked clones, with one shared base and a writable disk per VM |
Switch between automation and hands-on work | Structured CLI JSON, shell completion and an interactive terminal dashboard |
Keep multiple dashboards and agents in sync | Shared local events, live TUI updates and selective MCP notifications |
Choose the right starting point | An automatically refreshed cloud-image catalog, local templates and buildable blueprints |
AMD64 and ARM64 host/guest selection, requirements and data-preserving upgrades:
Architecture guide. Omitted architecture selects native; use --arch
on CLI, arch on MCP, or the TUI Arch selector for an explicit guest ISA.
Related MCP server: proxmox-mcp
Press start
QEMU is required to run VMs. Nido supports Linux, macOS and Windows hosts;
hardware acceleration depends on what the host actually exposes. Start with
nido doctor. See installation and host requirements.
Install
Linux / macOS
curl -fsSL https://github.com/Josepavese/nido/releases/latest/download/install.sh | bashWindows PowerShell
irm https://github.com/Josepavese/nido/releases/latest/download/install.ps1 | iexOpen a new terminal, then check nido version and nido doctor. The quick
installers check prerequisites and offer QEMU setup where supported.
Prefer a package manager? npm works on Linux, macOS and Windows:
npm install -g nido-mcp # Linux / macOS / Windows launcher
brew install Josepavese/nido/nido # macOS / Linux
go install github.com/Josepavese/nido/v4/cmd/nido@latestscoop bucket add nido https://github.com/Josepavese/scoop-nido
scoop install nidoContainer (Docker/Podman, bundles QEMU; needs a KVM-capable host):
docker run -i --rm --device /dev/kvm \
--group-add "$(stat -c %g /dev/kvm)" \
-v nido-home:/home/nido/.nido \
ghcr.io/josepavese/nido mcpImages are rebuilt on every release at ghcr.io/josepavese/nido (:{version},
:{minor}, :latest) and speak MCP on stdio; pass --group-add so the
non-root user can open /dev/kvm.
Debian / Ubuntu (APT) and Fedora / RHEL (DNF) repositories are rebuilt on every release and served from GitHub Pages:
# Debian / Ubuntu
sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL https://josepavese.github.io/nido/nido-archive-keyring.asc -o /etc/apt/keyrings/nido.asc
echo "deb [signed-by=/etc/apt/keyrings/nido.asc] https://josepavese.github.io/nido/apt/ stable main" | sudo tee /etc/apt/sources.list.d/nido.list
sudo apt-get update && sudo apt-get install nido
# Fedora / RHEL
sudo curl -fsSL https://josepavese.github.io/nido/rpm/nido.repo -o /etc/yum.repos.d/nido.repo
sudo dnf install nidoInstall QEMU first (qemu-system-x86 qemu-utils / qemu-kvm qemu-img), then run
nido doctor. Both repositories are GPG-signed by the Nido package archive key
(DBB87CB63A94ABA50B33C7B919C6A95C9D280B64); see
the installers guide.
Nix: nix run github:Josepavese/nido builds the current source and brings
its own QEMU; see the installers guide.
WinGet: Josepavese.Nido is awaiting Microsoft review. See
availability and commands.
For MCP clients, use npx -y nido-mcp mcp, discover
io.github.Josepavese/nido in the Official MCP Registry, browse the Glama
directory for local installation instructions, or import the MCPB bundle.
MCP catalogs and client installation.
All install options · Distribution channel status
Hatch your first VM
nido images update
nido images info ubuntu:lts
nido images pull ubuntu:lts
nido spawn agent-lab --image ubuntu:lts --memory 2048 --cpus 2
nido info agent-lab --json
# Once the guest has finished booting and SSH is ready:
nido ssh agent-labThe first pull downloads the base image. Later VMs can reuse it. ubuntu:lts
follows the catalog's supported LTS selection; use a numbered tag from
nido images list when you need a specific OS release. Guest boot and cloud-init
take additional time; creating the overlay is only one part of startup.
When you have saved the work you need, shut down inside the guest and remove only your disposable VM:
nido ssh agent-lab sudo poweroff
# After shutdown, confirm its state:
nido info agent-lab
nido delete agent-labnido stop terminates the managed QEMU process and waits for exit. Use guest
poweroff for a clean OS shutdown. VM data persists until you delete it.
Provisioning, ports, templates and cleanup
Watch core changes in another terminal with nido events or nido events --json.
TUI sessions update from the shared stream; agents explicitly subscribe only to
the resources they need. See event delivery and mute controls.
A little room to roost
Run nido gui for a keyboard and mouse dashboard. The shared TUI kit adapts
from a split Fleet view to compact lists and scrollable dialogs, keeping your
work in place as you resize. Below its usable size, the interface rests until
you give it more room.

Even at 40x10, confirmation and cancellation stay within reach:

These are native terminal captures with private demonstration metadata. No VM was started for the screenshots. Themes · Reusable TUI kit
Connect your agent
Nido's MCP server runs locally over stdio. No separate service is required. Use an installed binary:
{
"mcpServers": {
"nido": {
"command": "nido",
"args": ["mcp"]
}
}
}Use the absolute executable path if your client does not inherit your terminal's
PATH. nido register prints a registration block; your client owns where it is
saved. Clients that launch npm packages can instead use command: "npx" with
args: ["-y", "nido-mcp", "mcp"].
Tool | Responsibility |
| Create, inspect, configure, connect and remove VMs; manage forwarded ports |
| Browse and refresh the catalog; pull and manage cached images |
| Save and manage reusable disk templates |
| Inspect and build image recipes |
| Diagnostics, configuration, accelerators and installation operations |
Read-only resources include nido://fleet/vms, nido://catalog/images and
nido://system/config. Use nido mcp-help for the machine-readable tool/action
guide, or nido mcp --help in your terminal.
An example task for your agent:
Create a disposable Ubuntu LTS VM named
test-lab, provision the dependencies, run my tests and save their output. Delete only that VM when finished. Preserve other VMs and shared images.
MCP grants access to local VM and installation operations, including destructive ones. Connect clients you trust. MCP guide · Optional VM-testing skill
One base. Separate machines.
With linked clones enabled, the cached base stays shared while each VM records its own disk changes. Space usage grows with those writes, logs and templates; it is not constant as you add VMs. Nido checks backing-image dependencies before cache removal. Keep bases in place while dependent VM disks exist.
VMs provide a separate guest kernel, but host mounts, forwarded ports and PCI passthrough deliberately cross that boundary. Nido is not a complete security policy for arbitrary untrusted workloads. See operations and isolation.
Pick your starting point
Cloud image: pull from the catalog and provision through cloud-init. Ubuntu, Debian, Alpine, Kali, CirrOS and openSUSE discovery follows the policies in
registry/sources.yaml. Catalog and integrityTemplate: save a prepared VM disk and reuse it for repeated tasks. Template workflow
Blueprint: build an image from a recipe and installer media, including Windows evaluation editions. Windows guide
The scheduled catalog job discovers new supported upstream releases. Refresh
your local copy with nido images update; it does not update an existing guest OS.
Prefer hands-on control? Run nido gui for the Fleet, Hatchery, Registry and
System views. Use --gui on spawn/start when you want the VM's display;
that flag and the terminal dashboard are separate features.
Go further
Task | Guide |
Provision a guest, forward ports, adjust resources, share files | |
Write scripts against Nido | |
Install, upgrade or choose a package channel | |
Change the terminal palette | |
Understand runtime and hardware boundaries | |
Contribute or validate a change |
Available Tools
6 toolsnido_blueprintB
Manage buildable image blueprints. Supported actions are list, info, and build. Prefer nido://catalog/blueprints and nido://blueprint/{name} for read-only inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Blueprint name for action=info or action=build. | |
| action | Yes | ||
| blueprint_name | No | Compatibility alias for name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it never explains what build actually does — whether it mutates state, what it produces, whether it requires preconditions, or whether it is destructive/irreversible. The only behavioral hint is implicit in the word 'buildable' and the read-only resource pointers.
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 short sentences with the resource and action list front-loaded and the alternative-resource guidance second. Nothing is wasted.
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?
For a tool with a mutating action (build), no annotations, and no output schema, the description should explain what build produces and any preconditions or risks. As written, an agent knows the read-only escape hatches but not the semantics of the one action that changes state.
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 67% and the action enum is undocumented in the schema, so the description's enumeration of list/info/build does add meaning. However, it never distinguishes what each action requires or returns (e.g. that name matters only for info/build), and the blueprint_name alias is left to the schema.
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 names a concrete resource (buildable image blueprints) and enumerates the exact action verbs (list, info, build), which lets an agent tell it apart from siblings like nido_image or nido_template. The 'manage' framing is a bit broad, but the action list pins down the scope.
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?
It explicitly advises preferring nido://catalog/blueprints and nido://blueprint/{name} resources for read-only inspection, giving a concrete when-not-to-use signal for list/info. It stops short of saying when build is appropriate versus inspecting a blueprint via the resource first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nido_eventsA
Control this MCP session's opt-in Nido event subscriptions. Subscribe to a VM URI or core resource; mute/unmute keeps filters, unsubscribe removes them. No notifications by default. Read nido://system/events for stream health and recent subscribed events. Notifications contain only an invalidated URI.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | No | Core Nido resource URI; required except for status. | |
| kinds | No | Optional event kinds for subscribe; empty means all core changes. | |
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does substantial work: it discloses that subscriptions are opt-in and session-scoped, that mute retains filters while unsubscribe discards them, and critically that notifications carry only an invalidated URI (no payload). That last point is essential behavioral information for an agent deciding how to consume events. It does not discuss persistence across sessions or delivery guarantees, keeping it from a 5.
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?
Four short sentences, front-loaded with what the tool controls, then action semantics, then the default state, then where to read health. No sentence is redundant and the ordering follows the agent's decision path.
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?
For a 3-parameter session-scoped subscription tool with no output schema and no annotations, the description covers the essentials: default behavior, action distinctions, and notification payload shape. The gaps are the undocumented parameter and any note on subscription lifetime or error behavior, which keeps it below a 5.
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 67%, with the uri and uri_filter parameters already documented and one parameter undocumented. The description adds some semantic context — that subscriptions are per-VM-URI or core resource, and that mute/unmute retain filters — but does not explain the undocumented parameter or clarify the relationship between the two URI parameters. Adequate but reliant on the schema.
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 states a specific verb+resource: subscribe/mute/unsubscribe to event streams scoped to this MCP session, with URI or core resource granularity. It is clearly distinct from the sibling resource-management tools (nido_vm, nido_template, etc.). However, the tool name 'nido_events' alone does not convey the subscription-management intent, so the description carries the load well but without naming sibling differentiation explicitly.
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?
It gives clear operational guidance: default is no notifications, mute/unmute preserves filters while unsubscribe removes them, and status/health lives at nido://system/events. This tells the agent which action to pick and where to look for diagnostics. It lacks explicit 'when not to use' or guidance on choosing between kinds values, but the action-selection semantics are well covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nido_imageA
Manage the image catalog and cache through one namespaced tool. Supported actions are list, info, pull, remove, refresh_catalog, cache_list, cache_info, cache_remove, and cache_prune. Prefer resources like nido://catalog/images, nido://image/{tag}, and nido://storage/cache for inspection to reduce token usage.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | Image tag like debian:12. | |
| action | Yes | ||
| unused_only | No | Used by action=cache_prune. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It lists action names but does not disclose side effects such as whether pull downloads, remove/cache_remove/cache_prune delete data, whether operations are reversible, what permissions are needed, or what the tool returns.
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 sentences, front-loaded with the tool's purpose and action set, followed by a concrete resource-preference tip. The action enumeration is somewhat redundant with the schema enum but still useful for quick scanning.
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?
This is a multi-action mutation-capable tool with no annotations and no output schema, yet the description omits action-specific behavior, side effects, prerequisites, return values, and parameter mapping. It gives resource guidance but not enough context to invoke complex actions safely.
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 moderate at 67%, and the schema already describes the image and unused_only parameters. The description repeats the action enum values but adds no action-specific parameter guidance, such as when image is required or that unused_only applies only to cache_prune.
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?
States a specific verb plus resource ('Manage the image catalog and cache') and enumerates all supported actions. The image-domain focus clearly distinguishes it from sibling tools such as nido_vm, nido_template, and nido_system.
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?
Explicitly recommends using resources like nido://catalog/images, nido://image/{tag}, and nido://storage/cache for inspection to reduce token usage. It does not explain when each individual action is appropriate or when mutations must be done through the tool versus resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nido_systemC
Access system-wide Nido operations that are not tied to one VM. Supported actions are doctor, version, update_check, update, config_get, config_set, accel_list, register, completion, build_image, and uninstall. Use read-only resources when possible.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Global config key for action=config_set. | |
| force | No | Required for action=uninstall. | |
| shell | No | Shell for action=completion. | |
| value | No | Global config value for action=config_set. | |
| action | Yes | ||
| blueprint_name | No | Blueprint used by action=build_image. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It hints that some actions may not be read-only by recommending read-only resources, but it does not identify which actions mutate system state, require permissions, are destructive, or have irreversible effects such as uninstall or update.
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 short and front-loads the system-wide scope. The action list is somewhat redundant with the schema enum, but it remains concise and does not bury the main purpose.
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?
For an 11-action system tool with no annotations and no output schema, the description is under-specified. It does not explain action-specific behavior, required parameters per action, side effects, safety constraints, or expected results beyond a bare list of action names.
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 83%, so the schema already documents most parameters, and the baseline of 3 applies. The description only repeats the action names already present in the enum and adds no meaning for key, value, shell, force, or blueprint_name.
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 identifies a system-wide Nido operation dispatcher and distinguishes it from per-VM work, which helps separate it from nido_vm. However, "Access system-wide operations" is a broad category rather than a specific verb+resource, and the long action list only names commands without explaining what they do.
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 only guidance is "Use read-only resources when possible," which is vague and does not name alternatives or specify when to use this tool versus sibling resources. It also gives no warning about when destructive actions such as update, uninstall, or config_set are appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nido_templateB
Manage reusable VM templates with a single tool. Supported actions are list, create, and delete. Use nido://fleet/templates when you only need to inspect template names.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Template name for action=delete. | |
| action | Yes | ||
| vm_name | No | Source VM for action=create. | |
| template_name | No | Template name for action=create. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it discloses almost nothing: delete is a destructive, irreversible operation on reusable infrastructure yet no warning is given, nor any statement about what happens to VMs built from the template or whether the source VM must be in a particular state before create. Only the multi-action dispatch model ('a single tool') is conveyed.
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 short sentences, front-loaded with the resource and the action list, with no filler beyond the slightly redundant 'with a single tool'. Nothing essential is buried.
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?
This is a three-action mutation-capable tool with no annotations and no output schema, so the description should explain per-action preconditions and effects. It instead covers only the action inventory and one alternative, leaving delete semantics and create prerequisites undocumented.
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 75%, near the high-coverage baseline, and the schema already explains name, vm_name and template_name per action. The description adds the valid action values but says nothing about formats, name collisions on create, or whether name is required for delete beyond the enum.
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?
States a specific verb and resource ('Manage reusable VM templates') and enumerates the three supported actions, so the agent knows exactly what the tool covers. It does not differentiate against the sibling tools (nido_vm, nido_image, nido_blueprint), which matters since templates sit close to both VM and image concepts.
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 one concrete routing rule: use nido://fleet/templates when only inspecting names, which steers the agent away from the read path here. It stops short of saying when to prefer create/delete versus blueprint or image tools, so half the action surface has no guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nido_vmB
Operate the VM fleet through a single high-power tool. Use actions such as list, info, create, start, stop, delete, ssh, prune, config_update, port_forward, port_unforward, and port_list. Prefer resources like nido://fleet/vms or nido://vm/{name} for inspection when your client supports resources; use this tool for mutations or as a universal fallback.
| Name | Required | Description | Default |
|---|---|---|---|
| ftp | No | Expose FTP default port for action=create. | |
| gui | No | ||
| web | No | Expose HTTP and HTTPS defaults for action=create. | |
| name | No | VM name for any action that targets a specific VM. | |
| image | No | Image tag like ubuntu:24.04 for action=create. | |
| ports | No | Port rules like ["http:80:30080/tcp"]. | |
| vcpus | No | ||
| action | Yes | ||
| cmdline | No | ||
| mapping | No | Single port mapping used by action=port_forward. | |
| protocol | No | Protocol used by action=port_unforward, typically tcp or udp. | |
| ssh_port | No | ||
| ssh_user | No | ||
| template | No | Template name for action=create. | |
| vnc_port | No | ||
| memory_mb | No | ||
| user_data | No | Cloud-init user-data content for action=create. | |
| guest_port | No | Guest port used by action=port_unforward. | |
| accelerators | No | ||
| raw_qemu_args | No | For config_update: replace saved arguments in order; omit to preserve, or send [] to clear. Takes effect on next start. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden, and it discloses almost none. It never says that delete and prune are destructive or irreversible, what prune removes, whether delete frees disk, or whether start/stop are idempotent. The only real disclosure is the inspection-vs-mutation routing hint, which is useful but far short of what a twelve-action mutation surface requires.
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, front-loaded with purpose, then actions, then routing preference, with no filler. The twelve-action enumeration largely restates the schema's action enum, which is mild redundancy, but it does frame the tool's scope before the fallback instruction.
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?
For a god-tool spanning twelve actions and twenty parameters with no annotations and no output schema, the description omits which parameters each action needs, what create returns, and any safety profile for the destructive actions. The resource-preference sentence is good, but it does not compensate for the missing per-action contract.
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?
With 20 parameters and only 55% schema description coverage, roughly nine fields (gui, vcpus, memory_mb, ssh_port, ssh_user, vnc_port, cmdline, accelerators, plus partially name) have no documented meaning anywhere. The description adds no per-action parameter mapping, so an agent cannot tell from it that mapping belongs to port_forward or that user_data only applies to create.
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?
States a specific verb and resource ('Operate the VM fleet') and enumerates the twelve supported actions, which lets an agent match its intent to a named operation. It does not explicitly distinguish itself from siblings like nido_template or nido_image, even though the create-related parameters (image, template) overlap with them.
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?
Explicitly routes the agent: prefer the nido://fleet/vms and nido://vm/{name} resources for inspection when the client supports resources, and use this tool for mutations or as a universal fallback. What is missing is any guidance on choosing between actions in ambiguous cases, and no when-not conditions for destructive actions such as delete or prune.
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.
6 tool updates
v4.8.7- First observed
nido_blueprint - First observed
nido_events - First observed
nido_image - First observed
nido_system - First observed
nido_template - First observed
nido_vm
TDQS
Scored across 6 tools
The six tools map cleanly to distinct domains: events, VMs, templates, images, blueprints, and system operations. Minor potential overlap exists around image building, where nido_system build_image, nido_image pull, and nido_blueprint build could require an agent to reason about which layer is intended.
All tools use a consistent nido_ namespace followed by a domain noun, making the set predictable. The only minor deviation is nido_events being plural while the other domain names are singular.
Six tools is well within the appropriate range and each corresponds to a meaningful resource domain. The set is compact even though several tools expose many actions internally.
VM, image, system, and event operations are broadly covered, including lifecycle and port-forwarding actions. There are some minor gaps, such as template update/info operations and blueprint create/delete lifecycle operations, though resources may cover read-only inspection.
Maintenance
Related MCP Connectors
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables AI agents to manage system updates, application installations, and remote host orchestration through MCP tools.263MIT
- AlicenseAqualityDmaintenanceEnables LLM agents to monitor and manage a Proxmox VE cluster, including cluster status, VM/container lifecycle, and node actions via MCP tools.8MIT
- AlicenseAqualityDmaintenanceProvides read-only access to host system metrics (CPU, memory, disk), Docker container health/logs, and sandboxed log file analysis via MCP tools, enabling AI agents to monitor enterprise infrastructure safely.3MIT
- AlicenseAqualityBmaintenanceEnables AI agents to safely monitor Linux VPS health, inspect Docker containers, retrieve service logs, and execute whitelisted recovery actions via MCP.31173 npm30 PyPIMIT