mcpField
P
packet-tracer-mcp

packet-tracer-mcp

本地服务
github.com科研与教育1426 周前更新

关于 packet-tracer-mcp

packet-tracer-mcp 是用于控制 Cisco Packet Tracer 9 的实验性 MCP 服务,通过本地桥接和原生 IPC API 操作软件。它支持实时拓扑编辑、设备配置、检查和仿真流程。

主要功能

  1. 01创建和编辑网络拓扑
  2. 02通过 CLI 配置路由器和交换机
  3. 03检查实时画布、端口、VLAN 和路由
  4. 04运行拓扑配方并进行预演
  5. 05保存快照并比较画布变化
  6. 06控制仿真并截取屏幕

适用场景

  1. 01构建并配置 Packet Tracer 网络实验
  2. 02检查拓扑并发现配置问题
  3. 03生成用于文档的 IOS CLI 配置
  4. 04运行网络仿真并查看结果

MCP 相关

它通过 Streamable HTTP 或 stdio 向 MCP 客户端提供 57 种工具。Packet Tracer 扩展经由本地 HTTP 桥接将服务连接到编辑器。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jcorderop02-packet-tracer": {
"command": "npx",
"args": [
"-y",
"packet-tracer-mcp"
],
"env": {
"BRIDGE_PORT": "<BRIDGE_PORT>"
}
}
}
}
启动命令npx -y packet-tracer-mcp
需要配置的环境变量
BRIDGE_PORTPort for the internal HTTP bridge that talks to the Packet Tracer 9 webview (default: 54321)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmpacket-tracer-mcp0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

packet-tracer-mcp

Version Status Repo status License

Packet Tracer Bun TypeScript

CI Tests MCP tools Last commit PRs welcome

用于从外部控制 Cisco Packet Tracer 9.0 的 Model Context Protocol 服务。一个自定义扩展挂接到 PT 编辑器,启动本地 HTTP 桥接服务,MCP 服务再通过 PT 原生 IPC API 调用它,以创建拓扑、配置路由器、启动模拟等。使用 Bun 和 TypeScript 编写。

警告

实验性项目。 当前版本为 0.1.0,是我利用空闲时间完成的个人实验。它在我的电脑上可与 PT 9.0.0.0810 配合使用,并通过了冒烟测试,但请勿将其视为可用于生产环境的软件。请做好遇到 bug、API 变更以及 PT 更新后功能损坏的准备。如果你愿意试用,欢迎针对发现的问题提交 issues。

Demo: el MCP construye una topología en Packet Tracer 9

演示加速了 x15:MCP 客户端启动一份操作方案,Packet Tracer 9 的画布便会自动填满(设备、布线、配置)。

作者:Juan Cordero Pascual · 许可证:MIT 语言:西班牙语(本文档) · English


目录


为什么还要做一个 Packet Tracer MCP

面向 PT 6.x–8.x 的项目依赖由第三方签名扩展加载的 JS 库。PT 9.0 封堵了这条路径:现在 App Meta Files(.pta)必须由 Cisco 使用 ECDSA 签名,因此开源项目无法提供此类文件。剩下的替代方案是从外部与 PT 的 webview 通信,而本服务正是这样做的:

  • 这里有一个自定义 .pts 扩展,可通过 PT 的 Extensions 菜单安装。它唯一的作用是启动一个循环,持续轮询本地 HTTP 桥接服务。
  • 当 MCP 服务需要写入内容时,会直接调用 PT 原生 IPC API:例如 ipc.appWindow().getActiveWorkspace().getLogicalWorkspace().addDevice(...) 或 getDevice(...).getCommandLine().enterCommand(...)。无需中间库,也不使用从其他地方复制的晦涩 JS。
  • 最终在 PT Script Engine 中执行的所有 JS 都由此仓库生成。若想了解发送的内容,请查看 src/ipc/。

理念:画布优先

