Skip to main content
Glama

Model Context Protocol (MCP) Server for Cisco Packet Tracer

mcp-name: io.github.kiskander/pt-mcp-server

Overview

pt-mcp brings AI assistants to your Packet Tracer labs. It lets you work with a running Cisco Packet Tracer in natural language from AI applications like Claude Desktop, Claude Code, and Cursor.

Instead of dragging devices around and typing every command by hand, tell the AI what you want in plain English, like "Build two routers with a serial link and static routes, then prove the PCs can ping each other" or "Step my ping through simulation mode and explain what the switch does with the frame". Then watch it happen in Packet Tracer.

This works through the Model Context Protocol (MCP), a standard way for AI applications to use external tools. pt-mcp connects to Packet Tracer through Packet Tracer's own external-application interface: the IPC API over PTMP, the same channel Cisco's "ExApps" use. That means no plugins inside Packet Tracer, no patched binaries, and no screen scraping.

It is built with CCNA students in mind. It can show you why the network behaves the way it does (Packet Tracer's own per-hop explanations in simulation mode), it verifies the way the exam expects, and by design it cannot read the answers or score of a graded activity.

Related MCP server: Packet Tracer MCP Server

Features

  • Build Topologies: Add devices, cable them (with automatic cable selection like the GUI), or build an entire lab (devices, expansion cards, cables, host IPs, IOS configs) in one call.

  • Export and Rebuild Labs: Export the open network, configs included, in the same format, and rebuild it anywhere.

  • Configure Devices: Paste whole IOS configs (show running-config output works as-is), run exec or config commands, and get each command's status. Read, save, and erase running and startup configs.

  • Expansion Modules: See a device's slots and supported cards (HWIC-2T, NIM-2T, WIC, SFPs…) and install or remove them. Power cycling is handled for you.

  • End Devices: Set PC/server IP settings, and run Command Prompt commands (ping, ipconfig, tracert) with their output.

  • Verify Connectivity: Ping matrices with loss statistics, retrying the usual ARP/STP first-ping failures.

  • Simulation Mode (Packet Tracer's "packet capture"): Send PDUs, step time, list events, and read Packet Tracer's own OSI-layer explanation of each hop plus decoded headers (Ethernet, 802.1Q, IP, ICMP, ARP, HDLC, TCP/UDP, STP, OSPF, DHCP, DNS, CDP…).

  • Console and Command Logs: Read a device's console buffer (%LINK/%LINEPROTO messages) and Packet Tracer's log of typed commands.

  • Annotations: Add, edit, and delete notes, lines, and circles on the logical workspace.

  • Activities (.pka): Read an activity's instructions. Answers and scores are deliberately out of reach.

  • Crash Protection: Only IPC calls verified against a live Packet Tracer are ever sent, and known crashing calls are blocked (see Crash protection).

  • Cross-Platform: Tested on macOS and Windows with Packet Tracer 9.0.1. .pkt files move between them.

  • Modular Architecture: Tools are organized into modules (devices, links, cli, simulation, etc.), following cml-mcp.

Quick Start

Requirements

  • Cisco Packet Tracer 9.0.1, running and logged in to NetAcad (8.2.0 API data is included but not re-verified)

  • macOS or Windows (Linux is detected but untested)

  • uv, which brings its own Python (3.12–3.14)

  • git, which uvx uses to fetch the server from GitHub

Step 1: Register pt-mcp with Packet Tracer (one time per computer)

uvx --from git+https://github.com/kiskander/pt-mcp-server pt-mcp setup

This finds Packet Tracer, generates a private key for this computer, creates PTMCP.pta in a pt-mcp folder in your home folder (~/pt-mcp/ or C:\Users\<you>\pt-mcp\), and opens that folder for you.

Then in Packet Tracer:

  1. Extensions → IPC → Configure Apps… → Add

  2. Choose PTMCP.pta from the pt-mcp folder

  3. Accept the prompt and leave it on On Demand

Step 2: Check the connection

uvx --from git+https://github.com/kiskander/pt-mcp-server pt-mcp doctor

Every line should say [OK]. If one doesn't, it tells you how to fix it.

Step 3: Add the server to your MCP client

Copy the block for your client into its MCP configuration file. No keys or passwords go here: the server reads the key that setup saved.

Claude Desktop: claude_desktop_config.json (macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\, Linux ~/.config/Claude/)

{
  "mcpServers": {
    "Cisco Packet Tracer": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"]
    }
  }
}

Claude Code: .mcp.json in your project (or run claude mcp add --scope user packet-tracer -- uvx --from git+https://github.com/kiskander/pt-mcp-server pt-mcp)

{
  "mcpServers": {
    "packet-tracer": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"]
    }
  }
}

Cursor: ~/.cursor/mcp.json (or .cursor/mcp.json in a project)

{
  "mcpServers": {
    "packet-tracer": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"]
    }
  }
}

