Skip to main content
Glama
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