Skip to main content
Glama
Redfish MCP Server

Redfish MCP Server

by carlosedp

Redfish MCP Server

A Model Context Protocol (MCP) server that enables AI agents and LLMs to control Redfish-enabled hardware and simulators through a secure API. Built with FastMCP for enhanced development experience and structured output.

Features

This MCP server provides tools for:

  • Power Operations: Control system power states (On, Off, Restart, etc.)

  • System Inventory: Get detailed hardware information and specifications

  • Event Logs: Retrieve and manage system event logs (System, Security, Manager)

  • Health Monitoring: Monitor system health, status, and sensor readings

  • User Account Management: Manage BMC user accounts and permissions

  • Sensor Monitoring: Read temperature, fan, power, and voltage sensors

  • Configuration Management: Check connection status and auto-configure from environment

Related MCP server: Redfish MCP Server

Architecture

  • FastMCP Framework: Built with FastMCP for better development experience

  • Structured Output: Uses Pydantic models for type-safe, structured responses

  • Environment Configuration: Auto-configures from environment variables

  • Secure Authentication: Username/password authentication with configurable SSL

  • Development Tools: Compatible with mcp dev mode and MCP inspector

Security

All communications with Redfish endpoints are authenticated using username/password credentials. SSL verification can be configured (disabled by default for self-signed certificates common in BMCs).

Installation

This project uses uv for dependency management:

# Install development dependencies
uv sync

Usage

The simplest way to configure the Redfish MCP server is using environment variables. The server will automatically connect on startup if these are provided:

export REDFISH_HOST="https://192.168.1.100"
export REDFISH_USERNAME="admin"
export REDFISH_PASSWORD="password123"
export REDFISH_VERIFY_SSL="false"  # Optional, defaults to false
export REDFISH_TIMEOUT="30"        # Optional, defaults to 30 seconds

MCP Client Configuration

Configure the server in your MCP client with environment variables:

Claude Desktop

Add to ~/.config/claude-desktop/claude_desktop_config.json:

{
  "mcpServers": {
    "redfish": {
      "command": "uv",
      "args": ["run", "redfish-mcp-server"],
      "cwd": "/path/to/your/redfish-mcp-server",
      "env": {
        "REDFISH_HOST": "https://192.168.1.100",
        "REDFISH_USERNAME": "admin",
        "REDFISH_PASSWORD": "password123",
        "REDFISH_VERIFY_SSL": "false"
      }
    }
  }
}

LM Studio

Add to your LM Studio configuration (mcp.json):

{
  "mcpServers": {
      "redfish": {
        "command": "uv",
        "args": [
          "--directory",
          "C:\\Users\\MyUser\\repos\\redfish-mcp-server",
          "run",
          "mcp",
          "run",
          "main.py"
        ],
        "env": {
          "REDFISH_HOST": "http://localhost:8000",
          "REDFISH_USERNAME": "admin",
          "REDFISH_PASSWORD": "password123"
        }
    }
  }
}

If developing under Windows with WSL2 where the server is running in WSL, you may need to set the REDFISH_HOST to the WSL IP address or use localhost if accessing from Windows:

{
  "mcpServers": {
      "redfish": {
        "command": "bash",
        "args": [
          "-c",
          "REDFISH_HOST=http://localhost:8000 REDFISH_USERNAME=admin REDFISH_PASSWORD=password123 /home/carlosedp/.local/bin/uv --directory /home/carlosedp/repos/redfish-mcp-server run mcp run main.py"
        ]
      }
  }
}

Manual Configuration

