# moimran/eveng-mcp architecture

> Architecture diagram of the GitHub repository moimran/eveng-mcp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/moimran/eveng-mcp
- Repository: https://github.com/moimran/eveng-mcp

## Overview

EVE-NG MCP Server exposes network-emulation management through MCP tools, resources, and guided prompts. The main workflow is an MCP client request handled by the server, dispatched to a domain tool, translated by the EVE-NG client wrapper into API operations, and returned as a structured response. Lab, node, and network management remain distinct stages; resources provide a parallel read-oriented view of lab state. The README documents additional capabilities not fully represented in sampled source; links for those are limited to documented server registration and domain paths.

Main entry points: [`eveng_mcp_server/server.py`](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/server.py) (MCP Server), [`eveng_mcp_server/core/eveng_client.py`](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/core/eveng_client.py) (EVE-NG Client), [`eveng_mcp_server/tools/connection.py`](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/connection.py) (Connection Tools), [`eveng_mcp_server/tools/lab_management.py`](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/lab_management.py) (Lab Tools)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mcp["MCP Interface"]
  node_server["MCP Server<br/>[server.py]"]
  node_config["Server Settings<br/>[settings.py]"]
  node_connection_tools["Connection Tools<br/>[connection.py]"]
end

subgraph group_domain["Lab Operations"]
  node_lab_tools["Lab Tools<br/>[lab_management.py]"]
  node_node_tools["Node Tools<br/>[node_management.py]"]
  node_network_tools["Network Tools"]
end

subgraph group_integration["EVE-NG Integration"]
  node_client_wrapper["EVE-NG Client<br/>[eveng_client.py]"]
end

subgraph group_support["Guidance And Resources"]
  node_dynamic_resources["Live Lab Resources<br/>[dynamic.py]"]
  node_static_resources["Help Resources<br/>[static.py]"]
  node_prompts["Workflow Prompts<br/>[workflows.py]"]
end

node_client_actor(("MCP Client"))
node_eveng{{"EVE-NG Server"}}

node_client_actor -->|"sends MCP requests"| node_server
node_server -->|"loads settings"| node_config
node_server -->|"registers tools"| node_connection_tools
node_server -->|"registers tools"| node_lab_tools
node_server -->|"registers tools"| node_node_tools
node_server -->|"registers tools"| node_network_tools
node_server -->|"registers resources"| node_dynamic_resources
node_server -->|"registers resources"| node_static_resources
node_server -->|"registers prompts"| node_prompts
node_connection_tools -->|"calls connection operations"| node_client_wrapper
node_lab_tools -->|"calls lab operations"| node_client_wrapper
node_node_tools -->|"calls node operations"| node_client_wrapper
node_network_tools -->|"calls network operations"| node_client_wrapper
node_dynamic_resources -->|"reads lab state"| node_client_wrapper
node_client_wrapper -->|"calls EVE-NG API"| node_eveng

click node_server "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/server.py"
click node_config "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/config/settings.py"
click node_connection_tools "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/connection.py"
click node_lab_tools "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/lab_management.py"
click node_node_tools "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/node_management.py"
click node_network_tools "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/network_management.py"
click node_client_wrapper "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/core/eveng_client.py"
click node_dynamic_resources "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/resources/dynamic.py"
click node_static_resources "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/resources/static.py"
click node_prompts "https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/prompts/workflows.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_server,node_config,node_connection_tools,node_client_actor toneBlue
class node_lab_tools,node_node_tools,node_network_tools toneAmber
class node_client_wrapper,node_eveng toneMint
class node_dynamic_resources,node_static_resources,node_prompts toneRose
```

## Components

### MCP Interface

- [MCP Server](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/server.py): `eveng_mcp_server/server.py`
- [Server Settings](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/config/settings.py): `eveng_mcp_server/config/settings.py`
- [Connection Tools](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/connection.py): `eveng_mcp_server/tools/connection.py`

### Lab Operations

- [Lab Tools](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/lab_management.py): `eveng_mcp_server/tools/lab_management.py`
- [Node Tools](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/node_management.py): `eveng_mcp_server/tools/node_management.py`
- [Network Tools](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/tools/network_management.py): `eveng_mcp_server/tools/network_management.py`

### EVE-NG Integration

- [EVE-NG Client](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/core/eveng_client.py): `eveng_mcp_server/core/eveng_client.py`

### Guidance And Resources

- [Live Lab Resources](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/resources/dynamic.py): `eveng_mcp_server/resources/dynamic.py`
- [Help Resources](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/resources/static.py): `eveng_mcp_server/resources/static.py`
- [Workflow Prompts](https://github.com/moimran/eveng-mcp/blob/master/eveng_mcp_server/prompts/workflows.py): `eveng_mcp_server/prompts/workflows.py`

### Other components

- **MCP Client**
- **EVE-NG Server**

## Connections

- MCP Client → MCP Server: sends MCP requests
- MCP Server → Server Settings: loads settings
- MCP Server → Connection Tools: registers tools
- MCP Server → Lab Tools: registers tools
- MCP Server → Node Tools: registers tools
- MCP Server → Network Tools: registers tools
- MCP Server → Live Lab Resources: registers resources
- MCP Server → Help Resources: registers resources
- MCP Server → Workflow Prompts: registers prompts
- Connection Tools → EVE-NG Client: calls connection operations
- Lab Tools → EVE-NG Client: calls lab operations
- Node Tools → EVE-NG Client: calls node operations
- Network Tools → EVE-NG Client: calls network operations
- Live Lab Resources → EVE-NG Client: reads lab state
- EVE-NG Client → EVE-NG Server: calls EVE-NG API
