
MCP server for programmatic control of PNETLab network labs — 31 tools for labs, nodes, links, configs, live console (read+write), and backup/restore.
概览
Give Claude (or any MCP client) programmatic control of a PNETLab network-emulation lab — build topologies, wire links, push device configs, and boot the lab, all from natural language. An MCP (Model Context Protocol) server that exposes PNETLab lab operations as tools an LLM agent can call. Ask Claude to "build me a two-router OSPF lab with a PC on each side and boot it" and it will create the lab, add the nodes, cable them, inject startup-configs, and start everything — driving the same PNETLab API the web UI uses. It is a — same tool names and shapes — but the client speaks session-bound API instead of EVE-NG's path-addressed REST API. The stock EVE-NG MCP server does work against a PNETLab box; this fork bridges the gap. Verified against a live server. PNETLab is a popular fork of EVE-NG, but it quietly replaced EVE-NG's clean REST API with a model borrowed from its Laravel front-end: - You , then (which binds it to your server-side session).
README
以下为原文 README 节选,完整内容请查看原文。
PNETLab MCP Server
Give Claude (or any MCP client) programmatic control of a PNETLab network-emulation lab — build topologies, wire links, push device configs, and boot the lab, all from natural language.
An MCP (Model Context Protocol) server that exposes PNETLab lab operations as tools an LLM agent can call. Ask Claude to “build me a two-router OSPF lab with a PC on each side and boot it” and it will create the lab, add the nodes, cable them, inject startup-configs, and start everything — driving the same PNETLab API the web UI uses.
It is a drop-in-compatible fork of eveng-mcp-server — same tool names and shapes — but the client speaks PNETLab’s session-bound API instead of EVE-NG’s path-addressed REST API. The stock EVE-NG MCP server does not work against a PNETLab box; this fork bridges the gap. Verified against a live PNETLab 5.3.x server.
Table of contents
- Why this exists
- Features
- How PNETLab differs from EVE-NG
- Requirements
- Installation
- Configuration
- Register with an MCP client
- Tool reference
- Worked examples
- Gotchas & hard-won lessons
- Troubleshooting
- Architecture
- Development & testing
- Project status
- License
Why this exists
PNETLab is a popular fork of EVE-NG, but it quietly replaced EVE-NG’s clean REST API with a session-bound model borrowed from its Laravel front-end:
- You log in, then open exactly one lab (which binds it to your server-side session).
- Every subsequent operation targets that open lab via
/api/labs/session/*— there is no way to address a lab by path in the URL. - Lab/folder listing and teardown live in a separate Laravel “store” admin API (
/store/...,/api/folders).
The consequence: tooling written for EVE-NG’s API returns 404s and empty topologies against PNETLab. This server re-implements the client to speak PNETLab’s dialect, while keeping an EVE-NG-style lab_path argument on every tool so agents (and humans) don’t have to think about session binding. The client tracks which lab is open and re-binds only when lab_path changes.
Features
安装
This server does not publish a one-line install command.
Open the repository installation guide 新手?先看 mcpskill.org 教程 →配置
{
"mcpServers": {
"pnetlab": {
"command": "python",
"args": ["-m", "pnetlab_mcp_server"],
"env": {
"PNETLAB_HOST": "https://pnetlab.example",
"PNETLAB_USERNAME": "mcp-user",
"PNETLAB_PASSWORD": "pnet",
"PNETLAB_VERIFY_SSL": "true"
}
}
}
}