mcp-omada
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OMADA_PASS | No | Legacy local-user login password | |
| OMADA_USER | No | Legacy local-user login username | |
| OMADA_SITE_ID | No | Site to operate on; auto-selected if the controller manages exactly one site (legacy auth only) | |
| OMADA_TIMEOUT | No | HTTP request timeout, in seconds | 15 |
| OMADA_BASE_URL | Yes | Controller base URL, e.g. https://192.168.1.2:8043 | |
| OMADA_CLIENT_ID | No | Open API client ID | |
| OMADA_LOG_LEVEL | No | Log level for the server process (stderr) | INFO |
| OMADA_OMADAC_ID | No | Controller ID; auto-discovered via GET /api/info if unset | |
| OMADA_VERIFY_TLS | No | Verify the controller's TLS certificate | false |
| OMADA_CLIENT_SECRET | No | Open API client secret |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_controller_infoA | Get the Omada controller's own identity: controller_version, omadac_id, configured. Unauthenticated (GET /api/info) - works regardless of which auth mode this server is configured with. |
| list_sitesA | List sites managed by this controller: id + name. Requires legacy login (OMADA_USER/OMADA_PASS) - see README's auth x endpoint matrix for why the Open API path can't serve this in v0.1. |
| list_devicesA | List devices on a site, normalized to one consistent shape regardless of auth mode (see formatting.normalize_device): connected, uptime_seconds, per-radio wifi_2g/wifi_5g channel info, and every raw field this package knows how to normalize - fields unavailable in the active auth mode are present as null rather than omitted, so a caller never has to branch on auth mode.
|
| get_device_detailA | Get the richest available detail for one device by MAC address (any common separator - colon, hyphen, Cisco-dotted, or bare - is accepted and normalized). Legacy auth: full detail (ssidOverrides, lanPortSettings, ledSetting, ...) for AP/EAP devices via /eaps/{MAC}; other device types fall back to their grid/devices summary row (no richer verified endpoint yet - see README). Open API auth: the matching (reduced-field) row from the device list. The normalized fields (see list_devices) are included, plus the
complete raw response under |
| get_wifi_summaryA | Per-AP WiFi summary: 2.4GHz/5GHz channel (parsed from the
controller's irregularly-formatted actualChannel string), client
counts per band, and radio utilization. One entry per AP on the
site, or just the one matching Requires legacy login (OMADA_USER/OMADA_PASS) - the Open API device list has no per-radio fields at all (confirmed against real hardware; see README's auth x endpoint matrix). |
| get_clientsA | List Insight/known clients on a site: mac, name, download/upload (bytes), duration_seconds, last_seen_ms, guest/wireless flags, vid (VLAN), and block/manager flags. This is the controller's "Insight" view (historical + known clients), not just currently-associated ones. Requires legacy login (OMADA_USER/OMADA_PASS) - no Open API equivalent has been verified against real hardware yet. |
| get_alertsA | List active alerts on a site. The pagination envelope is confirmed against real hardware; the
shape of an individual alert row is NOT (no alert was active during
verification) - each entry includes a best-effort module/level/
content/time guess AND the untouched Requires legacy login (OMADA_USER/OMADA_PASS) - no Open API equivalent has been verified against real hardware yet. |
| set_radio_channelA | Set an AP's 2.4GHz ("2g") or 5GHz ("5g") radio channel. WRITE tool, guarded: blocked entirely unless the server is running with OMADA_ALLOW_WRITE=true. Call with confirm=False (the default) to get a before/after preview (channel + freq) without changing anything; call again with confirm=True to actually apply it.
Legacy auth only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools have clearly distinct purposes (list vs detail vs summary vs info), and get_clients/get_alerts are unambiguous. However list_devices and get_wifi_summary overlap on per-AP channel/radio data, so an agent could reasonably confuse them for WiFi-channel queries.
All tool names use consistent snake_case verb_noun patterns: list_sites, list_devices, get_device_detail, get_wifi_summary, get_controller_info, get_clients, get_alerts, set_radio_channel. The verbs list/get/set are applied predictably.
Eight tools is a well-scoped size for an Omada controller server: it covers sites, devices, clients, alerts, controller info, WiFi summaries, and one guarded write without feeling bloated or thin. Each tool maps to a distinct data need.
The read surface covers common monitoring needs but lacks broader management operations: no SSID/VLAN configuration, no client block/unblock, no device reboot, and no update/delete beyond a single radio-channel write. Notable gaps remain for a server named mcp-omada.