Governed MCP server for DMTF Redfish BMCs. Read-only by default; writes are opt-in and dry-run.
The MIRASTACK Redfish MCP Server is a governed Model Context Protocol (MCP) server for DMTF Redfish-compliant BMCs, including iDRAC, iLO, XCC, OpenBMC, and compatible implementations. It is read-only by default, with mutating tools opt-in. When enabled, mutations run as dry-runs until confirmed.
🛠️ Key Features
Governed MCP server for DMTF Redfish BMCs
Supports iDRAC, iLO, XCC, OpenBMC, and compatible implementations
Read-only by default
Writes are opt-in
Mutations are dry-run until confirmed
Apache-2.0 licensed
🚀 Use Cases
Accessing Redfish BMC data in infrastructure and programmable data centers
Integrating MCP with model context workflows for bare-metal environments
Working with deployments across common BMC vendors (iDRAC, iLO, OpenBMC, XCC)
⚡ Developer Benefits
Safer defaults: mutating tools are not registered unless write mode is raised
Confirmation gating via dry-run behavior for mutations
Clear alignment with MCP and Redfish for agent tooling
⚠️ Limitations
Mutating actions require explicit write mode
Mutation effects are not applied until after dry-run confirmation
Governed MCP server for DMTF Redfish-compliant BMCs — iDRAC, iLO, XCC,
OpenBMC and compatible implementations. Read-only by default: mutating
tools are not registered unless you explicitly raise the write mode, and
every mutation is a dry-run until confirmed.
Safe write controls: tiered registration plus dry-run-first confirmations.
Why this exists
A BMC is a pre-OS, out-of-band control plane with authority above normal host-level root access. Giving an autonomous agent BMC access without strong guardrails creates immediate blast-radius risk across power, boot, firmware, and account boundaries. This server forces dangerous actions behind deliberate write-mode elevation, and keeps every mutation dry-run by default so intent can be reviewed before application. The result is a governed operational interface rather than an always-armed remote control. The model can still move fast on diagnostics, but privilege transitions become explicit and auditable.
Installation
bash
pip install mirastack-redfish-mcp
Try it in 60 seconds (no hardware)
Run a local DMTF mockup, start the MCP server in read-only mode, and call a read tool:
The server also starts with zero endpoint credentials and still serves read-only
tool discovery (for MCP scanner validation and metadata indexing). In this mode,
schema/corpus-backed tools continue to work, while BMC-connected tools return a
configuration error that names the required environment variables:
MIRASTACK_REDFISH_HOST, MIRASTACK_REDFISH_USERNAME, and
MIRASTACK_REDFISH_PASSWORD (or MIRASTACK_REDFISH_PASSWORD_FILE), or
MIRASTACK_REDFISH_ENDPOINTS for multi-endpoint setup.
Discovery mode also covers a missing endpoints file. If MIRASTACK_REDFISH_ENDPOINTS
points at a path that does not exist - which is how container platforms and MCP directory
scanners inject a placeholder - the server logs a warning naming that path on stderr and
starts with zero endpoints. A file that does exist but cannot be read or parsed remains a
hard startup failure, and a partially configured single endpoint (for example
MIRASTACK_REDFISH_HOST without MIRASTACK_REDFISH_PASSWORD) still raises, so a typo can
never silently downgrade a configured deployment.
Warning: binding to 0.0.0.0 exposes BMC control to every host that can reach this port. Bind to loopback unless the listener sits behind an authenticating proxy on a trusted management network.
Configuration
Canonical environment variables
Use MIRASTACK_REDFISH_* variables:
MIRASTACK_REDFISH_HOST
MIRASTACK_REDFISH_USERNAME
MIRASTACK_REDFISH_PASSWORD or MIRASTACK_REDFISH_PASSWORD_FILE
Full tier:insert_virtual_media, clear_logs, manage_account, simple_update, reset_to_defaults
Development
bash
python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
make build-index
make verify
The schema index is generated from DMTF Redfish-Publications, pinned to one release for reproducibility. See CONTRIBUTING.md for refresh procedure.
Registry Publishing Notes
server.json includes PyPI and OCI package definitions for MCP Registry.
This README carries the required marker: mcp-name: ai.mirastacklabs/mirastack-redfish-mcp.
Docker image includes the io.modelcontextprotocol.server.name OCI label.
Install the official publisher CLI via Homebrew: brew install mcp-publisher.
Do not use npx mcp-publisher or pip install mcp-publisher for registry publishing.
Container and directory deployments
The published image puts the console script on PATH, so docker run ... mirastack-redfish-mcp --transport stdio works unchanged.
Some MCP directories ignore the repository Dockerfile and generate their own image from source. If that generated build installs with uv sync, the project lands in a virtualenv at /app/.venv and the console script is not on PATH, so a launcher that spawns the bare name fails with ENOENT. Point the launcher at the absolute path instead:
A placeholder MIRASTACK_REDFISH_ENDPOINTS path that the platform never creates is safe - the server starts in discovery mode and serves the read-only tool surface.
Contributing
GitHub is a public read-only mirror. Issues are welcome on GitHub, but pull requests opened on GitHub cannot be merged. See CONTRIBUTING.md for accepted contribution paths.