Skip to main content
Glama

proliant-mcp

An MCP server for HPE ProLiant servers, built with FastMCP. It lets AI assistants and agents (GitHub Copilot, Claude, Google ADK, ...) read server inventory and health straight from each server's iLO through the Redfish API.

Tested against iLO 6 (ProLiant DL380 Gen11) and iLO 7 (ProLiant Compute DL325 / DL345 Gen12). iLO 5 (Gen10) uses the same Redfish paths.

Status: v0.1, iLO, read-only. HPE Compute Ops Management (COM) and OneView are next; see Roadmap.

Tools

Tool

What it returns

list_servers

Configured server names and iLO hosts (never credentials)

get_server_summary

Model, product ID, serial, power and POST state, health, UID, BIOS and iLO version, CPU/memory totals

get_fleet_summary

get_server_summary for all servers in parallel; failures are per server

get_ilo_info

iLO model and firmware version/date, license, COM connection status, iLO IP/MAC/DHCP/DNS

get_health

Overall and per-subsystem health, fan and power-supply redundancy

get_firmware_inventory

Every firmware component and version

get_processors

CPUs and GPUs

get_memory

Total, populated/empty slots, each DIMM

get_storage

Controllers, drives, RAID volumes

get_network_adapters

NICs, ports, MACs, link, LLDP neighbor (switch and port)

get_event_log

Newest IML (hardware) or IEL (iLO) entries, filter by severity

redfish_get

Raw read-only GET of any /redfish/v1/... resource

Every tool is annotated readOnlyHint. Nothing in this version changes a server.

Related MCP server: Redfish MCP Server

Install

Requires Python 3.12+ and uv.

git clone https://github.com/hjma29/proliant-mcp.git
cd proliant-mcp
uv sync

Configure your iLOs

Credentials are read from your machine only, never from this repository.

Option A: inventory file (several servers). Copy examples/inventory.example.ini to ~/.config/proliant-mcp/inventory.ini, fill in hosts and passwords, then chmod 600 it. Or point PROLIANT_MCP_CONFIG at any path. An existing proliant-cli inventory at ~/.config/proliant-cli/inventory.ini is picked up automatically.

Option B: one server from environment variables.

export ILO_HOST=192.0.2.10 ILO_USERNAME=Administrator ILO_PASSWORD='...'
export ILO_NAME=my-server        # optional, default "default"

iLO uses a self-signed certificate by default, so TLS verification is off unless you set verify_ssl = true (ini) or ILO_VERIFY_SSL=1. A read-only iLO account (Login privilege only) is enough for every tool.

Test it

1. Unit tests (no hardware)

uv run pytest

Runs the tools against a fake iLO (httpx.MockTransport) through a real MCP client.

2. From the terminal

uv run fastmcp list src/proliant_mcp/server.py                     # tools and schemas
uv run fastmcp call src/proliant_mcp/server.py list_servers
uv run fastmcp call src/proliant_mcp/server.py get_ilo_info server=dl380-gen11

3. MCP Inspector (web UI)

npx @modelcontextprotocol/inspector uv run --directory "$PWD" proliant-mcp

Open the printed URL, click Connect, then Tools to call each tool by hand.

4. VS Code / GitHub Copilot

Open this folder in VS Code. .vscode/mcp.json registers the server as proliant; start it from the MCP view (or the code lens in that file), switch Copilot Chat to Agent mode, and ask:

  • "List my ProLiant servers and their iLO versions"

  • "Which servers have a GPU?"

  • "Any critical IML events on dl380-gen11?"

  • "Which switch port is each NIC on dl345-gen12 connected to?"

To use it from any workspace, add the same entry to your user MCP config with an absolute path in --directory.

Claude Desktop / Claude Code / other clients use the same command: uv run --directory /path/to/proliant-mcp proliant-mcp.

5. Over HTTP

uv run proliant-mcp --http --host 127.0.0.1 --port 8000   # endpoint: http://127.0.0.1:8000/mcp

The HTTP endpoint has no authentication. Keep it on localhost or a trusted management network.

Google ADK

examples/adk_agent/agent.py is a Google ADK agent that starts this server over stdio with McpToolset:

export GOOGLE_API_KEY=...            # or Vertex AI env vars
uv run --with "google-adk[mcp]" adk web examples   # pick "adk_agent"

Set ADK_MODEL to choose a different Gemini model. To use the HTTP mode instead, swap StdioConnectionParams for StreamableHTTPConnectionParams(url="http://127.0.0.1:8000/mcp").

Skills