VS Code (GitHub Copilot): .vscode/mcp.json

{
  "servers": {
    "packet-tracer": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"]
    }
  }
}

Restart your client after saving, then ask: "Is Packet Tracer connected?"

TIP

"Command not found" for uvx? MCP clients don't always inherit your shell's PATH. Replace "uvx" with its full path: run which uvx on macOS/Linux or where uvx on Windows (e.g. "/Users/alice/.local/bin/uvx" or "C:\\Users\\alice\\.local\\bin\\uvx.exe"; JSON needs doubled backslashes).

WARNING

Use the--from git+https://github.com/kiskander/pt-mcp-server form exactly. A different, unrelated package called pt-mcp exists on PyPI, so uvx pt-mcp would run that instead.

Any setting can also go in an env block. If you set PT_APP_KEY here, it must match the key in the .pta that is registered in Packet Tracer (the one in pt-mcp.env, written by setup). A stale key here is the most common cause of "authentication rejected".

{
  "mcpServers": {
    "Cisco Packet Tracer": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"],
      "env": {
        "PT_HOST": "127.0.0.1",
        "PT_PORT": "39000",
        "PT_APP_ID": "net.netacad.cisco.ptmcp",
        "PT_APP_KEY": "<key from pt-mcp.env>"
      }
    }
  }
}

pt-mcp.env is in ~/Library/Application Support/pt-mcp/ (macOS), %APPDATA%\pt-mcp\ (Windows), or ~/.config/pt-mcp/ (Linux). All settings are listed in INSTALLATION.md.

For running from a clone, HTTP mode, Windows notes, and troubleshooting, see INSTALLATION.md.

Available MCP Tools

The server provides 45 MCP tools by default (plus one opt-in), organized into the following categories:

Connection

  • get_pt_information - Connection check: Packet Tracer version, device/link counts, workspace mode, open file

Network Topology

  • create_full_network_topology - Build a whole lab (devices, modules, links, host IPs, IOS configs) in one call; errors are collected, not fatal

  • export_network_topology - Export the open network (with configs) in the same format, for rebuilding or review

  • set_network_description - Set the file's description (objectives, addressing table…)

Device Management

  • get_devices_in_network - List devices with type, model, power, and position

  • get_device_models - List models for a device type (router, switch, pc, server, …)

  • add_device_to_network - Add a device, optionally named and positioned

  • rename_device - Change a device's display name

  • set_device_power - Power a device on or off

  • delete_device_from_network - Delete a device and its cables (asks for confirmation)

Device Configuration

  • get_device_configuration - Read the running-config or startup-config

  • configure_device - Apply an IOS config block (handles show run output and sub-modes; reports only rejected lines)

  • save_device_configuration - write memory

  • erase_device_configuration - Erase startup-config and reload to a blank config (asks for confirmation)

Expansion Modules

  • get_device_model_details - Show slots (installed or empty) and every supported module with its description

  • add_module_to_device - Install a module (e.g. HWIC-2T) and return the new ports

  • remove_module_from_device - Remove a module (asks for confirmation)

  • get_interfaces_for_device - Ports with status, MAC, IP/mask, and the remote device/port

  • configure_host_interface - IP, mask, gateway, DNS, or DHCP on PCs, servers, and laptops

  • set_interface_power - Turn a single port on or off

  • connect_two_devices - Cable two ports (auto picks serial, console, straight-through, or crossover)

  • get_all_links - Every cable with both ends and its type

  • delete_link - Remove the cable on a port (asks for confirmation)

CLI & Verification

  • send_cli_command - Run IOS commands in exec or config mode, with per-command status (ok, invalid, rejected, …) and output

  • send_terminal_command - Run a command in a PC/server Command Prompt (or a device terminal) and collect the output

  • verify_connectivity - Ping a list of destinations from a device and report sent/received/loss for each

  • get_console_log - The device's console buffer (boot and link messages)

  • get_command_history - Packet Tracer's log of commands typed into terminals

Simulation Mode

  • set_simulation_mode - Switch between Realtime and Simulation

  • send_simple_pdu - Send an ICMP PDU between two devices (the envelope tool)

  • step_simulation - Step forward or backward

  • get_simulation_events - The event list: where each PDU is, where it came from, protocol, and what happened

  • get_simulation_event_details - Packet Tracer's OSI-layer explanation of an event plus decoded inbound/outbound headers

  • reset_simulation - Clear the event list

