OME MCP Server
Enables AI agents to manage Dell PowerEdge servers via Dell OpenManage Enterprise (OME) REST API, providing tools for device inventory, power control, firmware updates, alert management, and compliance baselines.
README
OME MCP v5 — Dell OpenManage Enterprise MCP Server
Version 5.2 | Changelog
A Model Context Protocol (MCP) server that exposes Dell OpenManage Enterprise (OME) management capabilities to AI agents via a Streaming HTTP transport. No direct iDRAC connections are made — all data flows through OME's REST API.
Features
| Tool | Description |
|---|---|
ome_list_devices |
List all managed devices with OData filter + pagination |
ome_get_device |
Full detail for one device by ID |
ome_get_device_inventory |
Hardware inventory (CPU/RAM/NIC/HDD/PSU) |
ome_get_device_subsystem_health |
Per-subsystem health status |
ome_get_device_network_adapters |
NIC/port details |
ome_device_power_action |
PowerOn/Off/Restart/Cycle via OME |
ome_list_groups |
List device groups |
ome_get_group_devices |
Devices in a specific group |
ome_list_alerts |
Alerts with severity/status filter |
ome_acknowledge_alerts |
Acknowledge one or more alerts |
ome_list_jobs |
List jobs with filter |
ome_get_job |
Job detail and status |
ome_run_job_now |
Trigger an existing job immediately |
ome_get_job_execution_history |
Job run history |
ome_list_discovery_jobs |
Discovery configuration groups |
ome_create_discovery_job |
Create & start a discovery scan |
ome_list_firmware_catalogs |
Firmware update catalogs |
ome_list_firmware_baselines |
Firmware compliance baselines |
ome_get_firmware_baseline_compliance |
Per-component compliance report |
ome_list_templates |
Configuration/deployment templates |
ome_get_template |
Template details |
ome_list_config_baselines |
Configuration compliance baselines |
ome_get_config_baseline_compliance |
Per-device config compliance |
ome_get_system_info |
OME version, license, health |
ome_list_active_sessions |
Active OME API sessions |
ome_get_audit_logs |
OME audit trail |
ome_get_warranty_info |
Device warranty records |
ome_refresh_device_inventory |
Trigger OME inventory refresh |
Architecture
AI Agent / MCP Client
│
│ HTTP POST /mcp (Streaming HTTP transport)
▼
┌─────────────────────┐
│ ome_mcp_v5 │ Docker container (Ubuntu/Python 3.11)
│ FastMCP server │
│ port 8000 │
└────────┬────────────┘
│ HTTPS REST API calls
▼
┌─────────────────────┐
│ OME Appliance │ https://192.168.1.145/api
│ (192.168.1.145) │
└────────┬────────────┘
│ OME manages iDRAC internally
▼
Dell PowerEdge Servers
No connections are made directly to iDRAC — OME handles that internally.
Prerequisites
- Docker Engine 24+ and Docker Compose v2 on an Ubuntu host
- Network access from the host to
https://192.168.1.145(OME appliance) - OME admin credentials
Quick Start
1. Clone / copy project files
mkdir -p /opt/ome_mcp_v5
cd /opt/ome_mcp_v5
# Place all project files here
2. Configure credentials
cp .env.example .env
nano .env # Set OME_USER, OME_PASSWORD
Never commit .env to version control.
3. Build the image
./service_control.sh build
4. Start the server
./service_control.sh start
The MCP endpoint will be available at http://<host>:8000/mcp.
5. Check status
./service_control.sh status
./service_control.sh logs 50
TLS / SSL Toggle
| Scenario | Setting in .env |
|---|---|
| Lab / self-signed cert | OME_VERIFY_SSL=false |
| Production (trusted CA) | OME_VERIFY_SSL=true |
| Production (custom CA bundle) | OME_VERIFY_SSL=/path/to/ca-bundle.crt |
No rebuild is required — just change the env var and restart.
Auto-start with systemd (optional)
# Install systemd unit (auto-updates WorkingDirectory to current path)
sudo ./service_control.sh install-systemd
# Start now
sudo systemctl start ome_mcp_v5
# View logs
sudo journalctl -u ome_mcp_v5 -f
To remove the systemd unit:
sudo ./service_control.sh uninstall-systemd
Connecting an MCP Client
Point any MCP-compatible client at:
http://<host_ip>:8000/mcp
Example with mcp CLI:
mcp call --url http://192.168.1.200:8000/mcp ome_list_devices '{"top":10}'
Example with Python SDK:
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
async with streamablehttp_client("http://192.168.1.200:8000/mcp") as (r, w, _):
async with ClientSession(r, w) as session:
await session.initialize()
result = await session.call_tool("ome_list_devices", {"top": 5})
print(result.content)
Pagination
All list tools accept top (page size, default 50) and skip (offset) parameters.
Use the returned next_skip value to fetch subsequent pages:
{"top": 25, "skip": 0} // first page
{"top": 25, "skip": 25} // second page
OData Filtering
Pass standard OData $filter expressions via the filter parameter:
"Model eq 'PowerEdge R640'"
"Severity eq 'Critical'"
"LastRunStatus/Name eq 'Failed'"
"StatusType eq 'New'"
Security Notes
- Credentials are stored in
.env(owner-read-only, not version-controlled). - The server runs as a non-root user (
mcpuser, UID 1000) inside the container. - Credentials are never logged.
- For production, set
OME_VERIFY_SSL=trueand use a valid TLS certificate on OME. - The MCP endpoint itself is plain HTTP on port 8000; place a reverse proxy (nginx/caddy) with TLS in front of it if external exposure is required.
Troubleshooting
Container won't start:
./service_control.sh logs
Authentication errors:
- Verify
OME_USER/OME_PASSWORDin.env - Confirm OME is reachable:
curl -k https://192.168.1.145/api/SessionService/Sessions
SSL errors:
- Set
OME_VERIFY_SSL=falsefor self-signed certs - Restart after changing:
./service_control.sh restart
Tools return empty results:
- Devices may not be discovered yet — use
ome_create_discovery_job - Check OME permissions for the API account
Adding New Tools
- Add a Pydantic
Inputmodel inome_mcp_v5_server.py - Add a function decorated with
@mcp.tool(name="ome_your_tool") - Call
_ome_get/_ome_postas appropriate - Rebuild:
./service_control.sh rebuild && ./service_control.sh restart
License
MIT License — see LICENSE file.
Changelog
v5.2.0 — 2026-04-09
Fixed: ome_remediate_firmware_baseline completely rewritten
The tool was non-functional in v5.0/v5.1 due to three root-cause bugs:
-
Wrong endpoint — Code used
UpdateService/Actions/UpdateService.UpdateFirmware, which does not exist in OME 4.6+ (UpdateService.Actionsis null). Fixed: now POSTs directly toJobService/Jobs. -
Wrong Targets structure — Old payload used
{"Id": id, "Type": {...}}, missing the requiredDatafield. Fixed:{"Id": id, "Data": "<component_sources>", "TargetType": {"Id": 1000, "Name": "DEVICE"}}whereDatais a semicolon-joined string of componentSourceNamevalues for non-compliant components. -
Incomplete Params — Old params list was missing required keys. Fixed: full validated param set is
repositoryId,catalogId,complianceReportId,operationName,rebootType,signVerify,complianceUpdate,stagingValue.
New execution flow:
GET UpdateService/Baselines({id})→ extractRepositoryId,CatalogIdGET UpdateService/Baselines({id})/DeviceComplianceReports→ per-device, collectSourceNamefor components whereUpdateAction != UNKNOWNandComplianceStatusnot in{OK, UNKNOWN}POST JobService/JobswithoperationName=INSTALL_FIRMWARE,rebootType=2(graceful) or3(stage-only)
Returns an early error if no non-compliant components are found, preventing empty job creation.
Validated by live test: full firmware update of a PowerEdge R6515 (13 components including BIOS, PERC RAID, HDDs, NICs, SSDs) against Dell online catalog baseline.
v5.0.0 — initial release
- 28 read/write OME tools via Streaming HTTP MCP transport
- Docker container with non-root user, systemd unit, health check
- OData filtering and pagination on all list tools
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。