oVirt MCP Server
An MCP (Model Context Protocol) server for managing oVirt / Red Hat Virtualization (RHV) environments via AI assistants such as Claude.
Requirements
- Python 3.10+
- Access to an oVirt Engine or RHV Manager instance
- An account with sufficient permissions (read-only for queries; admin for power operations)
Installation
git clone https://github.com/your-org/ovirt-mcp-server.git
cd ovirt-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Configuration
Copy the example environment file and fill in your values:
cp env.example .env
| Variable | Description | Example | |---|---|---| | OVIRT_HOST | oVirt Engine hostname or IP | ovirt.domain.local | | OVIRT_USER | Username (include domain) | admin@internal | | OVIRT_PASSWORD | Password | | | OVIRT_INSECURE | Skip SSL verification (True/False) | True |
Set
OVIRT_INSECURE=Falsein production environments with a valid certificate.
Running the server
python ovirt_mcp_server.py
The server communicates over stdio (standard MCP transport).
Claude Code integration
Add the server to your Claude Code MCP configuration (~/.claude/settings.json):
{
"mcpServers": {
"ovirt": {
"command": "/path/to/ovirt-mcp-server/.venv/bin/python",
"args": ["/path/to/ovirt-mcp-server/ovirt_mcp_server.py"],
"env": {
"OVIRT_HOST": "ovirt.domain.local",
"OVIRT_USER": "admin@internal",
"OVIRT_PASSWORD": "your_password",
"OVIRT_INSECURE": "True"
}
}
}
}
Alternatively, use a .env file in the project directory instead of inlining credentials in the config.
Available tools
VM Management
| Tool | Description | |---|---| | list_vms | List VMs with optional oVirt search query | | get_vm_details | Full details for a specific VM | | get_vm_nics | Network interfaces for a VM | | get_vm_disks | Disk information for a VM | | get_vm_statistics | CPU, memory, and network stats | | get_vm_events | Recent events for a VM | | get_vm_by_ip | Find a VM by IP address | | search_vms | Search VMs by query string | | generate_vm_report | Summary report of all VMs | | get_vms_with_high_resource_usage | VMs exceeding CPU/memory thresholds |
Power Operations
| Tool | Description | |---|---| | power_on_vm | Start a VM | | shutdown_vm | Graceful shutdown | | power_off_vm | Force power off (requires confirm=true) | | reboot_vm | Reboot a VM | | suspend_vm | Suspend a VM | | bulk_power_operations | Power on/off/reboot multiple VMs |
VM Lifecycle
| Tool | Description | |---|---| | migrate_vm | Migrate VM to a different host | | delete_vm | Delete a VM (requires confirm=true) | | modify_vm_resources | Change CPU/memory allocation |
Snapshots
| Tool | Description | |---|---| | list_vm_snapshots | List snapshots for a VM | | create_vm_snapshot | Create a snapshot | | delete_vm_snapshot | Delete a snapshot (requires confirm=true) |
Infrastructure
| Tool | Description | |---|---| | list_hosts | List hypervisor hosts | | get_host_details | Details for a specific host | | get_host_statistics | CPU, memory, and network stats for a host | | list_clusters | List clusters | | get_cluster_details | Details for a specific cluster | | list_datacenters | List datacenters | | list_storage_domains | List storage domains | | get_storage_domain_details | Details for a storage domain | | list_networks | List networks | | list_templates | List VM templates | | get_events | Retrieve global oVirt events |
Notes
- Destructive operations (
delete_vm,power_off_vm,delete_vm_snapshot,bulk_power_operations) require an explicitconfirm=trueparameter. - All VM and host lookups accept oVirt UUIDs. Use
list_vmsorsearch_vmsto find IDs. - The oVirt REST API must be reachable from the machine running this server.