Annotations (Visual Elements)

  • get_annotations - Notes, lines, and shapes on the workspace

  • add_text_note - Add a text note

  • edit_text_note - Change a note's text

  • add_line_annotation - Draw a line

  • add_circle_annotation - Draw a circle

  • delete_annotation - Delete a note or shape (asks for confirmation)

Activities

  • get_activity_instructions - Read a .pka activity's instruction pages as plain text (not answers or scores)

Files

  • create_new_network - Start a new, empty network (asks for confirmation)

  • open_network_file - Open a .pkt or .pka

  • save_network_file - Save the network as a .pkt

IPC API Reference

  • describe_ipc_class - Look up the methods and wire types of any Packet Tracer IPC class (offline)

  • call_ipc_api - (opt-in, PT_MCP_ENABLE_RAW_IPC=true) Call the raw IPC API; still limited to verified methods

Usage

Once configured, make sure Packet Tracer is open and logged in, restart your MCP client, and start chatting.

What Can You Do?

Here are some example prompts to try:

Getting Started:

  • "Is Packet Tracer connected? What version is it?"

  • "What router models can I add?"

  • "What's in my network right now?"

Building Labs:

  • "Add a 2911 router called R1 and a 2960 switch called SW1, and connect them"

  • "Give R1 a serial card so I can do a WAN link"

  • "Build two routers with a serial link between them and a PC behind each one"

Configuration & Testing:

  • "Configure the router interfaces with 192.168.1.1/24 and 10.0.12.1/30 and bring them up"

  • "Add static routes so both LANs can reach each other, then save the configs"

  • "Can PC1 ping PC2? If not, why not?"

  • "Show me R1's routing table and running config"

Learning:

  • "Switch to simulation mode, send a ping from PC1 to PC2, and explain each hop"

  • "Why did the switch flood that frame?"

  • "Show me the IP and Ethernet headers at the router. What changed?"

  • "What does this activity ask me to do?"

Complete Workflow Example:

  1. "Start a new network"

  2. "Add two 2911 routers R1 and R2, each with an HWIC-2T, a 2960 switch, and two PCs"

  3. "Connect R1 and R2 over Serial0/0/0, R1 to the switch, PC1 to the switch, and PC2 directly to R2"

  4. "Address R1's LAN as 192.168.1.0/24, R2's as 192.168.2.0/24, the WAN as 10.0.12.0/30, configure static routes, and save"

  5. "Verify PC1 can reach PC2"

  6. "In simulation mode, send a PDU from PC1 to PC2 and walk me through what R1 does with it"

  7. "Add a note labelling the WAN link, then save the lab to ~/labs/serial-wan.pkt"

System Prompt

If your LLM tool supports a system prompt, this works well:

You are a networking lab assistant for Cisco Packet Tracer, helping a student studying for the CCNA. You can build and configure topologies, verify connectivity, and use simulation mode to show how packets move. Explain what each step does and why. Verify with show commands and pings rather than assuming. On graded activities (.pka files), teach and give hints instead of completing the tasks for the student.

An example agent skill with Packet Tracer-specific conventions is also included.

Crash protection

Some Packet Tracer IPC calls crash the application (it exits and the open network is lost). The one confirmed so far is LogicalWorkspace.getEllipseItemData on 9.0.1. Packet Tracer exposes 4,500+ IPC methods and most have never been exercised, so:

  • The client only sends methods on an allow-list recorded while every tool ran successfully against a live Packet Tracer. Anything else is refused before it reaches Packet Tracer.

  • Known crashing calls are blocked unconditionally.

  • The raw call_ipc_api tool is off by default, and even when enabled it is limited to verified methods unless you also set PT_ALLOW_UNVERIFIED_IPC=true.

Academic integrity

The ExApp file that setup builds deliberately does not request Packet Tracer's ACTIVITY_WIZARD privilege, the one that exposes a .pka activity's answer network, assessment, score, and password hash. Packet Tracer itself refuses those calls, so no client can use this server to pull answers. A test enforces that the privilege stays out.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

For development setup, testing, and code style, see DEVELOPMENT.md.

Troubleshooting

Common Issues

Start with pt-mcp doctor. It checks each step and prints the fix for whatever fails.

"authentication rejected"

The ExApp isn't registered with the key this machine is using. Re-run pt-mcp setup, then in Extensions → IPC → Configure Apps remove any old PT MCP Bridge entry and Add the new .pta.

"Cannot reach Packet Tracer" / nothing listening

