packet-coders-mcp
The packet-coders-mcp server enables an LLM to interact with and manage network labs (mock or real EVE-NG), offering tools for device visibility, diagnostics, and guarded configuration.
list_lab_devices— Retrieve the full inventory of lab devices the server can reach, without exposing credentials.send_command— Execute a read-onlyshow/displaycommand on a specific device; configuration commands are blocked at the tool level.run_health_check— Run basic health diagnostics on a single device or across the entire lab.get_ospf_neighbors— Fetch OSPF neighbor state using the correct platform-appropriate command automatically.get_bgp_summary— Fetch BGP summary state using the correct platform-appropriate command automatically.configure_device— Push configuration lines to a device with strong safety guardrails: dry-run is enabled by default, and actually applying changes requiresdry_run=falseplus an out-of-band confirmation code that the model never sees (a human must read it from the server console).
Additional capabilities include operating in mock mode (no physical hardware needed), connecting to a live EVE-NG environment, and compatibility with Claude Code, Claude Desktop, Ollama, and vLLM with Open WebUI.
Provides tools to manage Cisco IOS, IOS-XE, and NX-OS network devices via SSH, including sending show commands, running health checks, retrieving OSPF and BGP neighbor states, and pushing configuration changes.
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-coders-mcp run a health check on the lab"
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.
From Chat to MCP: A Network Engineer's MCP Lab
A compact demo MCP server (FastMCP) that lets an LLM safely drive a network lab. Runs in mock mode with no hardware, or against a real EVE-NG lab by swapping one inventory file. Works from Claude Code, Claude Desktop, or a fully local LLM stack (Ollama / vLLM).
Tool | Purpose |
| Show the inventory the server can reach. |
| Run a read-only show command on one device. |
| Health bundle against one device or the whole lab. |
| OSPF neighbor state (right command per platform). |
| BGP summary state (right command per platform). |
| Push config — gated by an out-of-band confirm code (read-only is one flag). |
Quickstart (Docker)
Spins up the whole stack — chat UI, lab tools, and a local model — with one command.
git clone https://github.com/E-Conners-Lab/Packet-Coders-Demo.git
cd Packet-Coders-Demo
docker compose up # first run pulls images + the qwen3:8b model (a few minutes)Open http://localhost:3000 (no login) → Settings → Integrations → add
http://localhost:8000 as a tool server → set the model's Function Calling → Native →
ask "list the lab devices." Defaults to the mock lab (no hardware needed).
Want… | Do this |
Faster on a Mac (host Ollama, Metal GPU) |
|
The real EVE-NG lab | |
Change port / model / inventory | copy |
Read-only (hide the write tool) |
|
Stop everything |
|
Port
8000already in use? SetMCPO_PORTin.env. More fixes in docs/troubleshooting.md.
Related MCP server: meraki-dashboard-api
Connect a client
Point any MCP client at the server (start with the mock inventory). Full per-client steps — Claude Code, Claude Desktop, Ollama / vLLM + Open WebUI — are in docs/clients.md.
# Claude Code, from the repo root:
claude mcp add packet-coders-lab \
--env PACKET_CODERS_INVENTORY="$PWD/configs/inventory.mock.yaml" \
-- uv run --project "$PWD" packet-coders-mcpVerify with claude mcp list, then ask it to list_lab_devices.
Safety
A demo, not a production change tool. Strongest guardrails:
Writes need an out-of-band code the model never sees —
configure_deviceprints a one-time code to the server console; a human reads it back, so the model can't self-approve.Read-only is one flag —
PACKET_CODERS_ALLOW_WRITES=falsehides the write tool entirely.Hosts that confirm each call (Claude Desktop / Code) can use their own approval instead — set
PACKET_CODERS_REQUIRE_CONFIRM_CODE=false.
Don't point it at production. Full model: docs/safety.md.
Docs
docs/clients.md — connect Claude Code / Desktop / Ollama / vLLM + Open WebUI
docs/real-lab.md — inventory model + EVE-NG setup + keeping creds private
docs/configuration.md — every
.envknob + native (no-Docker) rundocs/topology.md — the four-switch reference lab (OSPF + eBGP)
docs/safety.md — full guardrail model
docs/troubleshooting.md — common errors and fixes
Develop
uv run --extra dev pytest
uv run --extra dev ruff check .Available Tools
6 toolsconfigure_deviceADestructive
Apply config lines to a lab device, with dry-run enabled by default.
Inputs: device_name (required), commands (required), dry_run, confirm. Returns: object
get_bgp_summaryARead-only
Read BGP summary from a lab device using a platform-appropriate command.
Inputs: device_name (required). Returns: object
get_ospf_neighborsARead-only
Read OSPF neighbors from a lab device using a platform-appropriate command.
Inputs: device_name (required). Returns: object
list_lab_devicesARead-only
List lab devices available to this MCP server without returning secrets.
Inputs: no named parameters. Returns: object
run_health_checkARead-only
Run basic health checks against one device, or all devices when omitted.
Inputs: device_name. Returns: object
send_commandARead-only
Run one read-only show/display command on a lab device.
Inputs: device_name (required), command (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool targets a distinct operation: configure_device for config, get_bgp_summary and get_ospf_neighbors for specific routing info, list_lab_devices for device enumeration, run_health_check for overall health, and send_command for generic show commands. No overlapping purposes.
All tool names follow a consistent verb_noun pattern with underscores (e.g., configure_device, get_bgp_summary, list_lab_devices). No mixing of conventions or irregular naming.
With 6 tools, the set is well-scoped for a network lab management server. Each tool covers a core need without redundancy or excessive specialization.
The tool set covers essential lifecycle operations: listing devices, configuring, retrieving BGP/OSPF status, health checks, and a generic command. Minor gaps include missing support for other routing protocols, but send_command provides a fallback.
Maintenance
Related MCP Connectors
MCP server for network documentation, generated by doc2mcp.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
MCP compatibility and transport verification server.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP server that allows LLMs to create, configure, validate, and explain Cisco Packet Tracer network topologies. It provides a comprehensive suite of tools for generating deployment scripts, CLI configurations, and automated network troubleshooting.1,494 PyPI377MIT
- FlicenseCqualityDmaintenanceA read-only MCP server for the Cisco Meraki Dashboard API that exposes 50 GET endpoints for understanding network topology from organization down to individual devices and ports.50-

Network Sketcherofficial
AlicenseAqualityBmaintenanceLocal-first MCP server that lets AI agents design Cisco-style networks and generate L1/L2/L3 topology diagrams, device tables, and AI-ready context files.1612417Apache 2.0- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables operating network devices through chat, using netmiko for SSH/Telnet connections with command allowlists, enable password support, and configuration-change tools (disabled by default).MIT