packet-tracer-mcp について
packet-tracer-mcpは、ローカルブリッジとネイティブIPC APIを介してCisco Packet Tracer 9を操作する実験的なMCPサーバーです。ライブトポロジーの編集、デバイス設定、検査、シミュレーションに対応します。
主な機能
- 01ネットワークトポロジーの作成と編集
- 02CLIによるルーターとスイッチの設定
- 03キャンバス、ポート、VLAN、経路の検査
- 04トポロジーレシピの実行と事前予測
- 05スナップショットの保存とキャンバス差分の比較
- 06シミュレーション操作とスクリーンショット撮影
活用シーン
- 01Packet Tracerのネットワークラボ構築と設定
- 02トポロジーの検査と設定問題の発見
- 03ドキュメント用IOS CLI設定の生成
- 04ネットワークシミュレーションの実行と結果確認
MCP 対応
Streamable HTTPまたはstdioでMCPクライアントに57種類のツールを提供します。Packet Tracer拡張機能がローカルHTTPブリッジを介してサーバーとエディターを接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
packet-tracer-mcp
Cisco Packet Tracer 9.0を外部から制御するModel Context Protocolサーバーです。独自の拡張機能をPTのエディターに接続し、ローカルHTTPブリッジを起動します。そこからMCPサーバーがPTのネイティブIPC APIを呼び出し、トポロジーの作成、ルーターの設定、シミュレーションの実行などを行います。Bun上でTypeScriptを使って記述されています。
警告
実験的なプロジェクトです。 バージョン0.1.0で、私が空き時間に個人的な実験として作成しました。私のPCでPT 9.0.0.0810を対象に動作し、スモークテストにも合格していますが、本番環境で使える状態とは考えないでください。バグ、APIの変更、PTのアップデートによる不具合が起こる可能性があります。試してみる場合は、気づいたことをissueで報告してください。