Packet Tracer must be running and past the NetAcad login; IPC starts after you log in. Check Extensions → IPC → Options (Start Listening, port). If 39000 is busy (a second instance, or right after a crash), Packet Tracer moves to 39001+, and the server scans for it automatically.

"Refusing to call …: it has not been verified"

That's crash protection working. The tool you used needs an IPC method that hasn't been verified on your Packet Tracer version. Please open an issue with the method name and your Packet Tracer version.

Commands rejected right after adding a module

Adding or removing a module power-cycles the device (Packet Tracer requires it), and unsaved configuration on that device is lost. Save first, and give the device a moment to boot; the tools wait for it automatically.

For more troubleshooting help, see INSTALLATION.md.

Getting Help

Documentation

License

The MCP server portion of this project is licensed under the BSD 2-Clause "Simplified" License. However, it leverages IPC API definitions and data derived from Cisco Packet Tracer itself, which are covered under a proprietary Cisco license.

Available Tools

45 tools
add_circle_annotationAdd a Circle AnnotationA

Draw a circle on the logical workspace, e.g. to group a LAN, mark a broadcast or collision domain, or highlight an OSPF area. Returns the circle's id (get_annotations lists circles as kind "ellipse").

Examples:

  • "Circle the devices in VLAN 10"

  • "Mark each broadcast domain with a circle"

Inputs: center_x (required), center_y (required), color, radius. Returns: result

add_device_to_networkAdd a Device to the NetworkA

Add a device to the logical workspace. Returns the device's name (Packet Tracer assigns one such as 'Router0'; it is renamed to name if given).

Required: device_type (e.g. "router", "switch", "pc", "server"), model (e.g. "2911", "ISR4331", "2960-24TT", "PC-PT", "Server-PT" -- discover via get_device_models). Optional: x/y position, name.

Examples:

  • "Add a 2911 router called R1"

  • "Put a 2960 switch at 300,200"

  • "Add two PCs to the network"

Inputs: model (required), device_type (required), x, y, +1 more. Returns: result

add_line_annotationAdd a Line AnnotationA

Draw a line on the logical workspace, e.g. to separate sites, mark a WAN boundary, or underline a label. Returns the line's id.

Examples:

  • "Draw a red line between the HQ and branch halves of the topology"

  • "Underline the title note"

Inputs: end_x (required), end_y (required), start_x (required), start_y (required), +2 more. Returns: result

add_module_to_deviceAdd a Module to a DeviceA

Install a hardware module (e.g. HWIC-2T for two serial ports, NIM-2T on ISR4000s, HWIC-4ESW, SFPs) into a free slot. The device is powered off for the change and powered back on, so an unsaved running-config on it is lost -- save first if needed. Returns the new port names (e.g. ["Serial0/0/0", "Serial0/0/1"]).

Examples:

  • "Add a serial card to R1 so I can do a WAN link"

  • "Put an HWIC-2T in slot 0/0 of R2"

  • "Add a NIM-2T to the ISR4331"

Inputs: name (required), slot (required), module (required). Returns: result

add_text_noteAdd a Text NoteA

Place a text note on the logical workspace (the "Place Note" tool) -- e.g. subnet labels, "VLAN 10 - Sales", an addressing table, or lab instructions. Returns the note's id.

Examples:

  • "Label the LAN behind R1 as 192.168.1.0/24"

  • "Add a note with the lab objectives at the top"

Inputs: text (required), x, y. Returns: result

configure_deviceConfigure a Cisco DeviceA
Destructive

Apply a block of IOS configuration to a Cisco device, like pasting it into the CLI in global config mode. Accepts output of show running-config as-is: "!" lines, "end", "enable", "configure terminal", "version", and prompt lines are skipped. Indentation does not matter. Returns how many commands were sent and only the ones IOS rejected. save=true runs "write memory" afterwards.

Prefer this over send_cli_command for multi-line configs (VLANs, OSPF, ACLs, interface blocks).

CRITICAL: Changes device configuration. Show the user the config and confirm before applying.

Examples:

  • "Configure OSPF area 0 on R1 for 10.0.0.0/8"

  • "Apply this config to SW1 and save it"

  • "Create VLANs 10 and 20 on the switch and assign Fa0/1-12 to VLAN 10"

Inputs: name (required), config (required), save. Returns: saved, device, errors, commands_sent

configure_host_interfaceConfigure an End-Device InterfaceA
Idempotent

Set IPv4 settings on an end device's port (PC, laptop, server, printer...). Typical port names: 'FastEthernet0' (PC-PT), 'GigabitEthernet0'. For routers and switches use send_cli_command. subnet_mask defaults to 255.255.255.0 when ip_address is given. dhcp=true switches the port to DHCP.

