Ome Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ome Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
| 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 |
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 ServersNo connections are made directly to iDRAC — OME handles that internally.
https://192.168.1.145 (OME appliance)cd ome-mcp
cp .env.example .env
nano .env # Set OME_USER, OME_PASSWORDNever commit .env to version control.
docker compose up -dThe MCP endpoint will be available at http://<host>:8000/mcp.
./service_control.sh build./service_control.sh startThe MCP endpoint will be available at http://<host>:8000/mcp.
./service_control.sh status
./service_control.sh logs 50# 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 -fTo remove the systemd unit:
sudo ./service_control.sh uninstall-systemd| 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.
Point any MCP-compatible client at:
http://<host_ip>:8000/mcpExample 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)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 pagePass standard OData $filter expressions via the filter parameter:
"Model eq 'PowerEdge R640'"
"Severity eq 'Critical'"
"LastRunStatus/Name eq 'Failed'"
"StatusType eq 'New'".env (owner-read-only, not version-controlled).mcpuser, UID 1000) inside the container.OME_VERIFY_SSL=true and use a valid TLS certificate on OME.with TLS in front of it if external exposure is required.
Container won't start:
./service_control.sh logsAuthentication errors:
OME_USER / OME_PASSWORD in .envcurl -k https://192.168.1.145/api/SessionService/SessionsSSL errors:
OME_VERIFY_SSL=false for self-signed certs./service_control.sh restartTools return empty results:
ome_create_discovery_jobInput model in ome_mcp_server.py@mcp.tool(name="ome_your_tool")_ome_get / _ome_post as appropriate./service_control.sh rebuild && ./service_control.sh restartMIT License — see LICENSE file.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.