Skip to main content
Glama

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

list_lab_devices

Show the inventory the server can reach.

send_command

Run a read-only show command on one device.

run_health_check

Health bundle against one device or the whole lab.

get_ospf_neighbors

OSPF neighbor state (right command per platform).

get_bgp_summary

BGP summary state (right command per platform).

configure_device

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)

make up-host (then ollama pull qwen3:8b yourself)

The real EVE-NG lab

docs/real-lab.md

Change port / model / inventory

copy .env.example.envdocs/configuration.md

Read-only (hide the write tool)

make readonly

Stop everything

make down

Port 8000 already in use? Set MCPO_PORT in .env. More fixes in docs/troubleshooting.md.

Related MCP server: nornir-mcp-server

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-mcp

Verify 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 seesconfigure_device prints a one-time code to the server console; a human reads it back, so the model can't self-approve.

  • Read-only is one flagPACKET_CODERS_ALLOW_WRITES=false hides 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

Develop

uv run --extra dev pytest
uv run --extra dev ruff check .
Install Server
F
license - not found
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/E-Conners-Lab/Packet-Coders-Demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server