Examples:

  • "Give PC0 192.168.1.10/24 with gateway 192.168.1.1"

  • "Set the server's DNS to 8.8.8.8"

  • "Put PC1 on DHCP"

Inputs: name (required), port (required), dhcp, dns_server, +3 more. Returns: dhcp, ip_address, subnet_mask

connect_two_devicesConnect Two DevicesA

Cable a port on one device to a port on another and return the cable type used. Both ports must exist and be free; use get_interfaces_for_device to find port names. cable="auto" (default) picks like Packet Tracer's GUI: serial for Serial ports, console for console ports, straight-through between a switch and a host/router, crossover between like devices.

Examples:

  • "Connect R1 Gi0/0 to SW1 Gi0/1"

  • "Cable PC0 FastEthernet0 to the switch's Fa0/1"

  • "Add a serial link between R1 Serial0/1/0 and R2 Serial0/1/0"

Inputs: port_a (required), port_b (required), device_a (required), device_b (required), +1 more. Returns: result

create_full_network_topologyCreate a Full Network TopologyA

Build a whole network in one call into the open Packet Tracer file (existing devices are kept). Same format export_network_topology returns, so exports can be rebuilt. Steps run in order: devices (+modules), links, host IP settings, then IOS configs; errors are collected, not fatal.

Format: { "description": "OSPF lab", "devices": [ {"name": "R1", "device_type": "router", "model": "2911", "x": 100, "y": 100, "modules": [{"slot": "0/0", "module": "HWIC-2T"}], "config": "hostname R1\ninterface Gi0/0\n ip address 192.168.1.1 255.255.255.0\n no shutdown"}, {"name": "SW1", "device_type": "switch", "model": "2960-24TT", "x": 300, "y": 100}, {"name": "PC1", "device_type": "pc", "model": "PC-PT", "x": 500, "y": 100} ], "links": [{"device_a": "R1", "port_a": "GigabitEthernet0/0", "device_b": "SW1", "port_b": "GigabitEthernet0/1"}, {"device_a": "PC1", "port_a": "FastEthernet0", "device_b": "SW1", "port_b": "FastEthernet0/1"}], "hosts": [{"name": "PC1", "port": "FastEthernet0", "ip_address": "192.168.1.10", "subnet_mask": "255.255.255.0", "default_gateway": "192.168.1.1"}] } Use full port names. cable defaults to "auto". Discover models with get_device_models and modules with get_device_model_details.

Examples:

  • "Build a 3-router OSPF lab with a LAN behind each router"

  • "Recreate the topology I exported earlier"

  • "Set up a router-on-a-stick lab with two VLANs"

Inputs: topology (required). Returns: links, errors, devices

create_new_networkCreate a New Empty NetworkA
Destructive

Close the current network and start a new, empty one without a save prompt.

CRITICAL: Unsaved changes to the current network are lost. Always ask "Discard the current network?" (or offer save_network_file first) and wait for the user's "yes" before invoking this tool.

Examples:

  • "Start a fresh topology"

  • "Clear the workspace"

Inputs: no named parameters. Returns: result

delete_annotationDelete an AnnotationA
Destructive

Delete a note or drawn shape from the workspace.

CRITICAL: Destructive. Confirm with the user before deleting.

Examples:

  • "Remove the old 'TODO' note"

Inputs: annotation_id (required). Returns: result

delete_device_from_networkDelete a Device from the NetworkA
Destructive

Delete a device and all of its links from the network.

