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.
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
- 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 devmode and MCP inspector
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).
This project uses uv for dependency management:
# Install development dependencies
uv syncThe 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 secondsConfigure the server in your MCP client with environment variables:
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"
}
}
}
}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"
]
}
}
}If you prefer not to use environment variables, you can use the tools to configure the connection:
-
Use the
redfish_get_config_statustool to check current configuration status -
Use the
redfish_configuretool to set up connection parameters manually:- Host URL (e.g.,
https://192.168.1.100) - Username and password for BMC authentication
- SSL verification settings
- Host URL (e.g.,
-
Use the available tools to interact with your Redfish-enabled hardware:
redfish_get_config_status- Check current configuration status and connectionredfish_configure- Configure connection to Redfish endpoint (if not using env vars)redfish_get_system_info- Get system information and inventoryredfish_power_control- Control system power stateredfish_get_event_logs- Retrieve system event logsredfish_get_health_status- Get system health and statusredfish_manage_users- Manage user accountsredfish_get_sensors- Get sensor readingsredfish_clear_logs- Clear system event logs
# 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({})This server is built with FastMCP, providing enhanced development experience:
- Development Mode: Use
mcp devfor 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
# 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.pyThe 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`