eNSP 一站式 MCP —— 拓扑搭建 + 设备配置。A comprehensive MCP server for Huawei eNSP network simulation: topology creation and device configuration.
eNSP MCP has well-structured tool definitions with consistent naming (verb_noun pattern: list_models, topo_create, device_exec) and comprehensive descriptions in Chinese. All 13 tools have input schemas with typed parameters and descriptions. However, output schemas are not explicitly documented in the visible code, responses are JSON strings with ad-hoc structure (ok/error fields). Parameter descriptions are detailed but sometimes verbose (>200 chars). Error handling returns structured JSON with ok/error flags but lacks actionable recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Missing: pagination for list_models, explicit output schema documentation, and per-parameter type constraints (enums for category, view, action).
在设备上跑命令。
从设备拉取配置。
ping 设备或从设备 ping 其它地址。
给设备下发配置文件。
管理 console 连接池。
列出 eNSP 支持的设备型号,以及每种型号的接口清单。 搭拓扑前先调这个,就知道有哪些型号可选、每个型号有几个口、口叫什么名字。 连线时 fromPort / toPort 填的就是这里的接口名。
往拓扑里批量加设备。
Output schemas not documented. Tools return JSON strings with ad-hoc structure (ok/error/payload fields). LLMs cannot predict response structure for downstream chaining.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools marked with Risk levels (READ_ONLY, WRITE) in metadata but not exposed via MCP protocol.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
给拓扑加分区和标注。
批量连线。
新建一个空的 .topo 文件。
把拓扑导成其它格式。
读一份 .topo,返回设备清单、链路清单和每台设备的空闲接口。 每台设备会带上 consolePort,那就是 device_* 工具要用的端口号。
自动摆设备位置。
Parameter 'category' in list_models accepts free-form strings (AR, LSW, WLAN, FW, CLIENT, OTHER) but not declared as enum. LLMs may hallucinate invalid categories.
Parameter 'view' in device_exec accepts 'user' or 'system' but not declared as enum. Parameter 'action' in device_sessions accepts 'close_all' or 'list' but not declared as enum.
Error responses return JSON with ok/error fields but lack actionable recovery guidance. E.g., 'Invalid model' does not suggest calling list_models() first.