eNSP Automation MCP
README.md
# eNSP Automation MCP
一个面向 eNSP 拓扑生成、VRP 配置下发和实验验收的 MCP 服务。
它能帮 agent 生成网络拓扑、输出华为 VRP 配置、批量下发配置,并给出验收命令和调试案例。定位很明确:**把 eNSP 里重复搭拓扑、重复写配置、重复整理验证命令这部分省下来。**
> 这不是华为官方工具,也不是 eNSP 官方插件。它是一个基于 `.topo` 工程生成 + Telnet/Console CLI 自动化的开源 MCP 项目。
## 现在能跑到什么程度
目前内置了两种校园网示例模板。它们不是万能模板,只是相对完整的起点:有分区、有路由、有出口、有服务、有安全策略,拿来做实验、录演示、整理验证证据都比较方便。
`showcase` 是默认模板,设备和连线更多,适合录屏展示和做一张看起来完整的拓扑图。它大概长这样:
- 6 个 VLAN:教师、学生、实验室、服务器、管理、访客。
- 30 多台设备,40 多条线,看起来像一个完整校园网,而不是两台交换机随便连一下。
- 接入口走 Access,交换机之间走 Trunk。
- 跨 VLAN 通信用 AR 子接口做。
- 路由部分用 OSPF area 0,出口再配一条默认路由。
- DHCP 地址池放在核心路由侧。
- DNS、Web、FTP 这三类服务会把地址和测试步骤写清楚。
- 出口有 NAT/PAT。
- ACL 做了两条比较典型的限制:
- 学生区不能访问管理区。
- 访客区不能访问校园内网,但能访问模拟外网。
- 生成验收用的命令、测试点和一个调试案例,方便后面截图写报告。
`standard` 是精简模板,保留关键网络功能,但设备数量和连线少很多,更适合答辩讲解、课堂演示和快速验证:
- 13 台设备,12 条线。
- 6 个 VLAN:教师、学生、实验室、服务器、管理、访客。
- 1 台 ISP 路由器、1 台出口路由器、1 台核心交换机、1 台接入交换机。
- DNS、Web、FTP 三台服务器和 5 类测试终端。
- 出口路由器负责跨 VLAN 网关、DHCP、静态默认路由、NAT/PAT 和 ACL。
## 重要限制
eNSP 和 Packet Tracer 不一样,没有稳定公开的 `addDevice/addLink` 画布控制接口。所以本项目采用更稳的路线:
1. 生成 `.topo` 拓扑工程。
2. 在 eNSP 里打开拓扑并启动设备。
3. MCP 扫描 eNSP 暴露的 Telnet/Console 端口。
4. MCP 批量下发 VRP 配置并保存。
有些 eNSP 版本不会稳定加载生成工程里的 `vrpcfg.zip`。如果打开设备还是 `<Huawei>`,不是项目失效,直接使用批量下发配置工具即可。
PC / Server 的 IP 和 DNS/Web/FTP 图形服务也不一定能由 `.topo` 稳定恢复,报告验收前建议手动确认。
## 快速安装
```powershell
git clone https://github.com/<your-name>/ensp-automation-mcp.git
cd ensp-automation-mcp
pip install -e . --no-deps --no-build-isolation
```
如果你本机已经能正常安装 MCP 依赖,也可以直接:
```powershell
pip install -e .
```
## MCP 客户端配置
通用 MCP JSON 配置示例:
```json
{
"mcpServers": {
"ensp-automation-mcp": {
"command": "ensp-automation-mcp",
"args": []
}
}
}
```
Codex 风格 TOML 配置示例:
```toml
[mcp_servers.ensp-automation-mcp]
command = "ensp-automation-mcp"
args = []
```
配置好后重启你的 agent / MCP 客户端。
## 工具列表
| 工具 | 用途 |
| --- | --- |
| `ensp_getCampusPlan` | 查看内置校园网方案 |
| `ensp_generateCampusProject` | 生成 `.topo`、配置、服务步骤、测试计划 |
| `ensp_generateCampusConfigs` | 输出所有 VRP 配置 |
| `ensp_getVerificationPlan` | 输出验收命令、业务测试、调试案例 |
| `ensp_scanTelnetPorts` | 扫描 eNSP 设备 Telnet/Console 端口 |
| `ensp_telnetConnect` | 连接单台 eNSP 设备 |
| `ensp_telnetExecute` | 在单台设备执行命令 |
| `ensp_telnetApplyConfig` | 给单台设备批量下发配置 |
| `ensp_applyCampusConfigsByPortRange` | 按默认端口映射一键下发整套校园网配置 |
| `ensp_saveCampusConfigsByPortRange` | 按默认端口映射一键保存整套校园网配置 |
| `ensp_telnetListSessions` | 查看当前 Telnet 会话 |
| `ensp_telnetDisconnect` | 断开 Telnet 会话 |
## 推荐使用流程
1. 调用 `ensp_generateCampusProject` 生成工程。默认是 `showcase`,需要精简版就传 `template: "standard"`。
2. 在 eNSP 中打开生成的 `.topo`。
3. 启动设备,建议分批启动:先路由器,再核心/汇聚交换机,再接入交换机,最后 PC/Server。
4. 调用 `ensp_scanTelnetPorts`,确认端口在线。
5. 调用 `ensp_applyCampusConfigsByPortRange` 批量下发配置。
6. 调用 `ensp_saveCampusConfigsByPortRange` 保存设备配置。
7. 调用 `ensp_getVerificationPlan`,按命令截图验收。
默认端口映射从 2000 开始:
```text
showcase:
AR-ISP 2000
AR-EDGE 2001
AR-CORE-A 2002
AR-CORE-B 2003
LSW-CORE1 2004
...
LSW-IOT-ACC 2019
standard:
AR-ISP 2000
AR-EDGE 2001
LSW-CORE 2002
LSW-ACCESS 2003
```
## 服务器手动服务项
如果 eNSP Server 图形服务没有自动恢复,请手动设置:
```text
SRV-DNS
IP: 192.168.40.10/24
Gateway: 192.168.40.1
DNS: On
www.campus.local -> 192.168.40.20
ftp.campus.local -> 192.168.40.30
SRV-WEB
IP: 192.168.40.20/24
Gateway: 192.168.40.1
HTTP: On
SRV-FTP
IP: 192.168.40.30/24
Gateway: 192.168.40.1
FTP: On
User: ftpuser / cisco
```
## 什么情况下适合用
如果你是在做这些事,这个项目会比较顺手:
- eNSP 网络实验,不想从零拖设备、写重复配置。
- 网络工程演示,需要一套看起来完整、配置也说得通的拓扑。
- 想让支持 MCP 的 agent 帮你生成拓扑、下发配置、列验收命令。
- 想研究 eNSP 工程文件和 VRP 配置自动化。
## 先说清楚哪些事它做不了
- 它不是用来管真实生产网络的。
- 它不是华为官方工具,eNSP 版本差异导致的问题只能尽量兼容。
- 它不能绕开 eNSP 自己的限制,比如 Server 图形服务有时还是要手动点。
- 它也不是“打开拓扑就百分百全自动恢复配置”。如果设备还是 `<Huawei>`,就走 Telnet 批量下发配置。
## 开发
```powershell
python -m py_compile (Get-ChildItem -Path .\src\ensp_automation_mcp -Filter *.py | ForEach-Object { $_.FullName })
python -c "from ensp_automation_mcp.tools import TOOLS; print(len(TOOLS)); print([t['name'] for t in TOOLS])"
```
## 许可证
MIT License. See [LICENSE](LICENSE).
TDQS
B3.2/5.0
Scored across 12 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: project generation, config application, port scanning, telnet session management, etc. No overlapping functionality.
Naming Consistency4/5
All tools start with 'ensp_' and follow a verb_noun pattern with minor inconsistencies like camelCase vs underscores and varying placement of 'telnet'.
Tool Count5/5
12 tools is well-scoped for the eNSP automation domain, covering project generation, config application, and telnet management without being overwhelming.
Completeness4/5
Core workflows (generate, apply, save, connect) are covered. Missing explicit update/delete or advanced verification, but the built-in scenario is well-supported.
Maintenance
ActivityInactive
ResponsivenessNo issues