home / mcp / redfish mcp server

Redfish MCP Server

Provides a Redfish-based MCP server for session management, resource access, and firmware upgrade workflows.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "hankerbiao-redfish-mcp": {
      "command": "uv",
      "args": [
        "run",
        "python",
        "-m",
        "mcp_server"
      ]
    }
  }
}

You manage firmware updates and sessioned access to Redfish-enabled hardware using a lightweight MCP server setup. This guide walks you through practical usage, installation steps, and the core configuration you’ll rely on to automate maintenance tasks.

How to use

You connect to a Redfish endpoint, authenticate via a session, and use the firmware service to upload images, trigger updates, poll tasks, and perform power cycles. The MCP server exposes resource services such as Systems and Firmware and provides a unified client interface to manage sessions, requests, and actions. Use the provided MCP client to upload firmware, start updates, monitor task status, and apply or revert BIOS/BMC configuration as needed.

How to install

Prerequisites: you need Python installed on your system. You will also use the MCP helper toolset to manage dependencies and run the server.

Step 1: Install the MCP runner and dependencies locally.

Step 2: Install runtime dependencies via the MCP management tool.

Step 3: Start the MCP server for Redfish client integration.

Step 4: Configure endpoints and begin interacting with the Redfish services through the MCP client.

Configuration and usage notes

Configure the endpoints that map to the Redfish services you will use. You will define session, firmware inventory, update actions, and targeted firmware entries under an endpoints configuration. The client will select the appropriate endpoint path based on the BMC type you specify.

Example structure for endpoint mapping (shown here for clarity):

{
  "default": {
    "SessionService": "/redfish/v1/SessionService/Sessions",
    "FirmwareInventory": "/redfish/v1/UpdateService/FirmwareInventory",
    "StartUpdate": "/redfish/v1/UpdateService/Actions/UpdateService.StartUpdate",
    "UpdateService": "/redfish/v1/UpdateService",
    "ActiveBIOSTarget": "/redfish/v1/UpdateService/FirmwareInventory/ActiveBIOS",
    "ActiveBMCTarget": "/redfish/v1/UpdateService/FirmwareInventory/ActiveBMC"
  }
}

Examples of common tasks

This guide’s practical workflow demonstrates uploading a firmware image, initiating a simple update, waiting for the update task to complete, and optionally triggering a power cycle. You can adapt these steps to your own firmware packages and target fields.

Note: The client can wait for a task to complete by polling the task URI you receive after starting an update.

Troubleshooting and tips

If you encounter connection or authentication issues, verify your endpoint paths match the BMC type and ensure your SSL verification settings align with your environment. Review logs configured to show detailed request/response data and any error messages to pinpoint misconfigurations in the endpoint mapping or credentials.

Available tools

login

Establish a session with the Redfish service to authenticate requests and obtain an authorization token.

logout

Terminate the session and invalidate the authorization token.

get

Perform a GET request against a mapped Redfish endpoint through the MCP client.

post

Perform a POST request to trigger actions such as firmware updates and system configurations.

delete

Remove resources such as uploaded firmware payloads or placeholder entries when cleaning up.

patch

Apply partial updates to resources, for example changing target BIOS/BMC settings or update service properties.

get_members

List member resources under a given service, such as Systems or FirmwareInventory.

get_member_details

Fetch detailed information about a specific member entry.

upload_image

Upload a firmware image to be used for a subsequent update operation.

simple_update

Trigger a firmware update against a specified target and receive a task URI for monitoring.

wait_for_task_completion

Poll the provided task URI until the update task finishes and report the final status.

power_cycle

Initiate a Power Cycle operation on the target hardware if supported by the platform.