其他工具会在内存中维护一个“plan”对象,对其进行验证,然后 最后再将其写入模拟器。这里并非如此:

  • 内存中没有任何 TopologyPlan。 PT 里有什么就是什么; 计划就是画布。
  • 每个配方都会在执行前重新读取画布快照。 如果你在构建到一半的画布上运行两次,第二次会补齐缺少的部分, 而不是重复创建设备。无需刻意考虑,它就能实现幂等。
  • 验证针对实时画布进行,而不是针对内部结构。出错时 (IP 重复、对等端位于不同子网、路由器已关闭),你可以直接在 PT 中看到, 而不是在抽象图中看到。
  • 持久化保存的是快照,而不是计划。 回退 意味着将当前画布与之前的转储进行比较,查看发生了哪些变化。没有神奇的重新水合。

详情请参阅 docs/ARCHITECTURE.md。


要求

  • Cisco Packet Tracer 9.0(macOS、Windows 或 Linux)。
  • Bun >=1.2。仅使用 Node 不行:代码是 TypeScript,并由 Bun 直接运行,无需预先编译。
  • 在 PT 中安装扩展 mcp-bridge.pts。它位于仓库的 extension/dist/ 中。

提示

为什么用 Bun 而不是 Node? Bun 原生运行 .ts,启动仅需 几毫秒,并且内置 fetch、HTTP 和测试运行器,无需安装 依赖项。如果你只有 Node,可以使用 curl -fsSL https://bun.sh/install | bash 安装 Bun(或在 macOS 上运行 brew install bun)。它与 Node 共存,互不干扰。


快速启动

git clone https://github.com/jcorderop02/packet-tracer-mcp.git
cd packet-tracer-mcp
bun install
bun run start              # streamable-HTTP en :39001 (default)
# o bien:
bun run src/index.ts --stdio   # modo stdio para clientes MCP que lo prefieran

在 Packet Tracer 9 中:

  1. 依次选择 Extensions > Scripting > Configure PT Script Modules > Add,然后 选择 extension/dist/mcp-bridge.pts。
  2. 将扩展设为启用状态。
  3. 每次会话中,通过 Extensions > MCP Bridge 打开窗口一次。

窗口加载后,轮询会自动启动。要确认一切正常,请运行 pt_bridge_status:应在不到一秒内返回 connected: true。

完整安装流程请参阅 docs/BOOTSTRAP.md。

MCP 端点为:

http://127.0.0.1:39001/mcp

说明

为什么是 :39001。 PT 9 已有自己的原生 IPC(未公开文档, 握手由 Cisco 签名),监听在 :39000。 为避免冲突,并明确表明 MCP 服务是独立的,该服务 监听在 :39001。如果你觉得不方便,可以通过环境变量 PACKETTRACER_MCP_PORT 更改端口。

连接 MCP 客户端
Claude Code(CLI,推荐)

一行命令,无需修改 JSON:

claude mcp add --transport http packet-tracer http://127.0.0.1:39001/mcp

在 Claude Code 中通过 /mcp 验证:应显示 packet-tracer 及其 57 个工具。

Claude Desktop

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或操作系统中的对应文件,然后重启 Claude Desktop:

{
  "mcpServers": {
    "packet-tracer": {
      "url": "http://127.0.0.1:39001/mcp"
    }
  }
}
Cursor

Settings → MCP → Add new MCP server → 粘贴 URL http://127.0.0.1:39001/mcp,并将传输方式设为 http。

VS Code(Continue / Cline)

在客户端的 config.json 中:

{
  "mcpServers": {
    "packet-tracer": {
      "url": "http://127.0.0.1:39001/mcp"
    }
  }
}
Gemini CLI

编辑 ~/.gemini/settings.json:

{
  "mcpServers": {
    "packet-tracer": {
      "httpUrl": "http://127.0.0.1:39001/mcp"
    }
  }
}

通过 /mcp list 验证。

Codex CLI

编辑 ~/.codex/config.toml:

[mcp_servers.packet-tracer]
url = "http://127.0.0.1:39001/mcp"
使用 curl 进行冒烟测试(无需客户端)

在进行任何配置之前,确认服务端能够响应:

curl -sS -X POST http://127.0.0.1:39001/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"1.0"}}}'

应返回一个 result,其中包含 serverInfo.name = "packet-tracer-mcp"。再发送一次 POST 请求,使用 "method":"tools/list",即可返回 57 个工具及其 inputSchema。

