Skip to main content
Glama

cimc-mcp

MCP server for Cisco CIMC (Integrated Management Controller) — manage standalone C-Series rack servers through the XML API.

Features

16 tools covering full server lifecycle management:

Tool

Description

get_server_summary

Power state, model, serial, CPU/memory counts, operability

get_server_health

Composite health: DIMMs, PSUs, fans, storage, temps, faults

get_sensors

Fan speeds, PSU readings, temperature data

get_inventory

CPUs, DIMMs, PCI cards, NICs, storage controllers

get_faults

Active faults with severity filtering

power_control

Power on/off/cycle/reset/shutdown (confirmation required)

get_storage_summary

RAID controllers, virtual drives, physical disks

get_bios_settings

All BIOS token values

set_bios_setting

Modify BIOS tokens (confirmation required, reboot to apply)

get_network_adapters

NICs, MAC addresses, port details

get_firmware_versions

CIMC, BIOS, storage controller, NIC firmware

get_power_stats

Input voltage, current, consumed power

get_thermal_stats

CPU/memory/ambient temps, fan speeds

get_event_log

System event log entries

set_locator_led

Chassis locator LED on/off

sol_configure

Serial over LAN enable/disable/baud rate

Requirements

  • Node.js 22+

  • macOS with /usr/bin/curl (uses system curl for network routing to BMC interfaces)

  • Network access to CIMC management interface

Setup

git clone https://github.com/schwarztim/cimc-mcp.git
cd cimc-mcp
npm install
npm run build

Environment Variables

cp .env.example .env
# Edit .env with your CIMC credentials

Variable

Default

Description

CIMC_HOST

192.168.88.10

CIMC BMC IP address

CIMC_USERNAME

admin

Login username

CIMC_PASSWORD

(required)

Login password

CIMC_VERIFY_TLS

false

Verify TLS certificates

CIMC_INTERFACE

(none)

Local network interface to bind

Usage

Claude Code

Add to ~/.claude/user-mcps.json:

{
  "mcpServers": {
    "cimc": {
      "command": "node",
      "args": ["/path/to/cimc-mcp/dist/index.js"],
      "env": {
        "CIMC_HOST": "192.168.88.10",
        "CIMC_USERNAME": "admin",
        "CIMC_PASSWORD": "your-password"
      }
    }
  }
}

Standalone

CIMC_HOST=192.168.88.10 CIMC_USERNAME=admin CIMC_PASSWORD=changeme npm start

How It Works

All communication goes through the CIMC XML API — a single POST endpoint at https://{host}/nuova. The server:

  1. Authenticates via aaaLogin to get a session cookie (600s TTL)

  2. Caches and auto-refreshes the session before expiry

  3. Serializes all requests to avoid overloading the resource-constrained BMC

  4. Parses XML responses and normalizes single-item/array inconsistencies

macOS Network Note

CIMC BMCs are typically on isolated management networks reachable via a dedicated interface. On macOS, only system binaries (/usr/bin/curl) have the network entitlements to route across interfaces. This server uses system curl as its HTTP transport instead of Node.js https for this reason.

Compatibility

Tested on:

  • Cisco UCS C220 M4 (CIMC 2.0(10l))

Should work with any standalone C-Series server running CIMC 2.x or later. UCS Manager-managed servers use a different API and are not supported.

Development

npm run dev          # Run with tsx (hot reload)
npm test             # Run tests
npm run build        # Compile TypeScript

License

MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/schwarztim/cimc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server