If you prefer not to use environment variables, you can use the tools to configure the connection:

  1. Use the redfish_get_config_status tool to check current configuration status

  2. Use the redfish_configure tool to set up connection parameters manually:

    • Host URL (e.g., https://192.168.1.100)

    • Username and password for BMC authentication

    • SSL verification settings

  3. Use the available tools to interact with your Redfish-enabled hardware:

Available Tools

  • redfish_get_config_status - Check current configuration status and connection

  • redfish_configure - Configure connection to Redfish endpoint (if not using env vars)

  • redfish_get_system_info - Get system information and inventory

  • redfish_power_control - Control system power state

  • redfish_get_event_logs - Retrieve system event logs

  • redfish_get_health_status - Get system health and status

  • redfish_manage_users - Manage user accounts

  • redfish_get_sensors - Get sensor readings

  • redfish_clear_logs - Clear system event logs

Example Usage

# Check current configuration status
await redfish_get_config_status({})

# If not configured via environment variables, configure manually
await redfish_configure({
    "host": "https://192.168.1.100",
    "username": "admin", 
    "password": "password123",
    "verify_ssl": false
})

# Get system information
await redfish_get_system_info({})

# Power on the system
await redfish_power_control({
    "action": "On"
})

# Check system health
await redfish_get_health_status({})

Development

FastMCP Development Features

This server is built with FastMCP, providing enhanced development experience:

  • Development Mode: Use mcp dev for hot reloading during development

  • MCP Inspector: Compatible with MCP inspector for debugging and testing

  • Structured Output: All responses use Pydantic models for type safety

  • Auto-generated Schemas: Tools automatically generate JSON schemas from type hints

Running the Server for Development

# Set environment variables for automatic configuration
export REDFISH_HOST="https://192.168.1.100"
export REDFISH_USERNAME="admin"
export REDFISH_PASSWORD="password123"
export REDFISH_VERIFY_SSL="false"

# Run in development mode with the inspector
uv run mcp dev main.py

The server requires a Redfish hardware or simulator to connect to. Ensure the Redfish endpoint is accessible and the credentials are correct.

You can use Redfish-Mockup-Server for testing with simulated Redfish endpoints. Get the mockup data from the DMTF Redfish Mockup bundle.

Unpack them, install dependencies and run the mockup server:

# Create a venv and install dependencies
python -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`
pip install -r requirements.txt

# Run the mockup server
python redfishMockupServer.py --short-form -D public-rackmount1`

Available Tools

15 tools
redfish_clear_logsC

Clear system event logs

Inputs: log_type.

redfish_configureC

Configure Redfish connection parameters and test the connection

Inputs: host (required), password (required), username (required), verify_ssl.

redfish_get_audit_logsC

Get comprehensive audit logs for security and compliance monitoring

Inputs: limit, log_type.

redfish_get_chassis_infoB

Get chassis information and inventory

Inputs: no named parameters.

redfish_get_config_statusB

Get current Redfish configuration status

Inputs: no named parameters.

redfish_get_firmware_inventoryC

Get firmware inventory information for systems

Inputs: system_id.

redfish_get_health_statusA

Get system health and status information for a specific system or all systems

Inputs: system_id.

redfish_get_manager_infoB

Get manager information and inventory

Inputs: no named parameters.

redfish_get_manager_logsC

Retrieve manager event logs

Inputs: manager_id (required), limit.

redfish_get_power_consumptionC

Get power consumption and efficiency metrics for systems

Inputs: system_id.

redfish_get_security_statusB

Get security status and compliance information

Inputs: no named parameters.

redfish_get_sensorsC

Get sensor readings for a specific system

Inputs: system_id (required), sensor_type.

redfish_get_system_infoB

Get system information and inventory

Inputs: no named parameters.

redfish_manage_usersD

Manage user accounts on the Redfish system

Inputs: action (required).

redfish_power_controlD

Control system power state

Inputs: action (required), system_id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 15 tools

    Disambiguation4/5

    Most tools target distinct Redfish resources (manager, system, chassis, sensors, firmware, power, logs, security, configuration). Minor overlap exists between health status and sensor readings, and between manager/audit logs, but descriptions clarify the intent.

    Naming Consistency3/5

    Tools share a redfish_ prefix, and most read operations use get_*. However, action tools vary: power_control (noun-verb), manage_users, clear_logs, and configure (bare verb), creating an inconsistent verb-noun pattern.

    Tool Count5/5

    15 tools is a well-scoped set for a Redfish management server, covering inventory, health, power, logs, security, and configuration without feeling excessive.

    Completeness4/5

    The tool set covers the core Redfish lifecycle: inventory retrieval, power control, health/sensor monitoring, logs, user management, and configuration. Some gaps exist (e.g., firmware updates, network/storage inventory, BIOS settings), but these are not critical for basic monitoring and control.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers