Packet Tracer MCP
Provides tools to control Cisco Packet Tracer through its native PTMP/IPC interface, enabling creation of network devices and links, IOS and PC IPv4 configuration, running real ping tests, saving and opening .pkt files, and exporting the native topology as a PNG.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Packet Tracer MCPCreate two PCs connected to a 2960 switch, set IPs, ping between them, and save as lab.pkt"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Packet Tracer MCP
Control Cisco Packet Tracer from an MCP client through its native PTMP/IPC interface. Create devices and links, configure IOS and PC addresses, run real ping tests, save .pkt files, and export the native topology as a PNG.
Python 3.10+, no runtime dependencies, no desktop automation. Packet Tracer itself must be installed, running and authenticated through its normal workflow. This is an independent project, not a Cisco product.
What is verified
Live-tested on Windows with Packet Tracer 8.0.0.0212.
The MCP stdio flow covers initialization, 14 tool definitions, native device creation, cabling, addressing, IOS configuration, ping,
.pktsave/reopen and PNG export.A separate two-VLAN SVI example verifies communication with routing enabled, isolation with routing disabled, and communication again after restoration.
Python/protocol tests run without Packet Tracer. Compatibility with other Packet Tracer versions, macOS and Linux has not been live-tested. Python portability does not guarantee native IPC compatibility.
Related MCP server: pktctl
Quick start
git clone https://github.com/YanamiAnnaForensic/packet-tracer-mcp.git
cd packet-tracer-mcp
python run_server.py --helpYou can run directly from the checkout. Package installation is optional: python -m pip install . provides the packet-tracer-mcp command.
1. Generate local ExApp credentials
Packet Tracer accepts registered external applications (ExApps). Use its included meta utility to generate a manifest:
python run_server.py setup --pt-home "C:\Program Files\Cisco Packet Tracer 8.0" --pt-version 8.0The command prints the paths of packet-tracer-mcp.pta and connection.json, without printing the secret. By default they live under %LOCALAPPDATA%\PacketTracerMCP on Windows, ~/Library/Application Support/PacketTracerMCP on macOS, or $XDG_CONFIG_HOME/packet-tracer-mcp (~/.config fallback) on Linux. Re-running setup reuses existing credentials.
2. Register the manifest
In Packet Tracer, use Extensions → IPC → Configure Apps → Add, choose the generated .pta, and confirm. Exit Packet Tracer normally once so its settings persist, then restart it. Confirm that IPC is enabled and uses port 39000.
Alternatively, for Windows Packet Tracer 8.0 only, close Packet Tracer normally and run:
python run_server.py setup --pt-home "C:\Program Files\Cisco Packet Tracer 8.0" --register-user-configThis adds only the manifest entry to the user PT.conf, creates a timestamped backup, and leaves installation files unchanged. It refuses to run while PacketTracer.exe is running. Existing options and other registered apps are retained. It does not enable IPC if your settings disabled it. Details and undo instructions: Registration.
3. Check the connection
python run_server.py statusExpected: connected: true, the installed version and the current device count. If setup used --output-dir, set PT_MCP_CONFIG to that directory's connection.json before starting the server.
4. Add to an MCP client
Replace the Python command and script path with absolute paths on your computer. The client launches this process over stdio:
{
"mcpServers": {
"packet-tracer": {
"command": "python",
"args": ["C:/path/to/packet-tracer-mcp/run_server.py", "serve"]
}
}
}If the MCP client cannot resolve python, use the absolute Python executable path. A generic example is in examples/mcp-client.json. Client-specific configuration formats may differ.
Tools
Tool | Function |
| Connection, version and device count |
| Device names, models and type codes |
| Create an empty workspace |
| Open a local |
| Save |
| Add a PC, router, 2960 switch or 3560 multilayer switch |
| Connect exact port names with straight/crossover cables |
| Set a PC's IPv4 address, mask and gateway |
| Run IOS config lines and optionally |
| Return real output from a single IOS |
| Read real PC address output |
| Return actual replies and sent/received/lost statistics for every attempt |
| Advance simulator time |
| Return a native PNG as MCP image content; optionally save it |
Tool descriptions are bilingual. Mutations are serialized against Packet Tracer's active workspace. Opening/replacing a populated workspace requires discard_current=true. File replacement requires overwrite=true. Tools do not retry network mutations automatically after a transport failure; inspect the actual state before retrying.
pt_configure_ios enters global configuration mode automatically. Supply only commands that would follow configure terminal. Syntax errors stop the operation and return the command transcript; previously accepted commands remain applied. pt_ping may retry after address learning, but every attempt's real output is retained and reported. An unsuccessful or unparseable ping is never synthesized into success.
pt_topology_png exports the native logical workspace. It is not a screenshot of a CLI dialog or the desktop. Some native labels may overlap in Packet Tracer's export.
Example
First save your active Packet Tracer project. Choose a new output filename in an existing directory:
python examples/vlan_svi.py --output "C:\labs\demo.pkt" --replace-workspaceThis builds a small, independent VLAN10/VLAN20 SVI topology through real MCP calls, checks cross-VLAN ping, and saves .pkt and .png outputs. --replace-workspace explicitly discards the current workspace; omit it when starting from an empty one. The example refuses existing output files.
For a connection-only example, run python examples/stdio_client.py.
Configuration
Environment variable | Meaning / default |
| Path to local |
| Override ExApp credentials |
| IPC host; defaults to |
| IPC port; defaults to |
| Per-IPC-call timeout in seconds; defaults to |
All paths refer to the computer running the MCP server. Keep connection.json, .pta and PT.conf backups private. The .pta also contains the local secret. PTMP's MD5 authentication is required by Packet Tracer; this connection is not an encrypted transport. Use local IPC with Packet Tracer's Allow Remote Applications disabled.
Development
python -m pip install -e .
python -m unittest discover -s tests -vTests cover fragmented/binary PTMP frames, Unicode, authentication, disconnects, reply matching, configuration backups, MCP handshake and tool validation. See contributing, protocol notes, and test evidence.
Credits and license
MIT, copyright YanamiAnnaForensic. See LICENSE.
The PTMP implementation was informed by Cisco's PTMP specification, the installed Cisco IPC framework, pktctl and PT Python examples. See NOTICE.md. No Cisco binaries, SDK archives, third-party API index, account credentials or course assignments are distributed.
Available Tools
14 toolspt_configure_iosADestructive
Run IOS config lines in order, stop on syntax errors, optionally write memory. Supply commands after configure terminal. / 按顺序执行全局配置命令并可保存。
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Save startup configuration; default true. / 保存启动配置,默认是。 | |
| device | Yes | Router or switch name. / 路由器或交换机名称。 | |
| commands | Yes | One IOS command per element; global configuration mode is entered automatically. / 每项一条命令,自动进入全局配置。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the operation non-read-only and destructive, and the description usefully adds that commands run in order, stop on syntax errors, and optionally write memory. It does not explain whether prior commands remain applied after a syntax error or what output is returned, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the main operation, with failure behavior and the save option stated early. The bilingual duplication adds length without adding new meaning, but the overall structure remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The annotations and full parameter schema cover safety and inputs, and the description explains ordering and syntax-error handling. However, for a destructive tool with no output schema, it does not describe return behavior or partial-application consequences after an error, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents device, commands, and save. The description adds only limited parameter context: that commands are global configuration lines supplied after configure terminal, and that memory may optionally be written.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: run IOS configuration lines in order, stop on syntax errors, and optionally write memory. It is clearly a device-configuration tool, but it does not explicitly contrast itself with sibling tools such as pt_show, pt_ping, or pt_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by saying to supply commands after configure terminal and that commands are run in global configuration mode. However, it gives no explicit when-to-use guidance, exclusions, or named alternatives among the available sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_connect_devicesB
Connect two available ports using a straight/crossover cable. / 连接两个空闲端口。
| Name | Required | Description | Default |
|---|---|---|---|
| cable | No | Cable type; default straight. / 线缆类型,默认直通。 | |
| port_a | Yes | First exact port name. / 端口一。 | |
| port_b | Yes | Second exact port name. / 端口二。 | |
| device_a | Yes | First device. / 设备一。 | |
| device_b | Yes | Second device. / 设备二。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the agent knows this mutates state. The description adds the 'available ports' precondition, which is real value, but it does not say whether an existing link is replaced, what error occurs if a port is busy, or whether the link is persisted to the saved topology.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence (duplicated bilingually) with the action and the cable dimension front-loaded. No filler; the only cost is the redundant bilingual repetition which consumes space without adding information for an English-reading agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should carry the return/error story, and it does not: it says nothing about what is returned on success or what happens on a busy/invalid port. For a five-parameter mutation tool this leaves a meaningful gap, though the core intent is conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters including the cable enum with its 'default straight' note are already documented in the schema. The description's mention of straight/crossover adds nothing beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (connect) and resource (two ports on two devices) plus the cable-type dimension, so the action is unambiguous. It is clearly differentiated from siblings like pt_topology_png or pt_ping, though it doesn't explicitly contrast with other configuration tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Two available ports' implies a precondition (both ports must be free), which is useful context. However, there is no guidance on prerequisites (device existence, port naming), no mention of what to do if a port is already connected, and no named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_create_deviceC
Add a named PC, router or switch with native IPC. / 通过原生接口添加设备。
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Workspace x coordinate. / 横坐标。 | |
| y | Yes | Workspace y coordinate. / 纵坐标。 | |
| kind | Yes | Device kind. / 类型。 | |
| name | Yes | Unique device name. / 唯一名称。 | |
| model | No | Optional exact model, e.g. 2911, 2960-24TT, 3560-24PS, PC-PT. / 可选型号。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the mutation profile is covered. The description adds only the opaque phrase 'native IPC' and does not explain the non-idempotent consequence — e.g. what happens on a duplicate name, whether the device count/topology changes visibly, or whether an open simulated network is required. With annotations present the bar is lower, but almost nothing beyond them is contributed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, with no padding. The bilingual duplication roughly doubles the length but is a formatting convention rather than filler, and the content is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should say what the call returns (e.g. a device identifier or updated topology state) — it does not. For a mutation tool that requires four parameters including workspace coordinates, omitting the prerequisite of an open network and the post-call effect leaves a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are documented in the schema, and this establishes a baseline of 3. The description adds only that the device is 'named' and restates the kind categories the enum already lists (and even misses multilayer_switch). No extra semantics about coordinate units or model defaults are offered beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: adding (creating) a named PC, router or switch. This clearly separates it from sibling operations like pt_connect_devices, pt_list_devices, and pt_configure_ios. It stops short of naming an alternative, and it omits the 'multilayer_switch' kind that the enum allows, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus pt_new_network/pt_open_network, nor any stated prerequisite that a workspace must already exist and be open. The word 'native IPC' hints at an execution environment but does not tell the agent the conditions for a successful call. The agent must infer the workflow entirely from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_fast_forwardA
Advance simulator time for boot, STP or command completion. / 推进仿真时间。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations establish that this is a non-read-only, non-idempotent, non-destructive operation. The description adds useful context that it advances simulator time to allow boot, STP, or command completion, but it does not explain whether the call blocks, how much time advances, or what happens on return.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core action. The bilingual duplication adds length without extra semantic detail, but overall it is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with annotations and no output schema, the description covers the basic purpose but leaves important behavioral details implicit, such as whether it returns immediately or after completion. It is minimally adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to clarify. The baseline for zero parameters is 4, and the description does not introduce confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Advance simulator time') and lists concrete purposes: boot, STP, and command completion. It is clearly distinct from sibling tools like pt_ping or pt_status, though it does not explicitly name a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for boot, STP or command completion' implies when the tool is useful, but it does not explicitly say when to invoke it versus checking status or waiting. No alternatives or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_list_devicesBRead-onlyIdempotent
List device names, models and type codes. / 列出设备名称、型号及类型。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds that the call surfaces three specific attributes, which is modestly useful given there is no output schema, but says nothing about completeness, ordering, or whether an empty result is possible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely short and front-loaded with the core verb and resource, with the returned attributes following immediately. The bilingual duplication adds length without new information for most readers, but it is a deliberate locale affordance rather than noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, read-only enumeration tool with rich annotations and no output schema, the description covers the essentials by naming the attributes returned. Missing only edge-case context such as result ordering or behavior on an empty topology.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool applies. The description correctly implies no filtering or scope arguments are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List devices') and further specifies the returned fields (names, models, type codes), which separates it from mutation siblings like pt_create_device. It does not explicitly contrast with potentially overlapping read siblings such as pt_show or pt_status, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use or when-not-to-use guidance and names no alternative tool. An agent must infer that this is the discovery/enumeration step, likely before pt_connect_devices or pt_create_device, entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_new_networkADestructive
Create an empty network; occupied workspace requires explicit discard_current. / 新建空网络,替换现有网络须明确指定。
| Name | Required | Description | Default |
|---|---|---|---|
| discard_current | No | Discard the current workspace without saving. / 放弃当前工作区。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds the crucial detail of what is destroyed (the existing network is replaced) plus the safety interlock requiring an explicit discard flag. This is real added value beyond the annotations, though the failure behavior when discard_current is omitted is only implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the action and immediately follows with the conditional constraint. No filler, and the bilingual restatement adds no ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with full schema coverage and destructive annotations, the description supplies the essential replacement semantics and the guard condition. Only the outcome when discard_current is false on an occupied workspace is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description goes further by stating the condition under which discard_current must be set, giving the parameter operational meaning rather than just a definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create an empty network") and clarifies the replacement scope. It does not name the sibling pt_open_network, which is the obvious alternative for working with an existing network, so the distinction is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage rule: if the workspace is occupied, discard_current must be explicitly set. It lacks explicit when-not guidance or a named alternative (e.g., use pt_open_network to load an existing file), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_open_networkBDestructive
Open a local .pkt, replacing the occupied workspace only when requested. / 打开本地pkt。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute local .pkt path. / 本机pkt绝对路径。 | |
| discard_current | No | Discard current workspace. / 放弃当前工作区。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotent, so the safety profile is known. The description usefully qualifies the destruction as opt-in via "only when requested," adding real context, but it says nothing about failure behavior (nonexistent path, invalid .pkt, occupied workspace with discard_current=false) or whether unsaved work is silently lost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and short enough to scan in one pass. The trailing Chinese duplicate (打开本地pkt。) is redundant with the English for an agent that already parsed the first clause, though it costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter workspace-replacing operation with no output schema, an agent still needs to know the return/confirmation shape and the exact failure mode when the workspace is occupied. Those gaps are meaningful, though the annotations and full schema coverage carry most of the load.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both `path` and `discard_current` are documented in the schema itself. The description's "replacing the occupied workspace only when requested" reinforces the discard_current semantics but adds no format, path-resolution, or default behavior detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Open a local .pkt" gives a specific verb plus resource, and "replacing the occupied workspace only when requested" scopes the mutation. It is distinguishable from pt_new_network (create) and pt_save_network (save) by implication, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "only when requested" implies a conditional path (opt-in discard) but never states when to pick this over pt_new_network or pt_save_network, nor what happens if the workspace is occupied and discard is not requested. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_pc_ipconfigBRead-onlyIdempotent
Read real PC ipconfig output. / 读取PC实际ipconfig输出。
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | PC name. / PC名称。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds only the nuance that output is 'real' device data rather than simulated, but says nothing about failure modes when the named device is absent or offline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and nothing wasted. The bilingual duplication is a presentation convention rather than padding, so length remains appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A one-parameter read tool with full annotations needs little more, and 'ipconfig output' implies the return content. Still missing is any note on device-name validity or what happens on an unknown/offline device, which an agent would want before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'device' is documented as 'PC name'. The description adds no meaning beyond the schema, such as requiring the name to match an existing topology device; baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: read the actual ipconfig output of a PC. That distinguishes it from generic siblings like pt_show or pt_ping, though it doesn't explicitly name which sibling to use for adjacent config-reading tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to prefer this over pt_show or other inspection tools, no prerequisites (e.g., device must exist / be powered on), and no exclusions. Usage is only implied by the tool name and the word 'ipconfig'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_pingA
Run PC ping and retain actual output for every attempt. Advances simulator time while waiting. / 执行真实PC ping,保留每次结果并推进仿真时间。
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | Source PC. / 源PC。 | |
| timeout | No | Seconds per attempt. / 每次超时秒数。 | |
| attempts | No | Attempts; retry after address learning. / 测试次数。 | |
| destination | Yes | Destination IPv4 address. / 目标IPv4。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false; the description usefully adds that every attempt's actual output is retained and that simulated time advances (consistent with a non-read-only, non-idempotent call). It stops short of covering output shape or blocking duration at the max timeout x attempts bound.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-loaded with the core action and the most surprising behavior (time advancement). The bilingual duplication adds length but is a systemic convention rather than filler prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param tool with full schema coverage, no output schema, and complete annotations, the description supplies the one thing structured data cannot: that results are preserved per attempt and simulation clock advances. Nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so device/destination/timeout/attempts are already documented. The description adds only a light gloss on attempt semantics ('retain actual output for every attempt') without explaining address-learning retries or timeout interaction beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Run PC ping') plus two distinctive traits: per-attempt output retention and simulator time advancement. An agent can tell this apart from pt_show/pt_pc_ipconfig, though the description never names a sibling or clarifies the source-device scope explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — the mention that it 'advances simulator time while waiting' hints it is a blocking/simulated operation versus pt_fast_forward, but the description never says when to prefer this over pt_show or pt_pc_ipconfig for connectivity checks, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_save_networkADestructive
Save the active network as .pkt; overwrite is explicit. / 保存当前网络,覆盖须明确指定。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute .pkt output path; parent must exist. / pkt输出路径。 | |
| overwrite | No | Replace an existing output. / 覆盖已有文件。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the mutation profile is known. The description adds genuine context beyond that: that overwriting must be explicitly requested rather than defaulting, which tells the agent how to avoid data loss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, zero waste, with the key safety fact (explicit overwrite) front-loaded alongside the core action. The bilingual duplication does not add length in substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter save operation with full schema coverage and annotations covering safety, the description supplies what is missing, notably the overwrite-explicitness rule and parent-directory constraint. Nothing critical is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both path and overwrite are fully documented in the schema, including the absolute-path and parent-exists constraint. The description adds only the explicit-overwrite framing, which is a marginal increment over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (save) and resource (active network) plus the output format (.pkt). It is clearly distinct from pt_new_network and pt_open_network, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Overwrite is explicit" communicates that replacing an existing file requires deliberate action, which is a useful usage cue. However, there is no guidance on when to choose this versus pt_new_network/pt_open_network, so the when-to-use logic is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_set_pc_ipv4CDestructive
Configure a PC's static IPv4 address, mask and gateway. / 配置PC静态地址、掩码、网关。
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Host port; default FastEthernet0. / PC接口。 | |
| device | Yes | PC name. / PC名称。 | |
| address | Yes | IPv4 address. / IPv4地址。 | |
| gateway | Yes | IPv4 gateway in the same subnet. / 同网段网关。 | |
| netmask | Yes | Dotted subnet mask. / 子网掩码。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the agent knows this mutates state, but the description adds nothing beyond that: it never says existing addressing is overwritten, whether the interface is brought up, or what happens on failure. For a destructive mutation with no output schema, this leaves real gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and nothing extraneous. The bilingual duplication is a locale convention rather than padding, though it is still literal repetition of the same content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent five-parameter mutation with no output schema, the definition covers what gets set but not the effect on existing configuration, error behavior, or verification path. Adequate to invoke correctly, thin on outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are documented in the schema itself, including the default port FastEthernet0 and the same-subnet gateway constraint. The description only restates address/mask/gateway at a high level, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Configure') and resource ('PC's static IPv4 address, mask and gateway'), so an agent can tell at a glance that this sets L3 PC addressing. It does not differentiate from nearby siblings such as pt_configure_ios or pt_pc_ipconfig, which could look similar to a naive reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus pt_configure_ios (device CLI config) or pt_pc_ipconfig (read back config), and no prerequisites such as the PC existing or the gateway needing to be in-subnet. The only hint at usage is the parameter-level 'same subnet' note in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_showARead-onlyIdempotent
Run one IOS show command and return its real output. / 返回show命令实际输出。
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | Router or switch name. / 设备名。 | |
| command | Yes | Single show command, e.g. show vlan brief. / 单条show命令。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds that the returned output is the device's 'real output,' which usefully signals it is live data rather than a canned response, but it says nothing about failure modes (unreachable device, unsupported command) or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence (plus a bilingual mirror) with zero waste, front-loaded on the action and the result. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries some burden of explaining returns, and it does so only as 'real output' without stating the format. For a two-parameter read-only tool with full annotation coverage, however, it is nearly complete; the small gap is return-format detail rather than anything blocking correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented with examples ('show vlan brief'). The description's 'single show command' merely restates the schema constraint and adds no format or syntax guidance beyond it; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: run one IOS show command and return its output. This is clearly a read-only inspection tool, distinct in spirit from pt_configure_ios, but the description never names a sibling or explicitly contrasts with the config-mutation tool, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase 'one IOS show command' — the agent must infer that this is for read-only inspection and that only show commands are valid. No when-not conditions or alternatives (e.g., pt_configure_ios for changes) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_statusARead-onlyIdempotent
Read native IPC connection status and Packet Tracer version. / 查看连接状态与版本。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds value by naming what is returned (connection status and version) and clarifying that the check is over a local native IPC channel rather than a network endpoint, which reinforces the openWorldHint=false claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names both outputs; nothing wasted. The bilingual restatement adds length without new information, which is the only reason it isn't a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, non-destructive probe with no output schema, the description covers the essentials: what it checks and what it reports. A brief note on what the status values look like (e.g., connected/disconnected) would make it complete, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing the description could add about argument meaning. Schema coverage is 100% trivially.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and two concrete resources (IPC connection status, Packet Tracer version), which cleanly separates it from every sibling tool (network/device operations). It is not tautological and an agent can identify the operation immediately. It loses a point only because 'native IPC' is jargon that isn't expanded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — an agent would call this to verify connectivity or check the PT version — but the description never states when to call it, nor explicitly notes that it is the only status/version probe among the siblings. Since no real alternative exists in the tool set, the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pt_topology_pngADestructive
Return a native workspace PNG as MCP image content; optionally save it. / 返回原生拓扑PNG,可另存。
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional local .png output; parent must exist. / 可选png保存路径。 | |
| overwrite | No | Replace an existing PNG. / 覆盖已有图片。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the 'optionally save it' phrase explains why a read-like tool can mutate disk (overwriting an existing PNG). Beyond that, the description omits prerequisites (e.g., whether an open workspace/network is required), what happens when path exists without overwrite, and characteristics of the returned image.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses with the primary behavior front-loaded and the optional save noted second; no filler. Minor deduction for the vague 'native workspace' phrasing, which spends words without adding precision in English.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter tool with full schema coverage, annotations, and no output schema, the description covers the essential contract: it returns image content and can write a file. Missing only prerequisites and overwrite-failure semantics, which for this simple an interface are small gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both path and overwrite are documented with constraints (parent must exist, replace existing PNG). The description adds only the high-level 'optionally save' framing, which maps to the same parameters but contributes no syntax or format detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action plus output format (return a PNG as MCP image content) and the optional save behavior, which is enough to tell it apart from siblings like pt_save_network or pt_show. The English text says 'native workspace PNG' rather than explicitly naming it as the topology diagram, leaving a small ambiguity that the tool name and the Chinese half resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, prerequisite, or alternative guidance; the usage is only implied by the name and the 'optionally save it' clause. No sibling does the same job, so the risk of confusion is low, but the description does not tell the agent under what conditions to reach for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.1.1- First observed
pt_configure_ios - First observed
pt_connect_devices - First observed
pt_create_device - First observed
pt_fast_forward - First observed
pt_list_devices - First observed
pt_new_network - First observed
pt_open_network - First observed
pt_pc_ipconfig - First observed
pt_ping - First observed
pt_save_network - First observed
pt_set_pc_ipv4 - First observed
pt_show - First observed
pt_status - First observed
pt_topology_png
TDQS
Scored across 14 tools
Each tool targets a distinct resource or action: topology export, IPC status, device listing, network lifecycle, device creation/connection, PC IPv4, IOS configuration, show output, ipconfig, ping, and time advancement. The only near-overlap is pt_ping versus pt_fast_forward, but their purposes are clearly separated by the descriptions.
All tools use a consistent pt_ prefix and snake_case, making the namespace predictable. There is minor variation between verb-led names (list_devices, create_device, configure_ios) and noun/state names (status, topology_png, pc_ipconfig), but the pattern remains readable.
Fourteen tools is well-scoped for a Packet Tracer automation server, covering connection, topology, device, configuration, and simulation operations without excessive fragmentation. Each tool appears to earn its place.
The surface covers network creation/open/save, device creation, connecting devices, configuration, and verification. However, there is no tool to delete devices or disconnect links, and no tool to list available ports/interfaces, which is a notable gap because pt_connect_devices requires knowing free ports.
Maintenance
Related MCP Connectors
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Interact with a global network measurement platform.Run network commands from any point in the world
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
AI network lab: build and validate real multi-vendor router and switch labs from a prompt.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables automation of Cisco Packet Tracer simulations by placing devices, connecting links, and generating IOS configurations via MCP, ideal for network coursework and demonstrations.231MIT
- AlicenseBqualityAmaintenanceDrives a running Cisco Packet Tracer over its native IPC protocol (PTMP): build and cable topologies, configure IOS, test with ping and simulation mode, and reach the whole IPC API through 72 tools.723MIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to design Cisco Packet Tracer labs from a device/link spec — cables, IPs, VLANs, routing and DHCP — and generate ready-configured .pkt files, .pka activities and SVG previews without opening Packet Tracer. It also exposes primitives to add, edit and inspect devices, services, ACLs and NAT in existing lab files.GPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to drive Cisco Packet Tracer 8.x in the background, building topologies, auto-selecting cables so links come up green, running device CLI commands, reading back configuration, and exporting .pkt files without dialogs or stealing window focus.MIT