-
Notifications
You must be signed in to change notification settings - Fork 176
feat(kubevirt): Add basic VM management toolset #386
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
9aa2732 to
4eac816
Compare
a135353 to
24ad072
Compare
This comment was marked as outdated.
This comment was marked as outdated.
@lyarwood +1 from my side on that being nice, the reason we haven't been able to add it there is that we use claude code in the non-interactive setup in |
Introduce a comprehensive gevals testing framework to validate VM lifecycle operations including creation with various configurations (basic, Ubuntu, instancetypes, performance, sizing) and troubleshooting scenarios. This enables automated verification of the KubeVirt toolset's functionality and regression prevention. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Introduces a new KubeVirt toolset providing virtual machine management capabilities through MCP tools. The vm_create tool generates comprehensive creation plans with pre-creation validation of instance types, preferences, and container disk images, enabling AI assistants to help users create VirtualMachines with appropriate resource configurations. The tool supports: - Workload specification via OS names or container disk URLs - Auto-selection of instance types based on size/performance hints - DataSource integration for common OS images - Comprehensive validation and planning before resource creation Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Add lifecycle management tools for starting and stopping VirtualMachines. These tools provide simple, single-action operations that prevent destructive workarounds like delete/recreate. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Add optional autostart parameter to vm_create tool that sets runStrategy to Always instead of Halted, allowing VMs to be created and started in a single operation. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good work Lee. Please consider creating a single VM package with tool.go that will have all VM's actions in one single place, it would help to avoid duplications and will be much better in terms of readablity and maintainability.
Add GetRequiredString, GetOptionalString, and GetOptionalBool methods to ToolHandlerParams type to eliminate code duplication across kubevirt VM tools. These methods provide a cleaner, reusable API for extracting parameters from tool call arguments. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Extend GetOptionalString method to accept a default value parameter, allowing callers to specify what value to return when a parameter is missing or invalid. This simplifies code by eliminating post-call default value checks. Use variadic parameters to make the default value argument optional in GetOptionalString. Callers can now either provide a default value or omit it to get empty string behavior. This provides more flexibility and cleaner call sites when empty string is the desired default. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Add parameter validation tests for the vm_start and vm_stop tools. These tests verify that required parameters (namespace, name) are properly validated and that appropriate error messages are returned for missing or invalid parameters. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Refactor all kubevirt VM tool tests to use external test packages (_test suffix) and test only public behavior through the Tools() API. This ensures tests verify the public interface rather than implementation details. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Add comprehensive DEV.md documenting the eval-first development methodology for extending the KubeVirt toolset. This approach ensures new features are validated with AI agents before implementation. The guide promotes writing geval tests BEFORE implementing features, using the test results to drive API design and validate that tools work well with AI agents. This ensures features are user-focused and AI-friendly from day one. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
codingben
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Lee.
Just an opinion: For the beginning I see too many folders and scripts to achieve a few VM's actions via MCP tooling. I'd ask the project's maintainers opinion about this, eventually this repository's codebase can be very huge.
Assuming you are talking about the test directory, I agree it is indeed pretty large at the moment but I've already spoken to folks about improvements to the |
Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
Summary
This PR introduces an initial KubeVirt toolset for the kubernetes-mcp-server, enabling AI agents to create and manage virtual machines through MCP tools.
New Tools
vm_createCreates VirtualMachines with intelligent parameter handling:
fedora,ubuntu,rhel) or full container disk URLsrunStrategy: Always)Example:
{ "name": "vm_create", "arguments": { "namespace": "my-namespace", "name": "my-vm", "workload": "fedora", "size": "large", "performance": "compute-optimized" } }vm_startStarts halted VirtualMachines by changing runStrategy to Always.
vm_stopStops running VirtualMachines by changing runStrategy to Halted.
vm_troubleshootProvides comprehensive diagnostic guidance for broken VMs:
Key Features
Testing Results
Validated using the gevals (Generative AI Evaluations) framework across 5 different AI agents/models with 6 tasks each:
Agent Performance (Improved Toolset)
Key Achievement: The toolset enables even smaller models like Granite 3.3 8B (which failed all tasks without specialized tools) to achieve perfect success rates.
Design Principles
Implementation Details
A set of
gevalstest result/report documents is available outside of this PR underpkg/toolsets/kubevirt/tests/results/setting out howgevalshas been used to first introduce and then improve the new toolset.