Help us improve
Share bugs, ideas, or general feedback.
From sapcc
Bare metal node operations via Ironic. Triggers: baremetal, bare metal, ironic, node, provision state, hardware, physical server. NOT for: virtual servers (use sapcc-compute/Nova).
npx claudepluginhub notque/openstack-agent-toolkit --plugin sapccHow this skill is triggered — by the user, by Claude, or both
Slash command
/sapcc:sapcc-baremetalThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Inspect baremetal nodes: list nodes, check provision/power states, understand maintenance status and driver configuration.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Inspect baremetal nodes: list nodes, check provision/power states, understand maintenance status and driver configuration.
| Tool | Purpose | Key Parameters |
|---|---|---|
ironic_list_nodes | List baremetal nodes | provision_state, maintenance (true/false), driver, resource_class, instance_uuid, fault, owner |
ironic_get_node | Full node detail (sensitive fields excluded) | node_id (required, UUID or name) |
ironic_list_node_ports | List NICs for a node | node_id (required) |
ironic_list_allocations | List node allocations | node_id, resource_class |
ironic_list_portgroups | List port groups (bonded NICs) | node_id |
| Tool | Purpose | Key Parameters |
|---|---|---|
ironic_list_chassis† | List baremetal chassis | (none) |
ironic_node_power_state†* | Change node power state | node_id (required), target (required: power on/power off/rebooting), confirmed |
node_id accepts both UUID and human-readable names safelypower on, power off, rebooting accepted as targetsconfirmed=truedestructive-action-gate hook blocks ironic_node_power_state until user approvesSensitive fields are redacted. The MCP tool intentionally omits driver_info, driver_internal_info, instance_info, and properties from ironic_get_node responses. These may contain BMC credentials (IPMI passwords, Redfish secrets). Do not tell users these fields are accessible.
maintenance filter is a string "true", not a boolean. Pass maintenance="true" as a string value. There is no "false" filter — omit the parameter to see all nodes regardless of maintenance status.
provision_state vs power_state. provision_state is the lifecycle state (available, deploying, active, error). power_state is the physical state (power on, power off). A node can be active provision but power off if manually shut down.
"available" means ready for deployment. In Ironic, available does not mean "has capacity" — it means the node is enrolled, inspected, cleaned, and ready to receive a workload. active means already deployed.
instance_uuid links to Nova. When a node is in active state, instance_uuid shows which Nova server is running on it. Use this to cross-reference with nova_get_server.
node_id accepts UUID or name. Unlike most OpenStack tools that require UUIDs, ironic_get_node accepts either the node UUID or its human-readable name.
last_error contains deployment failure details. When provision_state=error, the last_error field in the get response describes what went wrong (e.g., timeout during deploy, cleaning failure, network boot failure).
ironic_list_nodes with provision_state=available — show nodes ready for workloads.resource_class if you need a specific hardware profile.maintenance=false in results — maintenance nodes cannot be deployed to.ironic_list_nodes with provision_state=error — find all error nodes.ironic_get_node with node_id=<uuid> — check last_error for the failure reason.maintenance and maintenance_reason — the node may have been put in maintenance due to the error.fault field for categorized fault information.ironic_list_nodes — scan results for instance_uuid matching your server UUID.ironic_get_node and check instance_uuid.| Need | Service | Tool |
|---|---|---|
| VM running on this node | Nova | nova_get_server(<instance_uuid>) |
| Who modified node state | Hermes | hermes_list_events(target_type=node) |
| Compute quota (includes baremetal flavors) | Limes | limes_get_project_quota(service=compute) |
| Network ports attached to node | Neutron | neutron_list_ports |