CRITICAL: Destructive and irreversible (the device's configuration is lost). Always ask "Confirm deletion of [device]?" and wait for the user's "yes" before invoking this tool.

Examples:

  • "Delete R2"

  • "Remove the extra switch"

Inputs: name (required). Returns: result

describe_ipc_classDescribe a Packet Tracer IPC ClassA
Read-only

Show an IPC class's inheritance and method signatures, (param types) -> return type plus the ExApp privilege each needs. Use with call_ipc_api.

Examples:

  • "What methods does a Router have for OSPF?" -> class_name="OspfProcess"

  • "How do I read a port's MAC address?" -> class_name="Port", name_filter="mac"

Inputs: class_name (required), name_filter. Returns: object

edit_text_noteEdit a Text NoteB
Idempotent

Replace the text of an existing note.

Examples:

  • "Change the R1 LAN label to 10.1.1.0/24"

Inputs: text (required), annotation_id (required). Returns: result

erase_device_configurationErase a Device's ConfigurationA
Destructive

Erase a Cisco device's startup-config ("write erase") and, by default, reload it so it boots with a blank configuration -- the classic way to reset lab gear. Prompts are answered automatically (the running config is NOT saved before reload).

CRITICAL: Destructive and irreversible. Always ask "Erase the configuration of [device]?" and wait for the user's "yes" before invoking this tool.

Examples:

  • "Wipe R1's configuration"

  • "Reset the switch to factory defaults"

Inputs: name (required), reload. Returns: result

export_network_topologyExport the Network TopologyA
Read-only

Export the open network as a topology object: devices (type, model, position, installed modules, running-config), links, and host IPv4 settings. The result can be fed back to create_full_network_topology, saved as a study reference, or reviewed for mistakes.

Examples:

  • "Export my lab"

  • "Give me a summary of everything in this network including configs"

  • "Back up this topology as JSON"

Inputs: include_configs. Returns: hosts, links, devices, description

get_activity_instructionsGet Activity InstructionsA
Read-only

If the open file is a Packet Tracer activity (.pka, e.g. a NetAcad CCNA lab), return its instruction pages as plain text: objectives, addressing table, and the tasks to complete.

This server cannot read an activity's answers, score or completion percentage (it does not hold Packet Tracer's ACTIVITY_WIZARD privilege). Use Check Results in Packet Tracer for grading. When helping a student, prefer explaining concepts and hinting over doing the graded tasks for them.

Examples:

  • "What does this activity ask me to do?"

  • "Read me the addressing table from the instructions"

  • "Explain task 3 of this lab"

Inputs: no named parameters. Returns: pages, page_count, is_activity

get_annotationsGet Workspace AnnotationsA
Read-only

List the notes and drawn shapes on the logical workspace with their ids, positions and note text.

Examples:

  • "What notes are on my topology?"

  • "Find the label that says 'LAN A'"

Inputs: no named parameters. Returns: result

get_command_historyGet Command HistoryA
Read-only

Return Packet Tracer's command log: commands typed into device terminals (by a person in the CLI tab, or by send_terminal_command/verify_connectivity; send_cli_command and configure_device are not logged), with time, device and prompt (so the mode is visible, e.g. "R1(config-if)#"). Great for reviewing how a lab was solved, spotting a typo, or building a study sheet of the commands used. Most recent last.

Examples:

  • "What commands did I type on R1?"

  • "Make me a cheat sheet from the commands I used in this lab"

  • "Which command did I mistype?"

Inputs: name, limit. Returns: result

get_console_logGet Console Log for a DeviceA
Read-only

Return the device's console/terminal buffer as shown in its CLI tab (or the PC's Command Prompt): boot messages, %LINK/%LINEPROTO and other syslog messages, and recent command output.

Examples:

  • "Show R1's console messages"

  • "Did any interface go down on the switch?"

  • "What happened on PC1's command prompt?"

Inputs: name (required), max_chars. Returns: result

get_device_configurationGet a Device's ConfigurationA
Read-only

Return a Cisco device's running-config (default) or startup-config as text. Useful for reviewing a lab, comparing running vs startup ("did I save?"), or exporting a config to reuse.

Examples:

  • "Show me R1's running config"

  • "Is SW1's startup config the same as its running config?"

Inputs: name (required), source. Returns: config, device, source

get_device_model_detailsGet Device Model Details (Slots and Modules)A
Read-only

Show a device's expansion slots (installed module and its ports, or empty) and every module model it supports with Packet Tracer's description. Use before add_module_to_device.

Examples:

  • "What modules can I add to R1?"

  • "Which slots on the 2911 are free?"

  • "Does this router have serial interfaces?"

Inputs: name (required). Returns: model, slots, device, supported_modules

get_device_modelsGet Available Device ModelsA
Read-only

List the device models Packet Tracer offers for a device type. Use one of these model strings with add_device_to_network.

Examples:

  • "Which router models can I add?"

  • "List the available switch models"

  • "What PC models does Packet Tracer have?"

Inputs: device_type (required). Returns: result

get_devices_in_networkGet All Devices in the NetworkA
Read-only

List every device in the active Packet Tracer network: name, IPC class, model, device type, power state and logical-workspace x/y position. Packet Tracer's auto-created power distribution device is hidden unless include_infrastructure=true.

Examples:

  • "What devices are in my Packet Tracer network?"

  • "List all routers and switches"

  • "Show me the topology"

Inputs: include_infrastructure. Returns: result

get_interfaces_for_deviceGet Interfaces for a DeviceA
Read-only

List a device's ports: name, IPC class, link/protocol state, MAC, IPv4 address/mask (host ports), and the remote port name if a cable is attached.