编译为单个二进制文件
bun run build
./dist/packet-tracer-mcp
测试
bun test

单元测试套件涵盖子网划分算术、画布检查、快照解析器、差异比较、blueprint 验证,以及每个配方的 CLI 构建器。运行测试无需启动 PT。

端到端流程

在 bridge 已连接(pt_bridge_status → connected: true)的情况下,完整会话大致如下:

1. pt_list_recipes                          # confirmar lo disponible
2. pt_forecast recipe='chain' params={routers:3, pcsPerLan:2}
                                            # estimación dry-run, ningún cambio
3. pt_cook_topology recipe='chain'
       params={routers:3, pcsPerLan:2, routing:'ospf'}
                                            # construye el lab; idempotente
4. pt_inspect_canvas                        # findings: IPs duplicadas, etc.
5. pt_explain_canvas                        # narración legible
6. pt_save_snapshot name='chain-baseline'   # captura T-0
7. pt_run_cli device='R1' command='show ip route'
                                            # comprobación rápida desde el CLI
8. pt_diff_snapshots before='chain-baseline'
                                            # qué ha cambiado desde T-0
9. pt_save_pkt path='/abs/path/lab.pkt'     # guardar como .pkt nativo

如果过程中出了问题,pt_mend_canvas 会应用保守的修复(例如,启动已经接好线但处于关闭状态的设备),并告知哪些内容它不敢改动。


功能

packet-tracer-mcp 提供 57 个 MCP 工具,按领域分组。

Bridge 和诊断

pt_bridge_status、pt_ping、pt_clear_canvas。

目录和发现

pt_list_devices、pt_list_modules、pt_list_recipes、 pt_list_snapshots、pt_get_device_details。

实时工作区检查(只读)

pt_query_topology、pt_inspect_canvas、pt_explain_canvas、 pt_forecast(配方试运行)、pt_generate_configs(离线生成配方的 IOS CLI,不会修改 PT——适用于文档、课堂教学,或在真实硬件上重现实验), pt_inspect_ports(逐端口状态:link/up/proto、MAC、IP/掩码、无线状态), pt_read_vlans(读取每台交换机的实时 VLAN 基础信息)、pt_read_acl(通过 AclProcess 读取已配置的 ACL)、pt_show_bgp_routes(将 show ip bgp 解析为结构化行)、pt_read_project_metadata (当前 .pkt 的描述/版本/文件名)。

画布基础编辑

pt_add_device、pt_add_module、pt_create_link、pt_delete_device、 pt_delete_link、pt_move_device、pt_auto_layout(将整个 画布重新排列为分层网格,检测中转路由器并将其放到第二层)、pt_rename_device、 pt_set_pc、pt_set_device_power(幂等切换 Device.setPower)、 pt_add_canvas_annotation(添加注释/线条/圆圈)、 pt_manage_clusters(列出/删除/解散逻辑集群)、 pt_send_raw(逃生通道:在 Script Engine 中执行任意 JS)。

配方级编辑(编排)

pt_cook_topology、pt_mend_canvas、pt_plan_review(对 ≥3 台路由器的拓扑进行强制 预检)、pt_apply_switching、pt_apply_services、pt_configure_server_dhcp(通过原生 API IPC 配置 Server-PT 上的 DHCP server)、pt_configure_subinterface(用于 router-on-a-stick 的 802.1Q 子接口)、pt_apply_advanced_routing、pt_apply_ipv6、 pt_apply_voip、pt_apply_wireless。

持久化(快照)

pt_save_snapshot、pt_load_snapshot、pt_diff_snapshots。快照会作为画布转储保存到磁盘。加载快照不会覆盖任何内容:它会显示快照与当前 PT 内容之间的差异,由你决定如何处理。

原生 .pkt 持久化

pt_save_pkt、pt_open_pkt(服务器和 PT 共用 filesystem 时),以及用于通过网络传输 .pkt 的 pt_save_pkt_to_bytes 和 pt_open_pkt_from_bytes。压缩格式 .pkz 无法使用: JS API 虽然暴露了相关方法,但它返回的字节在 PT 9.0.0.0810 中无效。

路由器和交换机 CLI

pt_run_cli、pt_run_cli_bulk、pt_show_running(可选使用 | section)。

