The mockup lab — six iDRACs, zero hardware
Dell publishes real Redfish captures of iDRAC-managed servers — complete resource trees dumped from live machines. mcidrac’s test harness serves them with DMTF’s Redfish-Mockup-Server over HTTPS, so you can learn the whole tool surface (and we can test it) against genuine iDRAC data with no PowerEdge in sight.
You need Docker, Python 3.11+ with uv, and a clone of the mcidrac repository.
1. Start the fleet
Section titled “1. Start the fleet”cd mcidracscripts/mockup-up.sh allFirst run downloads the captures (~70 MB). You get six BMCs on localhost, each a real machine’s data:
| Name | Hardware | Generation | Firmware |
|---|---|---|---|
r660xs |
PowerEdge R660xs | iDRAC9, 16G | 7.20.10.05 |
r770 |
PowerEdge R770 | iDRAC10, 17G | 1.10.17.00 |
r7725 |
PowerEdge R7725 | iDRAC10, 17G | 1.20.70.50 |
xe9712 |
PowerEdge XE9712 | iDRAC10, 17G | 1.30.07.10 |
basic |
basic config | iDRAC9, 15G | 7.10.30.00 |
gpu-dpu |
GPU/DPU config | iDRAC9, 16G | 7.10.50.00 |
The script writes a ready-made registry at .mockup/idracs.toml.
2. Point mcidrac at it
Section titled “2. Point mcidrac at it”MCIDRAC_CONFIG=.mockup/idracs.toml uv run mcidrac --checkSix iDRACs configured. Now explore — everything in the read surface
works: idrac_info shows real service tags, idrac_inventory lists the
R660xs’s actual DIMMs and drives, idrac_sel pages through its real
event log, and idrac_firmware reports what was genuinely installed.
3. Run the shakedown
Section titled “3. Run the shakedown”MCIDRAC_CONFIG=.mockup/idracs.toml python3 scripts/shakedown.pyThis drives the 15-tool read ladder against all six boxes over MCP stdio — 90 tool calls across two iDRAC generations. It’s the same sweep that caught a real iDRAC10 incompatibility during development (see Firmware quirks).
4. Test the write paths
Section titled “4. Test the write paths”Static mockups can’t change state, so the repo includes simdrac — a behavioral simulator that serves the R660xs capture for reads and implements Dell’s write semantics live: a power state machine, virtual media insert/eject, BIOS jobs that walk Scheduled → Running → Completed, read-only attribute rejections, and the SCP export task quirk.
python3 scripts/write-shakedown.pyTwenty destructive-tool steps run with outcome assertions — including the guardrails: double-mounts rejected, wrong-box SCP imports refused, powering off an already-off box returns an honest error.
5. Tear down
Section titled “5. Tear down”scripts/mockup-up.sh downWhat you’ve learned
Section titled “What you’ve learned”You’ve now driven every mcidrac tool against real iDRAC data. When a physical PowerEdge shows up, the only new things are a registry entry with real credentials — and consequences.
Bonus: a proving ground for local models
Section titled “Bonus: a proving ground for local models”The fleet is also the honest way to answer “is this local model good enough at tool calling to trust with my hardware?” Point an agent at the mockup registry and watch whether it calls the right tools with valid arguments — a model that garbles a fake R660xs would garble your real one. That’s the core of running mcidrac with a local model.