Examples:

  • "What interfaces does R1 have?"

  • "Which ports on the switch are connected?"

  • "Show PC0's IP address"

Inputs: name (required). Returns: result

get_pt_informationGet Packet Tracer InformationA
Read-only

Connect to Cisco Packet Tracer over IPC and report its version, the IPC API spec in use, device/link counts, workspace mode (logical/physical, realtime/simulation) and the open file. Call this first to confirm the connection works.

Examples:

  • "Is Packet Tracer connected?"

  • "What version of Packet Tracer is running?"

  • "How many devices are in my network?"

Inputs: no named parameters. Returns: file, link_count, pt_version, server_uid, +4 more

get_simulation_event_detailsGet Simulation Event DetailsA
Read-only

Explain one Simulation-mode event the way Packet Tracer's PDU Information window does: the device's OSI-layer decisions in plain English ("The frame destination MAC address is not in the MAC table. The Switch floods the frame...") plus the inbound and outbound headers decoded field by field (Ethernet, 802.1Q, IP, ICMP, ARP, TCP/UDP, STP, OSPF, DHCP, ...). Great for learning why a packet was forwarded or dropped.

Examples:

  • "Why was event 2 dropped?"

  • "What does the switch do with the frame at event 1?"

  • "Show me the IP and Ethernet headers of the ping"

Inputs: index (required). Returns: time, index, source, status, +7 more

get_simulation_eventsGet Simulation EventsA
Read-only

List Simulation-mode events (the Event List): time, the device the PDU is at, where it came from, protocol, and what happened (sent, accepted, dropped, buffered...).

Examples:

  • "Where did the ping go?"

  • "Show only the ARP events"

  • "Did any packet get dropped?"

Inputs: limit, start, protocol. Returns: result

open_network_fileOpen a Network FileA
Destructive

Open a .pkt (network) or .pka (activity) file. Returns Packet Tracer's result code.

CRITICAL: Replaces the open network; unsaved changes may be lost. Confirm with the user first.

Examples:

  • "Open ~/labs/ospf.pkt"

  • "Load the activity file I downloaded"

Inputs: path (required). Returns: result

remove_module_from_deviceRemove a Module from a DeviceA
Destructive

Remove the module in a slot. The device is power-cycled; cables on the module's ports are removed.

CRITICAL: Destructive. Confirm with the user ("Remove the module in [slot] of [device]?") first.

Examples:

  • "Take the serial card out of R1 slot 0/0"

Inputs: name (required), slot (required). Returns: result

rename_deviceRename a DeviceA
Idempotent

Change a device's display name (the name used by all other tools). This does not change the IOS hostname; use send_cli_command with "hostname X" for that.

Examples:

  • "Rename Router0 to R1"

  • "Call PC0 'Accounting-PC'"

Inputs: name (required), new_name (required). Returns: result

reset_simulationReset the SimulationA

Clear the Simulation-mode event list and restart simulation time (Reset Simulation). Device configurations are not changed.

Examples:

  • "Clear the event list"

  • "Start the simulation over"

Inputs: no named parameters. Returns: result

save_device_configurationSave a Device's ConfigurationA
Idempotent

Save a Cisco device's running-config to startup-config ("write memory" / "copy run start") so it survives a reload or power cycle. Returns true when IOS reports [OK].

Examples:

  • "Save R1's config"

  • "Make sure all my changes on SW1 survive a reload"

Inputs: name (required). Returns: result

save_network_fileSave the Network to a FileA

Save the current network as a .pkt file at an absolute path, without a dialog. Overwrites an existing file at that path. Returns the saved path.

Examples:

  • "Save this topology to ~/labs/campus.pkt"

  • "Back up the network"

Inputs: path (required). Returns: result

send_cli_commandSend CLI Command to a Cisco DeviceA
Destructive

Send IOS commands to a Cisco device (router, switch, multilayer switch, ASA, WLC...) and return each command's status and output. Works even before the device finishes booting (boot is skipped).

  • Separate multiple commands with newlines.

  • config_command=false (default): privileged exec mode (e.g. "show ip interface brief").

  • config_command=true: configuration mode -- DO NOT include "enable", "configure terminal" or "end". Sub-modes carry over, so "interface Gi0/0\nip address 10.0.0.1 255.255.255.0\nno shutdown" works.

  • status is "invalid"/"incomplete"/"ambiguous" when IOS rejected a command.

CRITICAL: Can modify device state. Review commands carefully before executing, especially when config_command=true.

