You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(kubevirt): add vm_guest_info tool for QEMU guest agent access
Add new vm_guest_info tool that enables querying information from inside
VirtualMachines using the QEMU guest agent, without requiring SSH access
or credentials.
The tool supports querying:
- os: Operating system information (name, version, kernel, hostname)
- filesystem: Mounted filesystems and disk usage
- network: Network interfaces and IP addresses
- users: Currently logged-in users and sessions
This provides a secure way to gather runtime information from VMs for
monitoring, troubleshooting, and compliance purposes.
Assisted-By: Claude <noreply@anthropic.com>
Signed-off-by: Ben Oukhanov <boukhanov@redhat.com>
| `--port` | Starts the MCP server in Streamable HTTP mode (path /mcp) and Server-Sent Event (SSE) (path /sse) mode and listens on the specified port . |
198
196
| `--log-level` | Sets the logging level (values [from 0-9](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md)). Similar to [kubectl logging levels](https://kubernetes.io/docs/reference/kubectl/quick-reference/#kubectl-output-verbosity-and-debugging). |
199
197
| `--config` | (Optional) Path to the main TOML configuration file. See [Configuration Reference](docs/configuration.md) for details. |
200
-
|`--config-dir`| (Optional) Path to drop-in configuration directory. Files are loaded in lexical (alphabetical) order. Defaults to `conf.d` relative to the main config file if `--config` is specified. See [Configuration Reference](docs/configuration.md) for details. |
198
+
| `--config-dir` | (Optional) Path to drop-in configuration directory. Files are loaded in lexical (alphabetical) order. Defaults to `conf.d` relative to the main config file if `--config` is specified. See [Configuration Reference](docs/configuration.md) for details. |
201
199
| `--kubeconfig` | Path to the Kubernetes configuration file. If not provided, it will try to resolve the configuration (in-cluster, default location, etc.). |
202
200
| `--list-output` | Output format for resource list operations (one of: yaml, table) (default "table") |
203
201
| `--read-only` | If set, the MCP server will run in read-only mode, meaning it will not allow any write operations (create, update, delete) on the Kubernetes cluster. This is useful for debugging or inspecting the cluster without making changes. |
| config | View and manage the current local Kubernetes configuration (kubeconfig) | ✓ |
271
270
| core | Most common tools for Kubernetes management (Pods, Generic Resources, Events, etc.) | ✓ |
272
271
| helm | Tools for managing Helm charts and releases | |
@@ -362,26 +361,26 @@ In case multi-cluster support is enabled (default) and you have access to multip
362
361
- `port`(`number`) - TCP/IP port to expose from the Pod container (Optional, no port exposed if not provided)
363
362
364
363
- **resources_list** - List Kubernetes resources and objects in the current cluster by providing their apiVersion and kind and optionally the namespace and label selector
- `apiVersion` (`string`) **(required)** - apiVersion of the resources (examples of valid apiVersion are: v1, apps/v1, networking.k8s.io/v1)
367
366
- `fieldSelector` (`string`) - Optional Kubernetes field selector to filter resources by field values (e.g. 'status.phase=Running', 'metadata.name=myresource'). Supported fields vary by resource type. For Pods: metadata.name, metadata.namespace, spec.nodeName, spec.restartPolicy, spec.schedulerName, spec.serviceAccountName, status.phase (Pending/Running/Succeeded/Failed/Unknown), status.podIP, status.nominatedNodeName. See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
368
367
- `kind` (`string`) **(required)** - kind of the resources (examples of valid kind are: Pod, Service, Deployment, Ingress)
369
368
- `labelSelector`(`string`) - Optional Kubernetes label selector (e.g. 'app=myapp,env=prod' or 'app in (myapp,yourapp)'), use this option when you want to filter the resources by label
370
369
- `namespace`(`string`) - Optional Namespace to retrieve the namespaced resources from (ignored in case of cluster scoped resources). If not provided, will list resources from all namespaces
371
370
372
371
- **resources_get** - Get a Kubernetes resource in the current cluster by providing its apiVersion, kind, optionally the namespace, and its name
- `apiVersion` (`string`) **(required)** - apiVersion of the resource (examples of valid apiVersion are: v1, apps/v1, networking.k8s.io/v1)
375
374
- `kind` (`string`) **(required)** - kind of the resource (examples of valid kind are: Pod, Service, Deployment, Ingress)
376
375
- `name`(`string`) **(required)** - Name of the resource
377
376
- `namespace`(`string`) - Optional Namespace to retrieve the namespaced resource from (ignored in case of cluster scoped resources). If not provided, will get resource from configured namespace
378
377
379
378
- **resources_create_or_update** - Create or update a Kubernetes resource in the current cluster by providing a YAML or JSON representation of the resource
- `resource`(`string`) **(required)** - A JSON or YAML containing a representation of the Kubernetes resource. Should include top-level fields such as apiVersion,kind,metadata, and spec
382
381
383
382
- **resources_delete** - Delete a Kubernetes resource in the current cluster by providing its apiVersion, kind, optionally the namespace, and its name
- `apiVersion` (`string`) **(required)** - apiVersion of the resource (examples of valid apiVersion are: v1, apps/v1, networking.k8s.io/v1)
386
385
- `gracePeriodSeconds`(`integer`) - Optional duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used
387
386
- `kind` (`string`) **(required)** - kind of the resource (examples of valid kind are: Pod, Service, Deployment, Ingress)
@@ -531,6 +530,11 @@ In case multi-cluster support is enabled (default) and you have access to multip
531
530
- `storage`(`string`) - Optional storage size for the VM's root disk when using DataSources (e.g., '30Gi', '50Gi', '100Gi'). Defaults to 30Gi. Ignored when using container disks.
532
531
- `workload`(`string`) - The workload for the VM. Accepts OS names (e.g., 'fedora' (default), 'ubuntu', 'centos', 'centos-stream', 'debian', 'rhel', 'opensuse', 'opensuse-tumbleweed', 'opensuse-leap') or full container disk image URLs
533
532
533
+
- **vm_guest_info** - Get guest operating system information from a VirtualMachine's QEMU guest agent. Requires the guest agent to be installed and running inside the VM. Provides detailed information about the OS, filesystems, network interfaces, and logged-in users.
534
+
- `info_type` (`string`) - Type of information to retrieve: 'all'(default - all available info), 'os' (operating system details), 'filesystem' (disk and filesystem info), 'users' (logged-in users), 'network' (network interfaces and IPs)
535
+
- `name`(`string`) **(required)** - The name of the virtual machine
536
+
- `namespace`(`string`) **(required)** - The namespace of the virtual machine
537
+
534
538
- **vm_lifecycle** - Manage KubeVirt VirtualMachine lifecycle: start, stop, or restart a VM
535
539
- `action` (`string`) **(required)** - The lifecycle action to perform: 'start'(changes runStrategy to Always), 'stop' (changes runStrategy to Halted), or 'restart' (stops then starts the VM)
536
540
- `name`(`string`) **(required)** - The name of the virtual machine
@@ -567,7 +571,6 @@ In case multi-cluster support is enabled (default) and you have access to multip
567
571
568
572
</details>
569
573
570
-
571
574
<!-- AVAILABLE-TOOLSETS-TOOLS-END -->
572
575
573
576
### Prompts
@@ -594,21 +597,18 @@ In case multi-cluster support is enabled (default) and you have access to multip
0 commit comments