模拟和操作

pt_simulation_mode(切换 Realtime↔Simulation)、pt_simulation_play (播放/后退/前进/重置)、pt_send_pdu(发送源自本机的 Simple PDU)、 pt_traceroute、pt_screenshot(工作区 PNG/JPG 截图)。


内置方案

pt_list_recipes 会实时返回列表。内置方案如下:

方案描述
chainN 个路由器串联,每个路由器连接自己的 M 台 PC LAN。
star一个 hub 路由器连接 N 个 spokes,每个 spoke 都有自己的 LAN。
branch_officeHQ 配有一个或两个 LAN,以及一个带有自身 LAN 的分支机构路由器。
campus_vlan单臂路由:一个路由器 + 一个交换机,包含 N 个 VLAN,每个 VLAN 配有 M 台 PC。
edge_nat边缘路由器,配置 PAT、DHCP、ACL 和上游 ISP 路由器。
dual_isp两个 ISP,在边缘路由器上配置 BGP eBGP + HSRP。
voip_labCME 路由器 + 交换机 + N 部 7960 IP 电话;配置 telephony-service、ephone-dn、voice VLAN 和 DHCP option-150。
ipv6_lab配置 OSPFv3 的 IPv4 + IPv6 双栈。
wifi_lan路由器 + AccessPoint + 笔记本电脑。受限:PT 9 的公共 JS API 不会触发无线关联(参见 docs/COVERAGE.md)。

前三种方案支持 routing: 'static' | 'ospf' | 'eigrp' | 'rip' | 'none' 和 dhcp: true|false。campus_vlan 还接受 startVlanId、 vlanStep 和 lanPool。wifi_lan 接受 ssid、security、psk 和 channel。


配置

环境变量(均为可选):

变量默认值含义
PACKETTRACER_MCP_HOST127.0.0.1MCP HTTP 传输的主机。设置为 0.0.0.0 可允许 LAN 访问。
PACKETTRACER_MCP_PORT39001MCP 端口(避免与 PT 原生 IPC 的 :39000 冲突)。
PACKETTRACER_BRIDGE_PORT54321PT webview 轮询的端口。
PACKET_TRACER_SNAPSHOT_DIR./packet-tracer-snapshots持久化快照的目录。

文档

  • AGENTS.md — 面向使用此服务的 LLM 的操作指南:布线约定(LAN Gigabit 与 WAN serial)、用户 LAN 与传输 LAN、推荐的创建 + 自动布局流程、应避免的常见错误。
  • docs/ARCHITECTURE.md — 各层(MCP 传输、工具、方案、IPC 生成器、HTTP bridge)、为何采用 canvas-first、.pkt 持久化,以及不在支持范围内的内容。
  • docs/BOOTSTRAP.md — .pts 扩展的安装、轮询机制详解,以及面向希望重建 .pts 的开发者的章节。
  • docs/COVERAGE.md — 已针对真实 PT 9 验证的内容及其状态(verified-pt9 / contract-verified / partial / broken / dead-end)、smoke run 参考,以及影响用户的已知模拟器限制。
  • docs/TOOLS.md — 57 个 MCP 工具的参考文档,包含参数、行为和说明。
  • docs/RECIPES.md — 方案目录(chain、star、branch_office、campus_vlan、edge_nat、wifi_lan、voip_lab、ipv6_lab、dual_isp),包含参数、示例和预期结果。
  • docs/TROUBLESHOOTING.md — 实际遇到的症状、可能原因和修复方法。下方的 FAQ 是摘要。
  • CHANGELOG.md — 按 Keep a Changelog 格式记录每个版本包含的内容。
  • CONTRIBUTING.md — 如何提交 issue、本地环境设置、代码约定和提交规范。
  • CODE_OF_CONDUCT.md — Contributor Covenant 2.1。
  • SECURITY.md — 安全政策和漏洞报告方式。

项目结构