skills/proliant-ilo/SKILL.md is an agent skill that tells an assistant which tool to use for which question, plus workflows (fleet firmware audit, health triage, finding a server's switch port). Copy it into your agent's skills folder (for example ~/.copilot/skills/ or .github/skills/).

Roadmap

  1. iLO (now): read-only inventory and health.

  2. iLO actions: power, UID, one-time boot, opt-in and gated as destructive.

  3. HPE Compute Ops Management (GreenLake): fleet inventory, firmware baselines and jobs.

  4. HPE OneView / Synergy.

  5. Skills for deploying and managing ProLiant servers (OS deployment, firmware updates, BIOS baselines).

Security

  • No credentials are stored in this repository; .gitignore blocks *.ini (except the example) and .env files.

  • Tools never return passwords; redfish_get refuses session and account resources.

  • Each tool call opens and closes its own Redfish session.

License

MIT. Not an official HPE product.

Available Tools

12 tools
get_event_logGet Event LogB
Read-onlyIdempotent

Newest entries from the IML or iLO event log, optionally filtered by severity.

Inputs: server (required), log, limit, severity. Returns: result

get_firmware_inventoryGet Firmware InventoryC
Read-onlyIdempotent

All firmware components and versions (iLO, BIOS/System ROM, NICs, storage controllers, drives, CPLD, ...).

Inputs: server (required). Returns: result

get_fleet_summaryGet Fleet SummaryA
Read-onlyIdempotent

get_server_summary for every configured server at once. Unreachable servers are returned with an error field instead of failing the whole call.

Inputs: no named parameters. Returns: result

get_healthGet HealthA
Read-onlyIdempotent

Overall and per-subsystem health (processors, memory, storage, network, fans, power supplies, temperatures) plus fan / power-supply redundancy.

Inputs: server (required). Returns: object

get_ilo_infoGet Ilo InfoB
Read-onlyIdempotent

iLO details: model (iLO 5/6/7), firmware version and date, license, Compute Ops Management connection status, and the iLO's own network (hostname, IP, MAC, DHCP).

Inputs: server (required). Returns: object

get_memoryGet MemoryA
Read-onlyIdempotent

Memory: total GiB, populated/empty slot counts, and each DIMM (slot, size, type, speed, vendor, HPE part number, health).

Inputs: server (required). Returns: object

get_network_adaptersGet Network AdaptersB
Read-onlyIdempotent

Host network adapters: model, part number, slot, firmware, and ports (MAC, link, speed, LLDP neighbor switch/port when available).

Inputs: server (required). Returns: result

get_processorsGet ProcessorsB
Read-onlyIdempotent

CPUs (socket, model, cores, threads, speed) and GPUs that iLO reports.

Inputs: server (required). Returns: object

get_server_summaryGet Server SummaryB
Read-onlyIdempotent

Server identity and state: model, product ID, serial, power and POST state, health, UID light, BIOS and iLO versions, CPU count/model and total memory.

Inputs: server (required). Returns: object

get_storageGet StorageB
Read-onlyIdempotent

Storage subsystems: controllers (model, firmware), physical drives (model, media, capacity, serial, firmware, bay) and logical volumes / RAID.

Inputs: server (required). Returns: result

list_serversList ServersA
Read-onlyIdempotent

List the configured ProLiant servers (name and iLO host). Credentials are never returned.

Inputs: no named parameters. Returns: object

redfish_getRedfish GetA
Read-onlyIdempotent

Raw read-only GET of any iLO Redfish resource, for data the other tools don't cover.

Inputs: path (required), server (required). Returns: object

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 12 tools

    Disambiguation4/5

    Each tool targets a distinct resource or granularity, but get_server_summary overlaps meaningfully with get_health, get_processors, get_memory, and get_firmware_inventory, since it reports power/health state, CPU count, total memory, and BIOS/iLO versions. get_fleet_summary is clearly framed as a bulk variant of get_server_summary, and redfish_get is explicitly positioned as the escape hatch for uncovered data.

    Naming Consistency4/5

    Eleven of the twelve tools follow a clean verb_noun pattern (list_servers, get_ilo_info, get_firmware_inventory, get_event_log, etc.). The lone deviation is redfish_get, which inverts the order to noun_verb, though it remains readable.

    Tool Count5/5

    Twelve tools is well within the ideal range and each is scoped to a distinct slice of iLO data (firmware, memory, storage, network, health, events). Nothing feels padded or missing in terms of breadth.

    Completeness4/5

    Read-only inventory and health coverage is thorough, including a raw Redfish escape hatch for anything not modeled. However, there are no write/action operations (power control, UID light toggle, log clearing) even though power/UID state is reported, and redfish_get is GET-only so agents have no remediation path.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers