Redfish MCP Server for AI-Driven Infrastructure Management
Manage Redfish-enabled infrastructure with an AI-driven MCP server using natural language to run agentic workflows and access structured and unstructured data.
npx -y @nokia/mcp-redfishOverview
The Redfish MCP Server exposes infrastructure data over the Model Content Protocol (MCP) so AI agents and developer tools can interact with Redfish-enabled systems using natural language. It acts as a bridge between MCP clients (agentic or programmatic) and one or more Redfish endpoints, wrapping the Python Redfish library and translating agent requests into structured Redfish queries and responses.
This server is useful when you want to build AI-driven operational workflows (inventory, health checks, configuration queries, automation) that need structured access to servers, chassis, managers, and network interfaces without writing custom Redfish glue code. By integrating with MCP, the server lets agents request information with plain-language prompts while preserving the underlying Redfish structure for deterministic actions.
Features
- Natural-language driven access to Redfish resources via MCP clients
- Native MCP transport support (stdio, SSE, streamable-http)
- Full Redfish coverage through the underlying python-redfish-library
- Multi-host configuration: manage many Redfish endpoints from one MCP server
- Per-host credentials and TLS settings
- Discovery support to keep endpoint lists up-to-date
- Logging and configuration validation at startup
Installation / Configuration
Get the source and install dependencies:
# Clone the repo
# Install (recommended) or install dev deps
# or for development
Run the server (common options):
# Run via console script (recommended)
# or use the Makefile shortcut
# As a module (useful for CI / development)
Configuration is done with environment variables. The primary variable is REDFISH_HOSTS (JSON array). Example .env:
# .env
REDFISH_HOSTS='[
{"address":"192.168.1.100","username":"admin","password":"secret"},
{"address":"192.168.1.101","port":8443}
]'
REDFISH_AUTH_METHOD=session
REDFISH_PORT=443
MCP_TRANSPORT=stdio
MCP_REDFISH_LOG_LEVEL=INFO
You can also export variables in your shell:
Environment variables (summary):
| Name | Purpose / Notes | Default |
|---|---|---|
| REDFISH_HOSTS | JSON array of endpoints (per-host address, port, creds) | required |
| REDFISH_PORT | Default port if not set per-host | 443 |
| REDFISH_AUTH_METHOD | basic or session | session |
| REDFISH_USERNAME | Default username | “” |
| REDFISH_PASSWORD | Default password | “” |
| REDFISH_SERVER_CA_CERT | Path to CA cert for TLS verification | none |
| REDFISH_DISCOVERY_ENABLED | Enable periodic discovery of endpoints | false |
| REDFISH_DISCOVERY_INTERVAL | Discovery interval in seconds | 30 |
| MCP_TRANSPORT | MCP transport: stdio, sse, streamable-http | stdio |
| MCP_REDFISH_LOG_LEVEL | Logging level | INFO |
Configuration validation performed at startup:
- REDFISH_HOSTS must be valid JSON
- Each host entry must include an address
- Ports must be in the valid TCP range (1–65535)
- TLS file paths and credentials are checked where applicable
Available Tools / Resources
The MCP server exposes a small set of tools (MCP actions) for clients to call:
list_endpoints
- Returns the configured and discovered Redfish endpoints and basic metadata.
- Example response (truncated):
get_resource_data
- Fetches the JSON payload for a specific Redfish resource (System, Manager, EthernetInterface, etc).
- Request example (MCP payload):
- Response: raw Redfish JSON object for that resource.
Developer resources:
- Repository: https://github.com/nokia/mcp-redfish
- Underlying library: python-redfish-library (DMTF)
Use Cases
- Inventory and topology
- Prompt: “List the available infrastructure components.”
- What happens: An MCP client calls list_endpoints, then enumerates Systems and Chassis on reachable hosts and returns a structured list of component types, IDs, and links.
- Interface diagnostics
- Prompt: “Get the ethernet interfaces of System X and show IP and MAC.”
- What happens: The client resolves System X to a host and resource path, calls get_resource_data for each EthernetInterface, and extracts Address and MACAddress fields for a concise report.
- Health monitoring for automation agents
- Scenario: An AI agent periodically asks for health summaries across all managers and chassis.
- What happens: The agent uses list_endpoints to find reachable hosts, requests Redfish health properties (e.g., Health, Status) via get_resource_data, and generates alerts or remediation steps if needed.
- Interactive troubleshooting
- Developer flow: Use the server over stdio or SSE from an agent framework to issue natural language questions and receive structured Redfish results without hand-coding each API call.
Notes for Developers
- Treat REDFISH_HOSTS as the single source of truth for endpoints; discovery can augment but not replace deliberate configuration.
- Use the MCP transport appropriate for your agent environment (stdio for local testing, SSE or streamable-http for browser/remote integrations).
- The server returns raw Redfish JSON for deterministic automation; natural-language wrappers should interpret and summarize those payloads for human-readable output.
For additional examples and advanced configuration, see the examples and docs in the repository: https://github.com/nokia/mcp-redfish.