packet-tracer-mcp

packet-tracer-mcp

Enables AI agents to control Cisco Packet Tracer in real time, allowing natural language-driven creation and configuration of network topologies.

Category
Visit Server

README

Packet Tracer MCP Server

Beta — Active development. Some features may be incomplete or change in future versions.

Control Cisco Packet Tracer in real time using natural language through any MCP-compatible AI agent — Claude Code, OpenCode, Cursor, Continue, Cline, and more.

Write prompts like "create a WAN network with OSPF between two sites" and watch the topology build itself live inside Packet Tracer.

How it works

Your AI agent (Claude Code, OpenCode, Cursor, Cline...)
        |
        v  natural language prompt
  MCP Server (Python)  <- stdio transport
        |
        v  generates JavaScript (PTBuilder API)
  Local HTTP server :54321
        |
        v  PTBuilder-MCP auto-polls /next every 500ms
  PTBuilder-MCP (extension running inside PT)
        |
        v  executes live
  Cisco Packet Tracer

Requirements

  • Python 3.11+
  • Cisco Packet Tracer 8.x
  • Builder-MCP.pts installed in PT (see Packet Tracer setup)
  • Any MCP-compatible AI agent (Claude Code, OpenCode, Cursor, Cline, Continue, etc.)

Installation

git clone https://github.com/caixax/packet-tracer-mcp
cd packet-tracer-mcp
pip install -e .

Packet Tracer setup

This server requires Builder-MCP.pts, a modified version of PTBuilder that automatically connects to the MCP server when Packet Tracer starts. No manual scripts or copy-pasting needed.

1. Download Builder-MCP.pts from the latest release

2. Open Packet Tracer and go to Extensions > Scripting > Configure PT Script Modules

3. Click Add and select the downloaded Builder-MCP.pts file

4. Make sure it is set to On Startup and click OK

5. Restart Packet Tracer. The bridge starts automatically — no further action needed.

Builder-MCP.pts is a fork of kimmknight/PTBuilder with an added MCP bridge module that auto-polls the MCP server on startup. The original Builder Code Editor functionality is preserved. Source code: github.com/caixax/PTBuilder

Configuration

Most AI coding tools run MCP servers as a subprocess via stdio — no extra setup, just point them at the command. Replace C:/path/to/packet-tracer-mcp with your actual path.


Claude Code

cd C:/path/to/packet-tracer-mcp
claude mcp add packet-tracer -- python -m src.server

Claude Desktop

# No CLI — edit the config file manually
# Windows: %APPDATA%\Claude\claude_desktop_config.json
# macOS:   ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "packet-tracer": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "C:/path/to/packet-tracer-mcp"
    }
  }
}

OpenCode

# No CLI — edit the config file manually
# Windows: %APPDATA%\opencode\config.json
# macOS/Linux: ~/.config/opencode/config.json
{
  "mcp": {
    "packet-tracer": {
      "type": "local",
      "command": ["python", "-m", "src.server"],
      "cwd": "C:/path/to/packet-tracer-mcp"
    }
  }
}

Cursor

# No CLI — edit the config file manually
# Project-level: .cursor/mcp.json
# Global: ~/.cursor/mcp.json
{
  "mcpServers": {
    "packet-tracer": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "C:/path/to/packet-tracer-mcp"
    }
  }
}

Cline (VS Code)

# No CLI — use the UI
# Cline sidebar > Settings > MCP Servers > Edit MCP Settings
{
  "mcpServers": {
    "packet-tracer": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "C:/path/to/packet-tracer-mcp"
    }
  }
}

Continue

# No CLI — edit the config file manually
# ~/.continue/config.json
{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "python",
          "args": ["-m", "src.server"],
          "cwd": "C:/path/to/packet-tracer-mcp"
        }
      }
    ]
  }
}

HTTP mode (advanced)

If you want the server running independently so multiple clients can share it, or if your client only supports HTTP/SSE:

python -m src.server --transport http --port 3000
# Server available at http://127.0.0.1:3000/sse

Not on the list?

This server follows the MCP specification — it should work with any MCP-compatible client.

Check your client's documentation for how to add a stdio MCP server with a custom command. If you get it working with a client not listed here, feel free to open a PR or issue to add it to this list.

Usage

With Packet Tracer open and the MCP server running, write in Claude:

Create a network with router R1, switch SW1 and two PCs.
Connect them and configure the 192.168.1.0/24 network.
Add a DNS server with IP 192.168.1.10 connected to the switch.
Configure all PCs to use that DNS server.
Create a WAN topology: two routers with a serial link, each with
its own LAN, and configure OSPF area 0 between them.

Available tools

Devices

Tool Description
pt_add_device Add a device to the canvas
pt_remove_device Remove a device from the canvas
pt_list_devices List devices in the topology
pt_get_device_info Get detailed info about a device

Connections

Tool Description
pt_connect Connect two devices with a cable
pt_disconnect Remove a cable from a port
pt_list_connections List all connections

Configuration

Tool Description
pt_send_commands Send CLI commands to a router/switch
pt_configure_ip Configure IP on an interface (shortcut)
pt_configure_pc Configure IP/DNS on a PC, Laptop or Server
pt_save_config Save running-config to startup-config

Topology

Tool Description
pt_apply_template Apply a predefined topology template
pt_export_topology Export topology as JSON
pt_validate Validate network configuration

Device aliases

Alias Model
router Cisco 2911
switch Cisco 2960-24TT
switch-l3 Cisco 3560-24PS
pc PC-PT
server Server-PT
laptop Laptop-PT
tablet TabletPC-PT
smartphone SMARTPHONE-PT
phone Cisco 7960
ap AccessPoint-PT
wifi Linksys-WRT300N
firewall ASA 5506-X
cloud Cloud-PT
wlc WLC-3504

Project structure

packet-tracer-mcp/
├── src/
│   ├── server.py              # MCP entry point + resources
│   ├── app.py                 # FastMCP instance + lifespan
│   ├── tools/
│   │   ├── devices.py         # Device tools
│   │   ├── connections.py     # Connection tools
│   │   ├── configuration.py   # CLI configuration tools
│   │   └── topology.py        # Topology and diagnostics
│   ├── bridge/
│   │   ├── pt_connection.py   # HTTP bridge server :54321
│   │   ├── script_builder.py  # PTBuilder JS code generator
│   │   └── command_queue.py   # Serialized async queue
│   └── catalog/
│       ├── devices.json        # Device catalog
│       ├── cables.json         # Cable types
│       └── templates.json      # Topology templates
├── pyproject.toml
└── LICENSE

Troubleshooting

"PTBuilder is not polling"

  • Make sure Packet Tracer is open with Builder-MCP.pts installed
  • Verify the module is enabled: Extensions > Scripting > Configure PT Script Modules
  • Check that it is set to "On Startup"
  • Restart Packet Tracer after installing the module

"Port 54321 already in use"

  • A previous MCP server process may still be running
  • The server automatically cleans up stale processes on startup, but if it fails, restart Packet Tracer and Claude Code

Error "Invalid arguments for IPC call"

  • Check the device type is valid (use the aliases from the table above)
  • Port names are auto-expanded (Gi0/0 -> GigabitEthernet0/0) but verify they exist on the device model

Error "getPort of null"

  • The device was not added successfully before trying to configure it
  • Verify pt_add_device succeeded before calling pt_configure_pc

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured