SAP CC Bare Metal (Ironic)
Inspect baremetal nodes: list nodes, check provision/power states, understand maintenance status and driver configuration.
MCP Tools
Read Tools
| 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 |
Admin Tools (requires MCP_ADMIN_TOOLS=true)
| 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 |
Security: Credential Isolation
- DriverInfo excluded: Node detail NEVER exposes BMC credentials (IPMI passwords, Redfish creds, iDRAC secrets)
- DriverInternalInfo excluded: Internal provisioning state with potential secrets omitted
- InstanceInfo excluded: Nova instance provisioning details omitted
- Properties excluded: Hardware properties that may contain sensitive deployment info
Guardrails
- Path segment validation:
node_idaccepts both UUID and human-readable names safely - Power state allowlist: Only
power on,power off,rebootingaccepted as targets - Confirmation required: Power state changes return preview unless
confirmed=true - Destructive action gate: The
destructive-action-gatehook blocksironic_node_power_stateuntil user approves
Gotchas
Sensitive fields are redacted. The MCP tool intentionally omits
driver_info,driver_internal_info,instance_info, andpropertiesfromironic_get_noderesponses. 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_stateis the lifecycle state (available, deploying, active, error).power_stateis the physical state (power on, power off). A node can beactiveprovision butpower offif manually shut down."available" means ready for deployment. In Ironic,
availabledoes not mean "has capacity" — it means the node is enrolled, inspected, cleaned, and ready to receive a workload.activemeans already deployed.instance_uuid links to Nova. When a node is in
activestate,instance_uuidshows which Nova server is running on it. Use this to cross-reference withnova_get_server.node_id accepts UUID or name. Unlike most OpenStack tools that require UUIDs,
ironic_get_nodeaccepts either the node UUID or its human-readable name.last_error contains deployment failure details. When
provision_state=error, thelast_errorfield in the get response describes what went wrong (e.g., timeout during deploy, cleaning failure, network boot failure).
Common Workflows
List Nodes Available for Deployment
ironic_list_nodeswithprovision_state=available— show nodes ready for workloads.- Filter by
resource_classif you need a specific hardware profile. - Verify
maintenance=falsein results — maintenance nodes cannot be deployed to.
Diagnose a Node in Error State
ironic_list_nodeswithprovision_state=error— find all error nodes.ironic_get_nodewithnode_id=<uuid>— checklast_errorfor the failure reason.- Check
maintenanceandmaintenance_reason— the node may have been put in maintenance due to the error. - Check
faultfield for categorized fault information.
Find the Physical Node Running a VM
- Start with the Nova server UUID.
ironic_list_nodes— scan results forinstance_uuidmatching your server UUID.- Or if you know the node:
ironic_get_nodeand checkinstance_uuid.
Cross-Service References
| 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 |