MCP server for managing Multipass virtual machine instances, including launching, stopping, executing commands, file transfers, snapshots, and configuration management.
Strong tool naming (verb_noun pattern consistently applied across 32 tools). All tools have descriptions (avg 156 chars, within 10-1024 baseline). Input schemas present with type definitions and descriptions for all parameters. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) correctly applied. Key gaps: output schemas not documented in code; error handling lacks recovery guidance; some descriptions are generic ('Execute a command') without context on when to use vs alternatives; no pagination support for list tools despite returning potentially large result sets.
Authenticate with the Multipass service using a passphrase. WARNING: The passphrase is passed as a CLI argument and may be visible in the system process list.
Clone a stopped Multipass instance into an independent copy. The source instance must be stopped.
Delete a Multipass instance (can be recovered unless purged).
Check disk usage for a Multipass instance. Returns total, used, percentage, and a warning if usage exceeds the threshold.
Execute a command inside a Multipass instance.
List available Multipass images that can be launched (Ubuntu releases, blueprints, etc).
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Returns mount source, target, UID/GID mappings') but formal output schema definitions are absent from code. LLMs cannot plan downstream tool calls without knowing response structure.
List tools lack pagination support. multipass_list_instances, multipass_list_snapshots, multipass_list_aliases, multipass_list_deleted, multipass_list_mounts have no limit/offset/page parameters. Large result sets will blow context windows.
Error handling lacks recovery guidance. Tool implementations return raw errors (e.g., 'mcp.NewToolResultError(err.Error())') without actionable next steps. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Get the configured bridged network interface name. Returns the network used when launching with --network bridged.
Get a Multipass configuration value by key, or list all available setting keys.
Get detailed information about a specific Multipass instance including CPU, memory, disk usage, mounts, and snapshots.
Get Multipass version and daemon information.
Check if a Multipass instance exists by name. Returns exists (bool), state, and image. Use before launch to avoid duplicates or before lifecycle commands to verify the target.
Launch a new Multipass VM instance.
List configured Multipass command aliases.
List only deleted (trashed) Multipass instances that can be recovered or purged.
List all Multipass instances with their state, IP addresses, and image info.
List active mounts for a Multipass instance. Returns mount source, target, UID/GID mappings.
List host network interfaces available for Multipass instances.
List all snapshots for a specific Multipass instance.
Mount a host directory inside a Multipass instance.
Permanently delete all trashed (deleted) Multipass instances. This is irreversible. All instances previously deleted with 'multipass_delete' will be permanently removed.
Recover a deleted (trashed) Multipass instance.
Restart a Multipass instance.
Restore a Multipass instance to a snapshot. The instance must be stopped. Use destructive=true to discard current state.
Run a multi-line script inside a Multipass instance. The script is transferred to the instance, executed with the specified interpreter, and cleaned up automatically. Use this for complex multi-step operations instead of chaining exec_command calls.
Set a Multipass configuration value.
Create a snapshot of a stopped Multipass instance. The instance must be stopped before taking a snapshot.
Start a stopped Multipass instance.
Stop a running Multipass instance.
Suspend a running Multipass instance.
Transfer files between host and a Multipass instance. Use <instance>:<path> syntax for instance paths (e.g. "my-vm:/home/ubuntu/file.txt"). Use a plain path for host paths (e.g. "/tmp/file.txt").
Unmount a directory from a Multipass instance.
Wait for a Multipass instance to reach Running state. Polls until the instance is running or timeout is reached. Useful after launch, start, or restart.
multipass_authenticate exposes passphrase as CLI argument. Description warns 'may be visible in system process list' but tool still accepts it as a parameter. Should use server-side secret injection or environment variable.
Generic descriptions on discovery tools. multipass_find_images, multipass_list_networks, multipass_list_aliases lack context on when to call them vs alternatives. 'List available Multipass images' does not explain when to call this before launch.