Skip to main content
Glama
README.md
# mcp-redfish

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for **Redfish-compatible BMC management**, providing AI assistants with access to server hardware monitoring and control through the DMTF Redfish REST API.

## Supported Hardware

| Vendor | BMC / Interface |
|--------|----------------|
| Dell | PowerEdge iDRAC (iDRAC8, iDRAC9, iDRAC10) |
| HPE | ProLiant iLO (iLO4, iLO5, iLO6) |
| Lenovo | ThinkSystem XClarity Controller (XCC) |
| Supermicro | BMC (IPMI/Redfish) |
| Any vendor | DMTF Redfish 1.x compliant BMC |

## Features

**20 tools** across six categories:

### Systems
| Tool | Description |
|------|-------------|
| `list_systems` | List all computer systems with Name, Model, PowerState, Health, memory, and CPU summary |
| `get_system` | Get full system details including BiosVersion, HostName, IndicatorLED, and Boot settings |
| `set_power_state` | Power on/off/reboot a system (On, ForceOff, GracefulShutdown, GracefulRestart, ForceRestart, Nmi) |
| `get_bios_settings` | Get current BIOS attributes and configuration |

### Chassis
| Tool | Description |
|------|-------------|
| `list_chassis` | List chassis with ChassisType, Manufacturer, Model, SerialNumber, and Status |
| `get_chassis` | Get full chassis details |
| `get_thermal` | Get temperatures and fan speeds with thresholds and health status |
| `get_power` | Get power supply status and current consumption in watts |

### Managers (BMC)
| Tool | Description |
|------|-------------|
| `list_managers` | List BMC managers with ManagerType, FirmwareVersion, and Status |
| `get_manager` | Get full manager details |
| `reset_manager` | Gracefully restart the BMC |
| `get_network_protocol` | Get BMC protocol settings (IPMI, SSH, HTTPS enabled/disabled, ports) |

### Storage
| Tool | Description |
|------|-------------|
| `list_storage` | List storage controllers with model, firmware, supported RAID types, and health |
| `list_drives` | List physical drives with capacity, protocol (SAS/SATA/NVMe), MediaType (SSD/HDD), and health |

### Event Log
| Tool | Description |
|------|-------------|
| `list_event_log` | Get system event log entries with Severity, Message, and timestamp. Auto-discovers log path. |
| `clear_event_log` | Clear the event log (irreversible) |

### Firmware
| Tool | Description |
|------|-------------|
| `get_firmware_inventory` | List all firmware versions (BIOS, BMC, NICs, storage controllers, PSUs, etc.) |

## Installation

```bash
git clone git@github.com:fredriksknese/mcp-redfish.git
cd mcp-redfish
npm install
npm run build
```

## Configuration

The server is configured via environment variables:

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `REDFISH_HOST` | Yes | — | BMC hostname or IP address |
| `REDFISH_USERNAME` | No | `root` | BMC username |
| `REDFISH_PASSWORD` | Yes | — | BMC password |
| `REDFISH_ALLOW_SELF_SIGNED` | No | `true` | Accept self-signed TLS certificates (normal for BMCs) |

Authentication uses Redfish session tokens by default (POST to SessionService, stores X-Auth-Token). Falls back to HTTP Basic auth if session creation fails.

## Usage with Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "redfish": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-redfish/dist/index.js"],
      "env": {
        "REDFISH_HOST": "192.168.1.100",
        "REDFISH_USERNAME": "root",
        "REDFISH_PASSWORD": "your-bmc-password"
      }
    }
  }
}
```

## Usage with Claude Code

```bash
claude mcp add redfish -- node /absolute/path/to/mcp-redfish/dist/index.js
```

Set the required environment variables in your MCP settings.

## Example Prompts

Once connected, you can ask your AI assistant things like:

- *"What is the current power state and health of all systems?"*
- *"Show me all temperature sensors and flag any that are above normal thresholds"*
- *"What firmware versions are installed and which components can be updated?"*
- *"Check the system event log for any critical errors in the last 24 hours"*
- *"List all drives including their capacity, type (SSD/HDD), and health"*
- *"What is the current power consumption in watts?"*
- *"Show me the BMC network protocol settings — is IPMI enabled?"*
- *"Gracefully restart this server"*
- *"Clear the system event log"*
- *"What is the BIOS version and current boot order?"*

## Development

```bash
npm run dev      # Run with tsx (no build required)
npm run build    # Compile TypeScript to dist/
npm start        # Run compiled output
```

## Architecture

```
src/
├── index.ts              # Entry point — creates MCP server + STDIO transport
├── redfish-client.ts     # HTTP client with session/basic auth and @odata.id expansion
└── tools/
    ├── systems.ts        # Computer system management (4 tools)
    ├── chassis.ts        # Chassis, thermal, and power (4 tools)
    ├── managers.ts       # BMC manager management (4 tools)
    ├── storage.ts        # Storage controllers and drives (2 tools)
    ├── eventlog.ts       # Event log read and clear (2 tools)
    └── firmware.ts       # Firmware inventory (1 tool)
```

## Requirements

- Node.js 18+
- A DMTF Redfish 1.x compliant BMC (Dell iDRAC, HPE iLO, Lenovo XCC, Supermicro BMC, or any standards-compliant BMC)

## License

SEE LICENSE IN LICENSE

TDQS

A3.9/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a distinct resource and action: systems, chassis, managers, storage, logs, and firmware are all clearly separated. The list_ vs get_ pattern eliminates ambiguity, and actions like set_power_state, reset_manager, and clear_event_log are unique to their resources.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: list_*, get_*, set_*, reset_*, clear_*. This makes the API predictable and easy to navigate for an agent.

Tool Count4/5

17 tools is slightly above the ideal 3-15 range but appropriate for the breadth of Redfish management. The set covers systems, chassis, managers, storage, logs, and firmware without being bloated.

Completeness3/5

The core read and action operations are covered, but there are notable gaps: no BIOS settings update, no firmware update, and no detailed getter for storage drives or controllers. These omissions could require workarounds but do not break the primary monitoring workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues