mirror of
https://github.com/hansjone/netx.git
synced 2026-10-08 23:33:21 +08:00
Canonical playbooks live under skills/; netx-mcp 0.3.0 exposes queryNmsAlarms et al. with nms_ne_id aliases. Co-authored-by: Cursor <cursoragent@cursor.com>
2.8 KiB
2.8 KiB
| name | description |
|---|---|
| netx-nms | netx NMS playbook (MCP + DSH): vendor NMS adapter (zte-ume) for alarm query/aggregate/diagnostics, NE inventory, raw fields, and read-only SQL. Trigger: NMS alarms, host_name, Critical Top, LOS, BN EMS, netx ops. |
netx-nms (vendor NMS adapter)
Naming (MCP + DSH)
Canonical playbooks live in netx/skills/ (this file is mirrored into MCP packages / dsh-netxops).
Edit the netx repo copy; run sync scripts — do not maintain divergent forks.
| Host | How tools appear |
|---|---|
MCP (netx-mcp) |
Bare names: queryNmsAlarms, … |
DSH (dsh-netxops) |
Prefixed: netx__queryNmsAlarms, … (same camelCase stem) |
REST still /v1/ume/* for provider zte-ume.
Prefer nms_ne_id / nms_ne_ids; legacy ume_* aliases still work.
Path lookup → common skill netx-common (findTopologyPaths).
Canvas → netx-topology(含 dual_unit / 布图;DSH 可把部分布局工具放在实验 tool group)。
Tool names
| Purpose | Tool |
|---|---|
| Alarm list | queryNmsAlarms |
| Alarm aggregate | aggregateNmsAlarms |
| Diagnostics | runNmsDiagnostics |
| NE inventory | queryNmsNeInventory |
| NE detail | getNmsNe |
| Field list | listNmsAlarmFields |
| Raw rows | queryNmsAlarmsRaw |
| Dynamic aggregate | aggregateNmsAlarmsRaw |
| SQL | sqlQueryNms |
| Managed CLI (other skill) | listManagedNe / getManagedNe / execManagedNe / listCliTargets |
Tool order
- Freshness first:
runNmsDiagnosticsoraggregateNmsAlarms→meta.last_seen_min/last_seen_max. - Overview:
aggregateNmsAlarms+runNmsDiagnostics; samples viaqueryNmsAlarms(one page). - Evidence:
listNmsAlarmFields→queryNmsAlarmsRaw(field_preset=evidence). - Custom aggregate:
aggregateNmsAlarmsRaw. - SQL:
sqlQueryNms(SELECT only;statement_timeout_ms). - Paths:
findTopologyPathsvia netx-common. - Device CLI: netx-common — multi-NE = one
execManagedNebatch.
Short-intent recipes
| User says | Recipe |
|---|---|
| fiber cut / LOS / 断纤 | queryNmsAlarmsRaw(keyword=LOS) and/or Fiber Break → host_name list |
| offline / BN EMS | keyword=BN EMS |
| Critical Top | aggregateNmsAlarms(severity=critical, top_ne=20) |
| CRC in area | Raw keyword=CRC + AREA- hostname prefix |
| optical power threshold | keyword=optical power + area — not fiber-cut |
| one hostname | host-scoped queryNmsAlarms / Raw only |
Guardrails
- Prefer non-SQL; filter severity → keyword/host → time → ne_id.
- Lists ≤2 pages;
page_sizedefault 50. - Display host_name only; never bare UUID to users.
getManagedNeneeds managed id; NMS UUID →getNmsNe/execManagedNe(nms_ne_id=...).
See reference.md.