Examples:

  • "Run 'show ip route' on R1"

  • "Configure Gi0/0 on R1 with 10.0.0.1/24 and bring it up"

  • "Show the running config of SW1"

Inputs: name (required), commands (required), config_command. Returns: result

send_simple_pduSend a Simple PDU (ICMP)A

Create a Simple PDU (the envelope tool: an ICMP echo) from one device to another. In Simulation mode, step_simulation then moves it hop by hop and get_simulation_events shows where it went -- including any ARP it triggers. Returns the PDU's index in the user-created PDU list.

Examples:

  • "Send a ping PDU from PC1 to the server and watch it"

  • "Show me how ARP works between PC1 and R1"

Inputs: source (required), destination (required). Returns: result

send_terminal_commandSend Command to an End-Device TerminalA

Type one command into a device's terminal and collect its output -- for PCs, laptops and servers this is the Desktop > Command Prompt ('ping 10.0.0.1', 'ipconfig /all', 'tracert 8.8.8.8', 'arp -a'). Output is collected until Packet Tracer reports the command ended or the timeout passes; pings in Realtime mode take a few seconds.

Examples:

  • "Ping 192.168.1.1 from PC0"

  • "Run ipconfig on the laptop"

  • "Traceroute from PC1 to the server"

Inputs: name (required), command (required), timeout. Returns: output, status, completed

set_device_powerSet Device PowerA
Idempotent

Power a device on or off. Powering off a Cisco device discards its unsaved running-config.

Examples:

  • "Turn off R1"

  • "Power on all the switches"

Inputs: name (required), power_on (required). Returns: result

set_interface_powerSet Interface PowerA
Idempotent

Administratively enable or disable a port at the physical level (like plugging/unplugging the port's power in Packet Tracer). For IOS 'shutdown'/'no shutdown' use send_cli_command.

Examples:

  • "Disable PC0's FastEthernet0"

Inputs: name (required), port (required), power_on (required). Returns: result

set_network_descriptionSet the Network DescriptionA
Idempotent

Set the network file's description (shown in Packet Tracer under File > Network description / Info). Handy for lab notes, objectives, or an IP addressing table.

Examples:

  • "Describe this lab as 'CCNA 2 - OSPF single area practice'"

  • "Put the addressing table in the network description"

Inputs: description (required). Returns: result

set_simulation_modeSwitch Realtime/Simulation ModeA
Idempotent

Switch Packet Tracer between Simulation mode (enabled=true: time advances only when stepped, every packet is recorded) and Realtime mode (enabled=false). Returns the resulting mode. Switching back to Realtime clears the event list, so read events/details first.

Examples:

  • "Switch to simulation mode so I can watch the ping"

  • "Go back to realtime"

Inputs: enabled (required). Returns: result

step_simulationStep the SimulationA

Advance (or rewind) Simulation mode by N steps, like clicking Capture/Forward. Returns the simulation time, total event count and how many new events were recorded.

Examples:

  • "Step the simulation forward 5 times"

  • "Go back one step"

Inputs: steps, direction. Returns: object

verify_connectivityVerify Connectivity (Ping Test)A
Read-only

Ping each destination from a device (PC/server Command Prompt or a Cisco device) and report sent/received/ loss per destination. A destination that loses everything is retried (ARP resolution and STP on fresh switch links make the first ping fail). Raw output is included only for failures. The standard way to verify a CCNA lab end to end.

Examples:

  • "Can PC1 reach its gateway, the server and the other LAN?"

  • "Verify connectivity from PC1 to 192.168.1.1, 192.168.2.10 and 8.8.8.8"

  • "Is my static routing working?"

Inputs: source (required), destinations (required), attempts. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 45 tools

    Disambiguation4/5

    Most tools have clearly distinct resource/action targets, especially around devices, links, annotations, files, and simulation. A few boundaries overlap slightly: send_cli_command, configure_device, and send_terminal_command all send commands, though the descriptions explain when to use each.

    Naming Consistency5/5

    All tool names use consistent snake_case verb_noun phrasing such as get_devices_in_network, add_device_to_network, delete_link, and set_simulation_mode. Variants like get_interfaces_for_device and get_device_model_details are still predictable and readable.

    Tool Count2/5

    The 45-tool surface is very large for an MCP server and exceeds the expected range even for a broad Packet Tracer automation domain. While many tools are justified, the set could likely be consolidated into fewer higher-level operations.

    Completeness4/5

    Coverage is strong across topology building, device configuration, interfaces, links, modules, annotations, files, and simulation workflows. Minor gaps remain, such as repositioning existing devices or reading back some workspace metadata like the network description, but core lifecycles are well covered.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers