Skip to main content
Glama

Packet Tracer MCP

MCP server that lets AI agents (OpenCode, Claude Code, Cursor, Claude Desktop…) create and control network topologies in Cisco Packet Tracer in real time.

You (prompt)  →  OpenCode / Claude  →  MCP (this server)  →  HTTP bridge  →  Packet Tracer

Adaptive Script Engine layer: works across Packet Tracer 8.x / 9.x by probing available APIs at runtime (no hard-coded single method).


Features

Capability

Description

Planning

pt_plan_simple_lan, pt_plan_two_site_ospf, pt_plan_from_prompt

Live deploy

One call deploys devices + cables + IPs + IOS configs

Granular control

Add device, connect, configure PC, send CLI, clear, query topology

API probe

pt_probe_api discovers workspace paths & type codes

Catalog

Routers, switches, PCs, cables with aliases


Related MCP server: Packet Tracer MCP Server

Requirements

  • Python 3.11+

  • Cisco Packet Tracer 8.x or 9.x (running, with Script Module bridge active)

  • An MCP client: OpenCode, Claude Code, Cursor, etc.


Install

Windows (PowerShell)

git clone https://github.com/DiomedesMateo/packet-tracer-mcp.git
cd packet-tracer-mcp

python -m venv .venv
.\.venv\Scripts\Activate.ps1

# If execution policy blocks Activate:
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

pip install -e .
pip install "mcp<2"

OpenCode config (%USERPROFILE%\.config\opencode\opencode.json or %APPDATA%\opencode\opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "packet-tracer": {
      "type": "local",
      "command": [
        "C:\\Users\\YOUR_USER\\path\\to\\packet-tracer-mcp\\.venv\\Scripts\\python.exe",
        "-m",
        "packet_tracer_mcp.server"
      ],
      "enabled": true
    }
  }
}

Replace the path with your real absolute path.


macOS / Linux

git clone https://github.com/DiomedesMateo/packet-tracer-mcp.git
cd packet-tracer-mcp

python3 -m venv .venv
source .venv/bin/activate

pip install -e .
pip install "mcp<2"

OpenCode config (~/.config/opencode/opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "packet-tracer": {
      "type": "local",
      "command": [
        "/absolute/path/to/packet-tracer-mcp/.venv/bin/python",
        "-m",
        "packet_tracer_mcp.server"
      ],
      "enabled": true
    }
  }
}

Claude Desktop / Cursor

Add a similar MCP entry pointing to the same Python module and absolute interpreter path.


Configure Packet Tracer (required for live control)

Without this step the MCP can only plan topologies. Live tools (pt_add_device, pt_live_deploy, pt_connect, etc.) need Packet Tracer polling the local HTTP bridge.

Step-by-step (PT 8.x / 9.x)

  1. Open Cisco Packet Tracer.

  2. Menu Extensions → Scripting → New PT Script Module...
    (or Configure PT Script Modules... → select a module → Edit).

  3. Open the Script Engine tab
    (or Info → 3. Script Engine Files → Go To).

  4. Create or edit a .js file and paste the entire contents of the file that matches your PT version:

  5. Save the script inside the module.

  6. Go to Info → 6. Saving → Export and save as e.g. MCP-Bridge.pts.

  7. Open Extensions → Scripting → Configure PT Script Modules...

    • If the module is not in the list → Add → choose the .pts file.

    • Select the module → click Start.

    • The window title should show (Running), not (Stopped).

  8. Optional: click Debug to see logs such as PT-MCP 9.0.1: bridge ACTIVE.

  9. Leave Packet Tracer open while you use OpenCode / Claude / Cursor.

If PT shows "New script modules must be exported and added as persistent script modules before starting", you must Export + Add before Start.

Verify from the AI client

Usa pt_bridge_status

Result

Meaning

connected: true

PT is polling — live tools work

connected: false

Module not Running, wrong JS, or PT closed

running: true only

MCP HTTP server is up; PT still not polling

The MCP bridge listens on http://127.0.0.1:54321 (GET /next, POST /result).

Detailed guide: docs/PACKET_TRACER_SETUP.md.


Usage examples

Usa pt_bridge_status
Crea una red simple con 1 router, 1 switch y 2 PCs en 192.168.1.0/24 y despliégala en Packet Tracer.
pt_add_device R1 router-pt
pt_get_topology
Plan a two-site OSPF topology and deploy it live.

More prompts: examples/sample_prompts.md.


Tools

Status

  • pt_bridge_status / pt_start_bridge

  • pt_probe_api — discover Script Engine paths & cache type codes

Catalog

  • pt_list_devices / pt_list_cables

Planning (offline)

  • pt_plan_simple_lan / pt_plan_two_site_ospf / pt_plan_from_prompt

Live

  • pt_add_device / pt_connect / pt_configure_pc / pt_send_cli

  • pt_get_topology / pt_clear_topology / pt_live_deploy / pt_run_js


Project layout

packet-tracer-mcp/
├── pyproject.toml
├── README.md
├── LICENSE
├── extension/
│   ├── bridge_bootstrap.js      # XHR / webview bootstrap
│   ├── bridge_debug.js          # PT 8.x (_NetAccess)
│   └── bridge_pt901.js           # PT 9.0.1+ (multi-signature)
├── src/packet_tracer_mcp/
│   ├── server.py
│   ├── bridge.py
│   ├── api_probe.py
│   ├── catalog.py
│   ├── planner.py
│   └── js_generator.py
└── examples/
    ├── opencode.json
    └── sample_prompts.md

Notes

  • Prefer pip install "mcp<2" if you hit FastMCP / MCPServer import errors (SDK 2.x rename).

  • Cache file: ~/.packet_tracer_mcp_cache.json.

  • If connected: false, re-Start the Script Module and keep Packet Tracer open.

  • PT 9.0.1 error Passing incompatible arguments to C++ → use extension/bridge_pt901.js.

License

MIT

Related MCP Connectors

Related MCP Servers