MCP server for Cisco Catalyst 9800 WLC (RESTCONF, read-only)
Solid foundation with 12 well-named, read-only tools covering Cisco WLC diagnostics. All tools have descriptions (avg 180 chars, within baseline 194). Naming follows verb_noun pattern consistently (list_*, get_*). However, 11 of 12 tools have empty input schemas ({}), violating schema documentation requirements. Only get_client_detail has a proper schema with typed parameter. No output schemas documented. Error handling is minimal, tools return JSON but lack recovery guidance. No tool annotations (readOnlyHint, etc.) despite all being read-only. Descriptions are good but could be more LLM-optimized (e.g., 'When to use' and 'What it returns' sections missing).
Deep-dive on a single wireless client by MAC address: the same RF diagnostics as list_wireless_clients, plus (best-effort) VLAN/QoS/ACL policy info. Returns nothing if no currently-associated client matches the given MAC.
Reports controller-level health: CPU utilization (5s/1min/5min), memory usage, uptime, software version, last reboot reason, joined AP count, radio up/down counts, and misconfigured AP count.
Lists access points joined to the Cisco Catalyst 9800 WLC, including name, MAC, IP, and model.
Lists RRM-observed neighbor relationships between AP radios (which APs hear each other and how strongly). Useful for spotting coverage overlap or coverage holes when planning channel/power.
Lists per-radio RF diagnostics for each access point: band, channel, channel width, TX power level, admin/oper state, channel utilization (CCA %), associated client count, and noise floor on the current channel. Useful for diagnosing coverage/interference issues.
11 of 12 tools have empty input schemas ({}). This violates pattern:constrained-input and pattern:tool-description.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. Violates pattern:tool and mxe:include-chaining-ids.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Lists the Policy/Site/RF tag assignment for each AP. Useful for finding config mismatches, e.g. an AP stuck on the default-policy-tag when it should carry a site-specific tag.
Lists CleanAir-detected non-Wi-Fi interference sources (microwave ovens, Bluetooth, video cameras, jammers, etc.) per AP/channel, with severity, duty cycle and RSSI. Complements list_ap_radios (channel utilization) and list_rogue_aps (Wi-Fi interferers) for RF troubleshooting.
Lists Policy Profiles configured on the WLC (name, VLAN interface) together with the WLAN profiles mapped to them via each Policy Tag — i.e. which SSID lands on which VLAN interface. Note that the mapping is per Policy Tag (assigned per-AP), so the same SSID can in principle resolve to a different Policy Profile depending on which AP/Policy Tag serves it.
Lists rogue access points detected by the WLC, including MAC, SSID, classification and state.
Lists wireless clients currently associated to the WLC, including MAC, connected AP, WLAN, IPv4, and RF diagnostics (channel, band, RSSI, SNR, PHY rate, spatial streams, security mode).
Lists configured WLANs/SSIDs and their profile names on the WLC.
Fallback/debug tool: performs a raw RESTCONF GET against an arbitrary YANG data path on the WLC (e.g. 'Cisco-IOS-XE-wireless-access-point-oper:access-point-oper-data'). Useful when the normalized tools don't expose a needed field or the YANG model differs by IOS-XE version.
No tool annotations despite all tools being read-only. Missing readOnlyHint would help agents understand safety. Violates current spec (2026-07-28) tool annotation requirement.
No pagination support on list_* tools. Descriptions do not mention result limits. If WLC returns 1000+ APs/clients, response will blow context window. Violates pattern:paginated-result and mxe:enforce-result-limits.
Error handling is minimal. No recovery guidance in descriptions. If a tool fails (e.g., WLC unreachable), LLM gets no actionable next step. Violates pattern:recovery-guide.