mcidrac
MCP server for Dell iDRAC9 (14G+ PowerEdge) over Redfish. Manage a fleet of iDRACs from Claude or any MCP client: power, health, inventory, SEL, virtual media, boot-to-ISO, BIOS/iDRAC attributes, SCP backup/restore, and virtual console access.
Sibling of mccimc (the Cisco CIMC equivalent) — same registry model, same conventions.
Install
uvx mcidrac --check # run from PyPI, validate config
uv tool install mcidrac # or install persistently
Configure
Create ~/.config/mcidrac/idracs.toml (or ./mcidrac.toml, or point
$MCIDRAC_CONFIG at a file):
[[idracs]]
name = "r740-lab"
host = "192.0.2.10"
user = "root"
password_env = "R740_LAB_PASS" # or password = "..." literally
# cert_path = "~/certs/idrac-ca.pem" # optional pinned TLS; default skips verify
description = "R740 lab box, rack 2 U12"
Verify with mcidrac --check.
Run
mcidrac # HTTP on 127.0.0.1:7903/mcp
mcidrac --transport stdio # stdio for embedded use
mcidrac --transport http --port 7903 --host 0.0.0.0
Register with Claude Code:
# stdio (spawned per session, simplest)
claude mcp add idrac --scope user --env R740_LAB_PASS=... -- uvx mcidrac --transport stdio
# or long-running HTTP
claude mcp add idrac --transport http http://127.0.0.1:7903/mcp
Surface
24 tools (idrac_*): list/ping/info/health, raw idrac_get escape
hatch, power control + locator LED, inventory/sensors/firmware, SEL +
Lifecycle logs, virtual media + boot override + one-shot idrac_boot_to_iso,
BIOS + Dell attribute get/set, job queue, SCP export/import, and
idrac_console (HTML5 console URL with one-shot temp credentials).
Resources: bundled reference docs (idrac://docs/redfish-map,
firmware-quirks, operations-cookbook, jobs-and-tasks), the registry,
and live per-box snapshots (idrac://{name}/info, /sensors, /sel,
/vmedia, /jobs).
Prompts: health_check (fleet sweep), identify_box,
prepare_install (ISO → console), diagnose_wedged, firmware_audit,
backup_config.
Integration testing without hardware
Dell publishes real Redfish captures of iDRAC9 and iDRAC10 systems
(dell/iDRAC-Redfish-Scripting,
"iDRAC Redfish Mockup Clients"). scripts/mockup-up.sh serves them with
DMTF's Redfish-Mockup-Server
over HTTPS in Docker, so the whole stack — TLS, token sessions, Dell OEM
paths — gets exercised against genuine iDRAC responses:
scripts/mockup-up.sh # start the iDRAC9 R660xs capture
scripts/mockup-up.sh all # plus three iDRAC10 firmware lines + 2 configs
MCIDRAC_CONFIG=.mockup/idracs.toml python3 scripts/shakedown.py
scripts/mockup-up.sh down # tear down
The shakedown runs the 15-tool read ladder against every configured box over MCP stdio.
Static mockups can't simulate writes, so scripts/simdrac.py is a
behavioral simulator: it serves the R660xs capture for reads and
overlays a live state machine with the Dell write semantics — token
sessions with 401 enforcement, a power state machine ("already on"
errors), vMedia insert/eject state, DellAttributes read-only rejections
via top-level ExtendedInfo, BIOS PATCH → JID job lifecycle
(Scheduled→Running→Completed), the SCP export task-morph, and SEL clear.
python3 scripts/write-shakedown.py # self-contained: boots simdrac,
# runs all destructive tools, asserts outcomes
Real hardware remains the final gate (a simulator can only encode the semantics we know about), but every tool and every guardrail now has an executable test.
Compatibility
Targets iDRAC9 (PowerEdge 14G+: R(x)40 / R(x)50 / R(x)60 era). Pure
Redfish — no racadm, no WS-Man, no vendor SDK; the only dependency is
FastMCP. iDRAC8 partially works for reads on recent firmware but is not a
target. Known firmware-version quirks (virtual-media path moves, $expand
support, GetKVMSession availability) are handled in code and documented in
idrac://docs/firmware-quirks.
Safety notes
- Destructive tools (
idrac_power,idrac_bios_set,idrac_scp_import,idrac_boot_to_iso,idrac_sel_clear,idrac_attributes_set) carry MCPdestructiveHintannotations so clients can gate them. - Failed logins count toward iDRAC's IP-block lockout; the server uses token sessions with guaranteed logout and never retries auth in a loop.
- Passwords never leave the server process —
idrac_listand the registry resource return summaries only.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcidrac-2026.8.10.1.tar.gz.
File metadata
- Download URL: mcidrac-2026.8.10.1.tar.gz
- Upload date:
- Size: 51.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52ed918899be8a4105f12d222765aa6e3bf4760780688f2a8a63fd3effc06309
|
|
| MD5 |
14020a466cb69169b9f1e5bdc7b592b1
|
|
| BLAKE2b-256 |
05547051b379a1acc49efbfef2904f1390dc42bb28963da67d0bf2a742608704
|
File details
Details for the file mcidrac-2026.8.10.1-py3-none-any.whl.
File metadata
- Download URL: mcidrac-2026.8.10.1-py3-none-any.whl
- Upload date:
- Size: 52.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"EndeavourOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8f934dff699d3366e71f6110f479253d5a8625ea8958860df6489be3e234c8a
|
|
| MD5 |
5eaaaf939fbc4e7cce75ae21e2ba82fd
|
|
| BLAKE2b-256 |
1b1184a91e6dd6b4eaeaee0249622c451112f05bc4321bce5a0df5737daef495
|