数据包跟踪器MCP服务器
MCP服务器,允许任何LLM(Copilot、Claude等)实时创建、配置、验证和部署完整的网络拓扑到Cisco Packet Tracer。
告诉它“用3个路由器、DHCP和OSPF为我构建一个网络”,服务器就会规划拓扑结构,验证一切,生成脚本和配置,并将其直接部署到PT中。
使用Python 3.11+、Pydantic 2.0+、FastMCP、流式HTTP构建。

特性
- 完整管道 --从单个提示中规划、验证、自动修复、生成和部署拓扑
- 实时部署 --通过HTTP网桥直接向Packet Tracer发送命令,无需复制粘贴
- 22个MCP工具 --涵盖从设备目录查询到实时拓扑操作的所有内容
- 双向CLI --从PT内部的路由器和交换机读回CLI输出
- 自动IP规划 --自动分配/24个局域网和/30个路由器间链路
- 验证+自动修复 --捕获15种错误类型并自动更正电缆、型号和端口
- 多种路由协议 --静态、OSPF、RIP,可生成完整配置
- 9拓扑模板 --单局域网、多局域网、星型、中心辐射、分支机构、路由器等
运作原理
┌─────────┐ ┌──────────────┐ HTTP ┌──────────────┐ $se() ┌──────────────┐
│ LLM │ MCP │ MCP Server │ :54321 │ PTBuilder │ IPC │ Packet Tracer│
│(Copilot)│ ──────► │ (:39000) │ ────────► │ (WebView) │ ─────► │ (Engine) │
└─────────┘ └──────────────┘ └──────────────┘ └──────────────┘两个HTTP服务器同时运行:
| 端口 | 用途 | 目的 |
|---|---|---|
| 39000 | MCP服务器(可流式传输的http) | 接收来自LLM/编辑器的工具请求 |
| 54321 | 内部HTTP桥 | 向数据包跟踪器内的PTBuilder发送JS命令 |
MCP服务器规划拓扑,生成PTBuilder JavaScript+IOS CLI配置,并将其推送到网桥。PTBuilder的QWebEngine网络视图每500毫秒轮询一次网桥,并通过以下方式在PT的脚本引擎中执行命令 $se('runCode', ...).
______________________________________________________________________
设置
1.安装
git clone https://github.com/DavidIlie/packet-tracer-mcp.git
cd packet-tracer-mcp
pip install -e .2.启动服务器
python -m src.packet_tracer_mcp这将启动MCP服务器 0.0.0.0:39000 (局域网可访问)和HTTP网桥 127.0.0.1:54321 自动。
主机选择(按优先级顺序):
--host 127.0.0.1标志--仅限本地主机PT_MCP_HOSTenv 是- 违约:
0.0.0.0(所有接口)
标准模式(调试/传统): python -m src.packet_tracer_mcp --stdio从局域网上的另一台机器连接
默认情况下,服务器绑定到所有接口。要从另一台笔记本电脑访问它:
- 查找您的主机IP(
ipconfig在Windows上,ifconfig在macOS/Linux上)——例如。,10.1.0.7 - 在Windows防火墙上打开端口39000(PowerShell作为管理员):
New-NetFirewallRule -DisplayName "packet-tracer-mcp" -Direction Inbound -LocalPort 39000 -Protocol TCP -Action Allow -Profile Private,Domain- 在远程计算机上,将MCP客户端指向
http://:39000/mcp而不是127.0.0.1.
HTTP网桥(端口54321)仅绑定到localhost——Packet Tracer与服务器运行在同一台机器上,因此不需要远程访问。
3.配置您的MCP客户端
克劳德代码:
claude mcp add --transport http packet-tracer http://127.0.0.1:39000/mcpVS Code -- .vscode/mcp.json:
{
"servers": {
"packet-tracer": {
"url": "http://127.0.0.1:39000/mcp"
}
}
}克劳德桌面版 -- claude_desktop_config.json:
{
"mcpServers": {
"packet-tracer": {
"url": "http://127.0.0.1:39000/mcp"
}
}
}4.连接数据包跟踪器
- 开放数据包跟踪器8.2+
- 首选 扩展>生成器代码编辑器
- 粘贴引导脚本并单击 跑:
/* PT-MCP Bridge */ window.webview.evaluateJavaScriptAsync("setInterval(function(){var x=new XMLHttpRequest();x.open('GET','http://127.0.0.1:54321/next',true);x.onload=function(){if(x.status===200&&x.responseText){$se('runCode',x.responseText)}};x.onerror=function(){};x.send()},500)");这使得PTBuilder每500毫秒对桥梁进行一次轮询。当LLM生成命令时,MCP服务器将它们排队,PT实时执行它们。
注: 引导程序注入setInterval进入执行HTTP轮询的webview。$se('runCode', ...)从webview到PT脚本引擎的桥梁。PTBuilderexecuteCode()在内部删除所有换行符,这就是引导程序使用/* */评论而不是//.
永久设置(可选)
要在Builder代码编辑器打开时自动启动轮询循环,请执行以下操作:
- 在PT中:扩展>脚本接口
- 选择生成器模块
- 替换
main.js和interface.js修改后的版本在PTBuilder/source/ - 保存并重新启动模块
5.完成
LLM现在可以自动创建设备、链接和配置路由器。让它建立一个网络。
______________________________________________________________________
MCP工具(22)
目录
| 工具 | 说明 |
|---|---|
pt_list_devices | 列出所有可用设备及其端口 |
pt_list_templates | 列出可用拓扑模板 |
pt_get_device_details | 特定设备型号的完整详细信息 |
估计
| 工具 | 说明 |
|---|---|
pt_estimate_plan | 模拟运行:估计设备、链接和复杂性,而不产生 |
规划
| 工具 | 说明 |
|---|---|
pt_plan_topology | 根据参数(路由器、PC、路由等)生成完整的计划 |
验证
| 工具 | 说明 |
|---|---|
pt_validate_plan | 使用15个键入的错误代码验证计划 |
pt_fix_plan | 自动纠正常见错误(电缆、型号、端口) |
pt_explain_plan | 为每个决策生成自然语言解释 |
生成
| 工具 | 说明 |
|---|---|
pt_generate_script | 生成PTBuilder JavaScript |
pt_generate_configs | 生成每个设备的CLI(IOS)配置 |
完整管道
| 工具 | 说明 |
|---|---|
pt_full_build | 一体化:计划、验证、生成和部署 |
实时部署
| 工具 | 说明 |
|---|---|
pt_deploy | 将脚本复制到剪贴板+手动说明 |
pt_live_deploy | 通过HTTP网桥实时直接向PT发送命令 |
pt_bridge_status | 检查电桥是否处于活动状态,PT是否已连接 |
拓扑交互
| 工具 | 说明 |
|---|---|
pt_query_topology | 查询PT中当前的设备 |
pt_delete_device | 从PT中删除设备及其链接 |
pt_rename_device | 重命名活动拓扑中的设备 |
pt_move_device | 将设备移动到新的画布坐标 |
pt_delete_link | 从特定界面删除链接 |
pt_send_raw | 将任意JS发送到PT的脚本引擎 |
pt_ipc | 通过虚线路径调用PT对象上的IPC方法(常见原始调用的快捷方式) |
pt_read_cli | 执行CLI命令并读回输出 |
对于AI代理
看 代理商.md 获取实用指南,涵盖工具层、无声故障模式、规范IPC路径以及何时使用 pt_send_raw.
出口+项目
| 工具 | 说明 |
|---|---|
pt_export | 将计划+脚本+配置导出到文件 |
pt_list_projects / pt_load_project | 保存项目管理 |
______________________________________________________________________
MCP资源(5)
| URI | 描述 |
|---|---|
pt://catalog/devices | 所有带端口的设备 |
pt://catalog/cables | 电缆类型 |
pt://catalog/aliases | 模型别名 |
pt://catalog/templates | 拓扑模板 |
pt://capabilities | 服务器功能 |
______________________________________________________________________
支持的设备
路由器
| 型号 | 端口 |
|---|---|
| 1941 | Gig0/0、Gig0/1(+通过HWIC-2T串行) |
| 2901 | Gig0/0、Gig0/1(+通过HWIC-2T串行) |
| 2911 | Gig0/0、Gig0/1、Gig0/2(+通过HWIC-2T串行) |
| ISR4321 | Gig0/0/0,Gig0/0/1 |
开关
| 型号 | 端口 |
|---|---|
| 2960-24TT | 传真0/1-24,千兆0/1-2 |
| 3560-24PS | 传真0/1-24,千兆0/1-2 |
终端设备
| 型号 | 端口 |
|---|---|
| PC-PT | Fa0 |
| 服务器PT | Fa0 |
| 笔记本电脑PT | Fa0 |
其他
| 型号 | 类型 |
|---|---|
| 云PT | 广域网云 |
| 接入点PT | 无线AP |
______________________________________________________________________
电缆类型
| 电缆 | 典型用途 |
|---|---|
| 直通 | 交换机路由器、交换机PC |
| 交叉 | 路由器、交换机、PC-PC |
| 串行 | 路由器串行路由器串行(WAN) |
| 光纤 | 光纤连接 |
| 自动 | 自动检测 |
______________________________________________________________________
定址方式
- 局部区域网 --
192.168.X.0/24,网关位于.1,来自的PC.2 - 路由器间链路 --
10.0.X.0/30,路由器之间的点对点 - 动态主机配置协议 --每个局域网的自动池,网关除外
路由
| 协议 | 状态 | 生成 |
|---|---|---|
| 静态 | 完成 | ip route 命令 |
| ospf | 完成 | router ospf 配置 |
| rip | 完成 | router rip 配置 |
| eigrp | 仅枚举 | 未实现 |
| 无 | 完成 | 无路由 |
______________________________________________________________________
模板
| 模板 | 说明 |
|---|---|
single_lan | 1个路由器+1个交换机+PC |
multi_lan | N个路由器相互连接,每个路由器都有自己的局域网 |
multi_lan_wan | 带广域网云的多局域网 |
star | 带卫星路由器的中央路由器 |
hub_spoke | 轮辐式拓扑结构 |
branch_office | 分支机构 |
router_on_a_stick | VLAN间路由 |
three_router_triangle | 三角形中的3个路由器 |
custom | 完全定制 |
______________________________________________________________________
建筑
src/packet_tracer_mcp/
├── adapters/mcp/ # MCP protocol layer
│ ├── tool_registry.py # 22 MCP tools
│ └── resource_registry.py # 5 MCP resources
├── application/ # Use cases + DTOs (requests/responses)
├── domain/ # Core business logic
│ ├── models/ # TopologyPlan, DevicePlan, LinkPlan, errors
│ ├── services/ # Orchestrator, IPPlanner, Validator, AutoFixer
│ └── rules/ # Validation rules (devices, cables, IPs)
├── infrastructure/
│ ├── catalog/ # Device catalog, cables, templates, aliases
│ ├── generator/ # PTBuilder JS + CLI config generators
│ ├── execution/ # Executors + HTTP bridge
│ │ ├── live_bridge.py # PTCommandBridge (HTTP server :54321)
│ │ ├── live_executor.py # LiveExecutor (sends plan → bridge → PT)
│ │ ├── deploy_executor.py# DeployExecutor (clipboard + instructions)
│ │ └── manual_executor.py# ManualExecutor (file export)
│ └── persistence/ # Project save/load
├── shared/ # Enums, constants, utilities
├── server.py # MCP server entry point
└── settings.py # Version + config数据流
TopologyRequest → Orchestrator → IPPlanner → Validator → AutoFixer
↓
TopologyPlan (validated)
↓
┌───────────────────────┼──────────────────┐
↓ ↓ ↓
PTBuilder Script CLI Configs Live Deploy
(addDevice/addLink) (hostname, IPs, (HTTP bridge
DHCP, routing) → PT real-time)______________________________________________________________________
PTBuilder扩展
这 PTBuilder/ 目录包含脚本模块“生成器代码编辑器”的源代码:
| 文件 | 目的 |
|---|---|
source/main.js | 入口点——创建菜单和网络视图 |
source/runcode.js | runCode(scriptText) --在脚本引擎中执行JS |
source/userfunctions.js | addDevice(), addLink(), configureIosDevice(), configurePcIp(), queryTopology(), deleteDevice(), renameDevice(), moveDevice(), deleteLink() |
source/devices.js | 型号→ PT数字类型映射 |
source/links.js | 电缆类型→ 数字ID映射 |
source/modules.js | 硬件模块映射 |
source/window.js | 网络视图窗口管理(QWebEngine) |
source/interface/ | 用于web编辑器的HTML+JS(状态面板+实时日志) |
Builder.pts | 编译的扩展包(二进制,不可编辑) |
______________________________________________________________________
测试
# All tests
python -m pytest tests/ -v
# Single file
python -m pytest tests/test_full_build.py -v
# Specific test
python -m pytest tests/test_full_build.py::TestFullBuild::test_basic_2_routers -v34个测试,涵盖IP规划、验证、自动修复、解释、估计、生成和完整构建集成。
______________________________________________________________________
快速示例
User: "Build me a network with 2 routers, 2 switches, 4 PCs, DHCP and static routing"
→ pt_full_build generates:
- 8 devices: R1, R2, SW1, SW2, PC1, PC2, PC3, PC4
- 7 links: R1↔R2 (cross), R1↔SW1 (straight), R2↔SW2 (straight), SW1↔PC1, SW1↔PC2, SW2↔PC3, SW2↔PC4
- IPs: LAN1 192.168.0.0/24, LAN2 192.168.1.0/24, Inter-router 10.0.0.0/30
- DHCP pools on R1 and R2
- Bidirectional static routes
- 23 JavaScript commands sent to PT
→ pt_live_deploy sends everything to Packet Tracer and the devices appear fully configured需求
- Python 3.11+
- 思科数据包跟踪器8.2+(用于实时部署)
- PT中安装的PTBuilder扩展(包含在
PTBuilder/)
