EVE-NG MCP Server
An MCP (Model Context Protocol) server that gives Claude and other LLM agents programmatic access to EVE-NG network labs.
Create, configure, and manage virtual network topologies through natural language — no manual clicking in the EVE-NG web UI required.
Features
- Lab management — Create, list, get details, and delete labs
- Node operations — Add nodes from any installed template, start/stop individually or all at once
- Configuration push — Push startup configs to nodes before boot
- Network connectivity — Create networks and connect node interfaces
- Image discovery — List all available QEMU/Docker images on the server
Requirements
- Python >= 3.10
- An EVE-NG server (Community or Professional) with API access
- An MCP-compatible client (Claude Desktop, Claude Code, etc.)
Installation
# From source
git clone https://github.com/axiom-works-ai/eveng-mcp-server.git
cd eveng-mcp-server
pip install -e .
# With dev dependencies (for testing)
pip install -e ".[dev]"
Configuration
The server reads connection details from environment variables:
| Variable | Default | Description |
|---|---|---|
EVENG_HOST |
http://192.168.122.10 |
EVE-NG API base URL |
EVENG_USERNAME |
admin |
API username |
EVENG_PASSWORD |
eve |
API password |
Usage
Claude Desktop
Add to your Claude Desktop MCP configuration (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"eveng": {
"command": "eveng-mcp-server",
"env": {
"EVENG_HOST": "http://192.168.122.10",
"EVENG_USERNAME": "admin",
"EVENG_PASSWORD": "eve"
}
}
}
}
Claude Code
Add to your Claude Code settings (.claude/settings.json):
{
"mcpServers": {
"eveng": {
"command": "eveng-mcp-server",
"env": {
"EVENG_HOST": "http://192.168.122.10",
"EVENG_USERNAME": "admin",
"EVENG_PASSWORD": "eve"
}
}
}
}
Direct (stdio)
export EVENG_HOST=http://192.168.122.10
export EVENG_USERNAME=admin
export EVENG_PASSWORD=eve
eveng-mcp-server
Or run as a Python module:
python -m eveng_mcp_server
Available Tools
Lab Management
| Tool | Description |
|---|---|
list_labs |
List all labs on the server |
get_lab |
Get lab details with nodes, networks, and topology |
create_lab |
Create a new lab |
delete_lab |
Delete a lab |
Node Operations
| Tool | Description |
|---|---|
add_node |
Add a node to a lab (specify template, RAM, CPU, interfaces) |
start_node |
Start a single node |
stop_node |
Stop a single node |
start_all |
Start all nodes in a lab |
stop_all |
Stop all nodes in a lab |
get_node_status |
Get node status and details |
Configuration
| Tool | Description |
|---|---|
push_config |
Push startup configuration to a node |
get_node_config |
Get a node's current startup configuration |
Network Connectivity
| Tool | Description |
|---|---|
connect_nodes |
Connect two node interfaces via a shared network |
Discovery
| Tool | Description |
|---|---|
list_images |
List all installed QEMU/Docker images |
Example Conversation
You: Create a lab called "OSPF Demo" with two Arista vEOS switches connected together, then push basic OSPF configs to both.
The agent will:
- Call
create_labto create "OSPF Demo" - Call
list_imagesto find the vEOS template - Call
add_nodetwice to add two vEOS switches - Call
connect_nodesto link their interfaces - Call
push_configon each node with OSPF configuration - Call
start_allto boot the lab
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linter
ruff check src/ tests/
EVE-NG API Notes
- The EVE-NG API uses session cookies (not bearer tokens) — the client authenticates once and reuses the session.
- Lab paths use URL-encoded filesystem paths (e.g.,
/api/labs/My%20Lab.unl). - Node status codes:
0= stopped,1= building,2= running. - Startup configs should be pushed while the node is stopped.
License
Apache-2.0 — see LICENSE for details.
Author
Metadata
Release files for eveng-mcp-server 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eveng_mcp_server-0.1.0.tar.gz | 16.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eveng_mcp_server-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.0 kB
Release files / eveng_mcp_server-0.1.0.tar.gz
| Download URL | eveng_mcp_server-0.1.0.tar.gz |
|---|---|
| Size | 16.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
317c81e89261819a7e02784fb00afd5df383070cf8c1346aacf4358f76ffe2ed
|
|
BLAKE2b-256 checksum How to use checksums |
fdd24377b1bb43a516b3e3f113506edc7d15c10ce480403ecc03c3be47e41499
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / eveng_mcp_server-0.1.0-py3-none-any.whl
| Download URL | eveng_mcp_server-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d937a8622b6c9802d67f3089e3e92486b66438465e49b250e5b3041fdd36637b
|
|
BLAKE2b-256 checksum How to use checksums |
d30e9dd9e09ddd641b6e46a3228ae2a4f4af879f53a86c1f6ccda2b159102b11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|