src/
  bridge/        Bridge HTTP que sondea la webview de PT
  canvas/        Snapshot, inspección, diff y aritmética de subnetting
  catalog/       Modelos PT (54), alias humanos, tipos de cable
  ipc/           Generadores puros string-in/string-out para el IPC nativo
                 + persistencia .pkt vía systemFileManager
  recipes/       Blueprints, addressing, routing, switching, services,
                 ipv6, voip, wireless, topologías predefinidas
  persistence/   Persistencia de snapshots
  tools/         Un fichero por tool MCP; ALL_TOOLS los agrega
  config.ts      Configuración por entorno
  server.ts      Ciclo de vida (transporte MCP + bridge)
  index.ts       Entry-point CLI
extension/       Extensión .pts (módulo PT que arranca el polling)
docs/            Arquitectura, bootstrap y matriz de cobertura
scripts/         smoke.ts (suite de verificación contra PT real)

常见问题

这具体有什么用?

让 LLM(Claude、ChatGPT、Gemini,或任何带 MCP 客户端的模型) 无需你操作 GUI,即可在 Packet Tracer 9 中创建、配置和验证拓扑。适用于准备 CCNA/CCNP 实验、生成练习场景,或自动化重复任务。

不运行 Packet Tracer 也能用吗?

不涉及画布的只读调用(目录、列出配方、验证方案)无需 PT 即可运行。任何会修改拓扑的操作(pt_add_device、pt_cook_topology、pt_run_cli 等) 都需要打开 PT 并加载扩展。

支持哪些 Packet Tracer 版本?

仅支持 9.0.0.0810。PT 的 IPC 原生 API 会随次要版本变化,本服务针对该构建版本进行了校准。较早版本 (8.x)没有现代 Script Engine,因此无法运行。

为什么用 Bun 而不用 Node?

主要是为了方便。Bun 无需转译即可运行 TypeScript,启动只需几毫秒(当 MCP 客户端每天多次重启服务时,这很重要),而且 bun build --compile 可以生成独立二进制文件,无需安装任何东西就能移到另一台机器上。Node 也能用;我只是更喜欢在这个项目中使用 Bun 的工作流。

有身份验证吗?

没有。假定这是受信任的本地环境(loopback)。如果你通过 PACKETTRACER_MCP_HOST=0.0.0.0 将端口开放给 LAN,则需自行负责保护该端口。请参阅 SECURITY.md。

配方卡住了怎么办?

调用 pt_clear_canvas,调低参数(减少路由器/VLAN),然后重试。如果你能稳定复现,请提交 issue 并附上确切参数。更多详情请参阅 docs/TROUBLESHOOTING.md。

可以添加自己的配方吗?

可以。遵循 src/recipes/topologies/*.ts 中的模式,导出一个返回 Blueprint 的函数,并在 src/recipes/index.ts 中注册。请参阅 CONTRIBUTING.md。

常见错误(简答)
症状快速修复
MCP 客户端无法连接lsof -i :39001 → 如果没有任何输出,运行 bun run src/index.ts。
pt_bridge_status → connected: false将 README 中的 bootstrap 粘贴到 PT 的脚本编辑器并点击 Run。
画布没有变化轮询已停止:重新粘贴 bootstrap。
pt_run_cli 返回空内容重试调用 — terminal length 0 会在首次 enable 时应用。
bun install 失败执行 bun --version ≥ 1.2,然后运行 rm -rf node_modules bun.lock && bun install。

完整列表请参阅 docs/TROUBLESHOOTING.md。


状态

已针对 Cisco Packet Tracer 9.0.0.0810 完成测试:

  • 目录中的 54 / 54 个型号均标记为 verified-pt9。
  • 57 个 MCP 工具,均有单元测试。
  • 9 个配方中有 8 个已通过端到端验证(chain、star、 branch_office、campus_vlan、edge_nat、dual_isp、voip_lab、 ipv6_lab)。第 9 个配方 wifi_lan 因 PT API 的限制(而非 MCP 的限制)而无法完成。
  • 已端到端验证的层包括:L2 交换、L3 服务(NAT、ACL、 DHCP)、动态路由(OSPF、BGP、HSRP、EIGRP)、使用 OSPFv3 的 IPv6、 VoIP(CME + ephone-dn)、模拟与操作,以及 .pkt 持久化。

详细证据(冒烟测试运行、屏幕截图和已知限制)请参阅 docs/COVERAGE.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。