15倍速のデモ:MCPクライアントがレシピを実行すると、Packet Tracer 9のキャンバスにデバイス、ケーブル、設定が次々と追加されます。
作者:Juan Cordero Pascual · ライセンス:MIT 言語:スペイン語(このファイル) · 英語
目次
Packet Tracer向けMCPをもう1つ作った理由
PT 6.x~8.x向けのプロジェクトは、サードパーティーの署名付き拡張機能から読み込まれるJSライブラリに依存していました。PT 9.0ではこの方法が使えなくなりました。App Meta Files(.pta)はCiscoによるECDSA署名が必要になったため、オープンソースプロジェクトから提供できなくなったのです。残された方法は、外部からPTのwebviewと通信することです。このサーバーはその方法を採用しています。
- PTのExtensionsメニューからインストールする独自の
.pts拡張機能があります。この拡張機能が行うのは、ローカルHTTPブリッジへのポーリングループの起動だけです。 - MCPサーバーが書き込みを必要とするときは、PTのネイティブIPC APIを直接呼び出します。たとえば、
ipc.appWindow().getActiveWorkspace().getLogicalWorkspace().addDevice(...)やgetDevice(...).getCommandLine().enterCommand(...)などです。中間ライブラリも、他の場所からコピーした不透明なJSも使いません。 - PTのScript Engineで実行されるJSはすべて、このリポジトリで生成されます。何が送信されているか確認したい場合は、
src/ipc/を参照してください。
Canvas First の哲学
ほかのツールでは、メモリ内に「plan」オブジェクトを保持して検証し、 最後にシミュレーターへ書き出します。ここではそのようには動作しません。
- メモリ内に
TopologyPlanはありません。 PT にあるものがすべてです。プランはキャンバスです。 - 各レシピは、実行前にキャンバスのスナップショットを再読み込みします。 構築途中のキャンバスに対して同じレシピを2回実行すると、2回目は デバイスを重複させるのではなく、足りないものを完成させます。 意識しなくても冪等に実行できます。
- 検証は内部構造ではなく、実際のキャンバスに対して行います。 問題(重複した IP、異なるサブネットにあるピア、電源が切れたルーター)が 起きた場合、抽象的なグラフではなく PT 上で直接確認できます。
- 永続化するのはプランではなくスナップショットです。 過去の状態に戻るには、 現在のキャンバスと以前のダンプを比較して、変更点を確認します。 魔法のような再水和処理はありません。
詳しくは docs/ARCHITECTURE.md をご覧ください。
要件
- Cisco Packet Tracer 9.0(macOS、Windows、または Linux)。
- Bun
>=1.2。Node だけでは動作しません。コードは TypeScript で、事前のコンパイルなしに Bun で直接実行されます。 - PT に
mcp-bridge.pts拡張機能がインストールされていること。リポジトリ内のextension/dist/にあります。
ヒント
Node ではなく Bun を使う理由は? Bun は
.tsをネイティブに実行でき、 ミリ秒単位で起動し、fetch、HTTP、テストランナーが標準で使えるため、 依存関係をインストールする必要がありません。Node しかない場合は、curl -fsSL https://bun.sh/install | bashで Bun をインストールできます (macOS ではbrew install bunも使えます)。Node と共存でき、互いに干渉しません。
クイックスタート
git clone https://github.com/jcorderop02/packet-tracer-mcp.git
cd packet-tracer-mcp
bun install
bun run start # streamable-HTTP en :39001 (default)
# o bien:
bun run src/index.ts --stdio # modo stdio para clientes MCP que lo prefieran
Packet Tracer 9 で:
Extensions > Scripting > Configure PT Script Modules > Addを選択し、extension/dist/mcp-bridge.ptsを指定します。- 拡張機能を有効にします。
- セッションごとに1回、
Extensions > MCP Bridgeからウィンドウを開きます。
ウィンドウが読み込まれると、ポーリングが自動的に開始されます。すべて正常に
動作していることを確認するには、pt_bridge_status を実行します。1秒以内に
connected: true が返るはずです。
インストール手順の全容は docs/BOOTSTRAP.md をご覧ください。
MCP エンドポイントは次のとおりです。
http://127.0.0.1:39001/mcp
メモ
:39001を使う理由。 PT 9 は、Cisco の署名付きハンドシェイクを使用する 独自のネイティブ IPC(非公開)をすでに:39000で待ち受けています。 競合を避け、MCP サーバーが別のものだと明確にするため、こちらは:39001で待ち受けます。変更する場合は、環境変数PACKETTRACER_MCP_PORTを設定してください。
MCP クライアントを接続する
Claude Code(CLI、推奨)
JSON を編集せず、1行だけで設定できます。
claude mcp add --transport http packet-tracer http://127.0.0.1:39001/mcp
Claude Code 内で /mcp を実行して確認します。packet-tracer と57個のツールが表示されるはずです。
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
(macOS)または使用中の OS に対応するファイルを編集し、Claude Desktop を再起動します。
{
"mcpServers": {
"packet-tracer": {
"url": "http://127.0.0.1:39001/mcp"
}
}
}
Cursor
Settings → MCP → Add new MCP server を選択し、トランスポートに http を指定して
URL http://127.0.0.1:39001/mcp を入力します。
VS Code(Continue / Cline)
クライアントの config.json に次の内容を設定します。
{
"mcpServers": {
"packet-tracer": {
"url": "http://127.0.0.1:39001/mcp"
}
}
}
Gemini CLI
~/.gemini/settings.json を編集します。
{
"mcpServers": {
"packet-tracer": {
"httpUrl": "http://127.0.0.1:39001/mcp"
}
}
}
/mcp list を実行して確認します。
Codex CLI
~/.codex/config.toml を編集します。
[mcp_servers.packet-tracer]
url = "http://127.0.0.1:39001/mcp"
curl でスモークテスト(クライアント不要)
設定を始める前に、サーバーが応答することを確認するには:
curl -sS -X POST http://127.0.0.1:39001/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"1.0"}}}'
serverInfo.name = "packet-tracer-mcp" を含む result が返されます。
2回目の POST で "method":"tools/list" を指定すると、
inputSchema とともに57個のツールが返されます。
単一バイナリにコンパイルする
bun run build
./dist/packet-tracer-mcp
テスト
bun test
単体テストでは、サブネット計算、キャンバスの検査、スナップショットのパーサー、差分、ブループリントの検証、および各レシピの CLI ビルダーを網羅しています。実行時に PT を起動しておく必要はありません。
エンドツーエンドの手順
ブリッジが接続されている場合(pt_bridge_status → connected: true)、一連のセッションはおおよそ次のようになります。
1. pt_list_recipes # confirmar lo disponible
2. pt_forecast recipe='chain' params={routers:3, pcsPerLan:2}
# estimación dry-run, ningún cambio
3. pt_cook_topology recipe='chain'
params={routers:3, pcsPerLan:2, routing:'ospf'}
# construye el lab; idempotente
4. pt_inspect_canvas # findings: IPs duplicadas, etc.
5. pt_explain_canvas # narración legible
6. pt_save_snapshot name='chain-baseline' # captura T-0
7. pt_run_cli device='R1' command='show ip route'
# comprobación rápida desde el CLI
8. pt_diff_snapshots before='chain-baseline'
# qué ha cambiado desde T-0
9. pt_save_pkt path='/abs/path/lab.pkt' # guardar como .pkt nativo
途中で問題が発生した場合、pt_mend_canvas は保守的な修復(ケーブル接続済みなのに電源がオフになっているデバイスの電源を入れるなど)を適用し、変更をためらう項目については通知します。
機能
packet-tracer-mcp は、ドメインごとに分類された 57 個の MCP ツールを公開します。
ブリッジと診断
pt_bridge_status、pt_ping、pt_clear_canvas。
カタログと検出
pt_list_devices、pt_list_modules、pt_list_recipes、
pt_list_snapshots、pt_get_device_details。
ライブワークスペースの検査(読み取り専用)
pt_query_topology、pt_inspect_canvas、pt_explain_canvas、
pt_forecast(レシピのドライラン)、pt_generate_configs(PT に触れずにレシピの IOS CLI をオフラインで生成します。ドキュメント作成、授業、または実機でのラボ再現に便利です)、pt_inspect_ports
(ポートごとの状態:リンク/アップ/プロトコル、MAC、IP/マスク、ワイヤレス)、pt_read_vlans(スイッチごとのライブ VLAN データベース)、pt_read_acl(AclProcess 経由で読み取った設定済み ACL)、pt_show_bgp_routes(show ip bgp を構造化された行にパースします)、pt_read_project_metadata(現在の .pkt の説明/バージョン/ファイル名)。
キャンバスの基本的な編集
pt_add_device、pt_add_module、pt_create_link、pt_delete_device、
pt_delete_link、pt_move_device、pt_auto_layout(キャンバス全体を階層型グリッドに再配置し、トランジットルーターを検出して二段目に配置します)、pt_rename_device、pt_set_pc、
pt_set_device_power(冪等な Device.setPower の切り替え)、
pt_add_canvas_annotation(メモ/線/円)、
pt_manage_clusters(論理クラスターの一覧表示/削除/分解)、
pt_send_raw(緊急用:Script Engine で任意の JS を実行します)。
レシピレベルの編集(オーケストレーション)
pt_cook_topology、pt_mend_canvas、pt_plan_review(ルーターが 3 台以上のトポロジーで必須の事前レビュー)、pt_apply_switching、
pt_apply_services、pt_configure_server_dhcp(ネイティブ IPC API 経由で Server-PT に DHCP サーバーを設定)、pt_configure_subinterface(router-on-a-stick 用の 802.1Q サブインターフェース)、pt_apply_advanced_routing、pt_apply_ipv6、pt_apply_voip、pt_apply_wireless。
永続化(スナップショット)
pt_save_snapshot、pt_load_snapshot、pt_diff_snapshots。スナップショットはキャンバスのダンプとしてディスクに保存されます。読み込んでも何も上書きされず、現在の PT の状態との差分が表示されるため、適用するかどうかは自分で決められます。
ネイティブ .pkt 永続化
pt_save_pkt、pt_open_pkt(サーバーと PT が同じファイルシステムを共有している場合)、および .pkt をネットワーク経由で転送するための pt_save_pkt_to_bytes と pt_open_pkt_from_bytes。圧縮形式の .pkz は機能しません。API JS はメソッドを公開していますが、返されるバイト列は PT 9.0.0.0810 では無効です。
ルーターとスイッチの CLI
pt_run_cli、pt_run_cli_bulk、pt_show_running(省略可能な | section に対応)。
シミュレーションと操作
pt_simulation_mode(Realtime↔Simulation の切り替え)、pt_simulation_play(再生/戻る/進む/リセット)、pt_send_pdu(Simple PDU の送信元を指定)、pt_traceroute、pt_screenshot(ワークスペースの PNG/JPG)。
組み込みレシピ
pt_list_recipes はリストをその場で返します。組み込みレシピは次のとおりです。
| レシピ | 説明 |
|---|---|
chain | N 台のルーターを直列に接続し、それぞれに M 台の PC を含む LAN を接続します。 |
star | N 台の spoke に接続された hub ルーターで、各 spoke に LAN を接続します。 |
branch_office | 1 つまたは 2 つの LAN を持つ本社と、独自の LAN を持つ支店ルーターを構成します。 |
campus_vlan | router-on-a-stick:1 台のルーターと、N 個の VLAN および各 VLAN に M 台の PC を持つ 1 台のスイッチを構成します。 |
edge_nat | PAT、DHCP、ACL、および上流の ISP ルーターを備えたエッジルーターを構成します。 |
dual_isp | エッジルーターで BGP eBGP と HSRP を使用する 2 つの ISP を構成します。 |
voip_lab | CME ルーター、スイッチ、および N 台の IP Phones 7960 を構成します。telephony-service、ephone-dn、voice VLAN、DHCP option-150 をプロビジョニングします。 |
ipv6_lab | OSPFv3 を使用する IPv4 + IPv6 のデュアルスタックを構成します。 |
wifi_lan | ルーター、AccessPoint、ノート PC を構成します。制限あり:PT 9 の公開 JS API では無線の関連付けがトリガーされません(docs/COVERAGE.md を参照)。 |
最初の 3 つは routing: 'static' | 'ospf' | 'eigrp' | 'rip' | 'none' と dhcp: true|false に対応しています。campus_vlan はさらに
startVlanId、vlanStep、lanPool を受け付けます。wifi_lan は
ssid、security、psk、channel を受け付けます。
設定
環境変数(すべて任意):
| 変数 | デフォルト | 意味 |
|---|---|---|
PACKETTRACER_MCP_HOST | 127.0.0.1 | MCP HTTP トランスポートのホストです。LAN からアクセスするには 0.0.0.0 を設定します。 |
PACKETTRACER_MCP_PORT | 39001 | MCP ポートです(PT のネイティブ IPC が使用する :39000 を避けます)。 |
PACKETTRACER_BRIDGE_PORT | 54321 | PT の webview がポーリングするポートです。 |
PACKET_TRACER_SNAPSHOT_DIR | ./packet-tracer-snapshots | 永続化されたスナップショットのディレクトリです。 |
ドキュメント
AGENTS.md— このサーバーを使用する LLM 向けの運用ガイドです。配線の規約(LAN の Gigabit と WAN の serial)、ユーザー LAN とトランジット LAN、作成 + 自動レイアウトの推奨フロー、避けるべき一般的なエラーについて説明します。docs/ARCHITECTURE.md— レイヤー構成(MCP トランスポート、tools、レシピ、IPC ジェネレーター、HTTP bridge)、canvas-first を採用する理由、.pktの永続化、対象範囲外の内容について説明します。docs/BOOTSTRAP.md—.pts拡張機能のインストール、ポーリングの仕組み、.ptsの再構築を希望する開発者向けのセクションについて説明します。docs/COVERAGE.md— 実際の PT 9 で検証済みの内容、その状態(verified-pt9/contract-verified/partial/broken/dead-end)、スモークテストの実行記録への参照、ユーザーに影響するシミュレーターの既知の制限について説明します。docs/TOOLS.md— 57 個の MCP tools のリファレンスです。パラメーター、動作、注記を記載しています。docs/RECIPES.md— recipes(chain、star、branch_office、campus_vlan、edge_nat、wifi_lan、voip_lab、ipv6_lab、dual_isp)のカタログです。パラメーター、例、 期待される結果を記載しています。docs/TROUBLESHOOTING.md— 実際に発生した症状、考えられる原因、修正方法について説明します。以下の FAQ はその要約です。CHANGELOG.md— Keep a Changelog 形式で、各リリースに含まれる内容を記載しています。CONTRIBUTING.md— issue の作成方法、ローカル環境のセットアップ、コードとコミットの規約について説明します。CODE_OF_CONDUCT.md— Contributor Covenant 2.1 です。SECURITY.md— セキュリティポリシーと脆弱性の報告方法について説明します。
プロジェクト構成
src/
bridge/ Bridge HTTP que sondea la webview de PT
canvas/ Snapshot, inspección, diff y aritmética de subnetting
catalog/ Modelos PT (54), alias humanos, tipos de cable
ipc/ Generadores puros string-in/string-out para el IPC nativo
+ persistencia .pkt vía systemFileManager
recipes/ Blueprints, addressing, routing, switching, services,
ipv6, voip, wireless, topologías predefinidas
persistence/ Persistencia de snapshots
tools/ Un fichero por tool MCP; ALL_TOOLS los agrega
config.ts Configuración por entorno
server.ts Ciclo de vida (transporte MCP + bridge)
index.ts Entry-point CLI
extension/ Extensión .pts (módulo PT que arranca el polling)
docs/ Arquitectura, bootstrap y matriz de cobertura
scripts/ smoke.ts (suite de verificación contra PT real)
よくある質問
これは具体的に何をするものですか?
MCP クライアントを使う LLM(Claude、ChatGPT、Gemini など)が、Packet Tracer 9 でトポロジを作成、設定、検証できるようにします。GUI を操作する必要はありません。CCNA/CCNP のラボの準備、演習シナリオの生成、反復作業の自動化に便利です。
Packet Tracer を起動していなくても動作しますか?
キャンバスに触れない読み取り専用の呼び出し(カタログ、レシピの一覧表示、プランの検証)は PT を起動していなくても動作します。トポロジに触れる操作(pt_add_device、pt_cook_topology、pt_run_cli など)には、PT を起動して拡張機能を読み込んでおく必要があります。
対応している Packet Tracer のバージョンを教えてください。
9.0.0.0810 のみです。PT のマイナーバージョンが変わるとネイティブ IPC API も変わるため、このサーバーはこのビルドに合わせて調整されています。それ以前のバージョン(8.x)には最新の Script Engine がないため、動作しません。
Node ではなく Bun を使っているのはなぜですか?
主に利便性のためです。Bun は TypeScript をトランスパイルなしで実行でき、数ミリ秒で起動します(MCP クライアントがサーバーを日に何度も再起動する場合に重要です)。また、bun build --compile を使えば、何もインストールせずに別のマシンへ移動できるスタンドアロンバイナリを作成できます。Node でも動作しますが、この用途では最終的に Bun のワークフローを選びました。
認証機能はありますか?
ありません。信頼できるローカル環境(ループバック)を前提としています。PACKETTRACER_MCP_HOST=0.0.0.0 を設定してポートを LAN に公開する場合、ポートの保護はご自身の責任で行ってください。SECURITY.md をご覧ください。
レシピが応答しなくなった場合はどうすればよいですか?
pt_clear_canvas を呼び出し、パラメーターを減らして(ルーターや VLAN の数を減らして)再試行してください。確実に再現できる場合は、正確なパラメーターを添えて issue を作成してください。詳しくは docs/TROUBLESHOOTING.md をご覧ください。
独自のレシピを追加できますか?
はい。src/recipes/topologies/*.ts のパターンに従って、Blueprint を返す関数をエクスポートし、src/recipes/index.ts に登録してください。CONTRIBUTING.md をご覧ください。
よくあるエラー(簡易回答)
| 症状 | すぐに試せる対処法 |
|---|---|
| MCP クライアントが接続できない | lsof -i :39001 → 何も表示されない場合は、bun run src/index.ts を起動します。 |
pt_bridge_status → connected: false | README の bootstrap を PT のスクリプトエディターに貼り付け、Run を押します。 |
| キャンバスが動かない | ポーリングが停止しています。bootstrap を貼り付け直してください。 |
pt_run_cli が空の結果を返す | 呼び出しを再試行します — terminal length 0 は最初の enable に適用されます。 |
bun install が失敗する | bun --version が 1.2 以上であることを確認し、rm -rf node_modules bun.lock && bun install を実行します。 |
全項目は docs/TROUBLESHOOTING.md をご覧ください。
ステータス
Cisco Packet Tracer 9.0.0.0810 でテスト済みです。
- カタログのモデル 54 / 54 に
verified-pt9のラベルが付いています。 - 57 個の MCP ツールと、それぞれの単体テストがあります。
- 9 個中 8 個のレシピを最初から最後まで検証済みです(
chain、star、branch_office、campus_vlan、edge_nat、dual_isp、voip_lab、ipv6_lab)。9 個目のwifi_lanは、MCP ではなく PT API の制限により途中までしか実行できません。 - エンドツーエンドで検証済みのレイヤー:L2 スイッチング、L3 サービス(NAT、ACL、DHCP)、動的ルーティング(OSPF、BGP、HSRP、EIGRP)、OSPFv3 を使った IPv6、VoIP(CME + ephone-dn)、シミュレーションと運用、
.pktの永続化。
詳細なエビデンス(スモークテストの実行結果、スクリーンショット、既知の制限)は docs/COVERAGE.md にあります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。