gns3-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GNS3_TOKEN | No | Pre-issued bearer token (skips login) | |
| GNS3_BASE_URL | No | Controller URL (no /v3) | http://localhost:3080 |
| GNS3_PASSWORD | No | Login password | |
| GNS3_USERNAME | No | Login username | |
| GNS3_HTTP_HOST | No | HTTP bind host | 127.0.0.1 |
| GNS3_HTTP_PORT | No | HTTP bind port | 8080 |
| GNS3_READ_ONLY | No | Disable all mutating tools | false |
| GNS3_TRANSPORT | No | Transport: stdio or http | stdio |
| GNS3_VERIFY_TLS | No | Verify TLS for https | true |
| GNS3_CONSOLE_TIMEOUT | No | Console read timeout (s) | 15 |
| GNS3_DEFAULT_PROJECT | No | Project id used when a tool omits project_id |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gns3_versionA | Return the GNS3 controller version and whether it runs in local mode. |
| gns3_statisticsA | Return controller-wide statistics (counts of projects, computes, etc.). |
| iou_license_getA | Return the configured Cisco IOU license (if any). |
| iou_license_setB | Set the Cisco IOU license. iourc_content is the raw iourc file text. |
| controller_reloadA | Reload the GNS3 controller. Requires confirm=true. |
| controller_shutdownA | Shut down the GNS3 controller process. Requires confirm=true. Destructive. |
| projects_listB | List all projects on the controller (id, name, status). |
| project_getC | Get full details for a project. |
| project_statsB | Get node/link/drawing/snapshot counts for a project. |
| project_lockedC | Return whether the project is currently locked. |
| project_createB | Create a new project. Optionally pin a specific project_id (UUID). |
| project_updateC | Update project attributes (e.g. {"name": "...", "auto_start": true}). |
| project_deleteA | Delete a project permanently. Requires confirm=true. Destructive. |
| project_openB | Open a closed project so its nodes can run. |
| project_closeA | Close an open project (stops nodes, frees resources). |
| project_loadB | Load a project from a .gns3 file path on the controller host. |
| project_duplicateC | Duplicate a project under a new name. |
| project_lockC | Lock a project to prevent topology edits. |
| project_unlockD | Unlock a project. |
| project_exportC | Export a project to a local .gns3project archive at dest_path. |
| project_importC | Import a project from a local .gns3project archive. |
| project_file_readC | Read a text file from inside the project directory. |
| project_file_writeC | Write a text file inside the project directory. |
| nodes_listC | List nodes in a project (id, name, type, status, console). |
| node_getC | Get full details for a single node. |
| node_linksC | List the links attached to a node. |
| node_idlepc_proposalsC | Get Dynamips idle-PC proposals for a node. |
| node_createA | Create a node directly (node_type e.g. vpcs, qemu, docker, dynamips, ethernet_switch). Prefer node_create_from_template when a suitable template exists. |
| node_create_from_templateB | Instantiate a node from a template at canvas position (x, y). |
| node_updateC | Update node attributes (e.g. {"name": "...", "properties": {...}}). |
| node_deleteC | Delete a node from the project. |
| node_duplicateB | Duplicate a node, offset by (dx, dy) on the canvas. |
| node_startD | Start a node. |
| node_stopC | Stop a node. |
| node_suspendD | Suspend a node. |
| node_reloadC | Reload (restart) a node. |
| node_isolateB | Isolate a node: suspend all its links (cut traffic without deleting links). |
| node_unisolateB | Re-enable all links on a previously isolated node. |
| node_console_resetC | Reset the console server connection for a node. |
| nodes_start_allC | Start every node in the project. |
| nodes_stop_allC | Stop every node in the project. |
| nodes_suspend_allC | Suspend every node in the project. |
| nodes_reload_allC | Reload every node in the project. |
| node_idlepc_autoC | Auto-compute a Dynamips idle-PC value for a node. |
| node_file_readC | Read a text file from inside a node's working directory. |
| node_file_writeB | Write a text file into a node's working directory (e.g. startup-config). |
| links_listB | List links in a project (id, endpoints, capture state, filters). |
| link_getC | Get full details for a link. |
| link_available_filtersB | List packet filters available on a link (delay, drop, corrupt, etc.). |
| link_createA | Create a link between two node ports. Use a node's |
| link_updateC | Update a link: set {"suspend": true} or {"filters": {"delay": [50]}} etc. |
| link_deleteC | Delete a link. |
| link_resetC | Reset a link (reconnect both ends). |
| drawings_listC | List drawings (SVG annotations) in a project. |
| drawing_createB | Create a drawing from an SVG string at canvas position (x, y). |
| drawing_updateB | Update a drawing (svg/x/y/z/rotation). |
| drawing_deleteC | Delete a drawing. |
| snapshots_listC | List snapshots of a project. |
| snapshot_createC | Create a snapshot of the current project state. |
| snapshot_restoreC | Restore the project to a snapshot. The current state is overwritten. |
| snapshot_deleteC | Delete a snapshot. |
| templates_listC | List device templates (id, name, type, category). |
| template_getB | Get full details for a template (all properties). |
| template_createC | Create a template. |
| template_updateC | Update a template's attributes. |
| template_deleteC | Delete a template. |
| template_duplicateC | Duplicate a template. |
| computes_listB | List compute servers (id, name, host, connected state, load). |
| compute_getC | Get full details for a compute server. |
| compute_emulator_queryB | Query an emulator on a compute, e.g. emulator='docker' action='images', emulator='virtualbox' action='vms', emulator='vmware' action='vms'. |
| compute_createB | Register a compute server. |
| compute_updateC | Update a compute server's connection settings. |
| compute_deleteC | Unregister a compute server. |
| images_listB | List disk images known to the controller (qemu/ios/iou/docker). |
| image_getA | Get metadata for an image by its path. |
| image_uploadC | Upload a local image file to the controller under image_path. |
| image_installC | Install/register images so templates can use them (optionally one path). |
| image_deleteC | Delete an image by path. |
| images_pruneA | Delete all images not used by any template. Requires confirm=true. |
| appliances_listB | List appliances from the GNS3 catalog. Set update=true to refresh from registry. |
| appliance_getA | Get full details for an appliance (versions, images required). |
| appliance_installC | Install an appliance as a template (optionally a specific version). |
| pools_listC | List resource pools. |
| pool_getC | Get a resource pool. |
| pool_resourcesC | List the resources contained in a pool. |
| pool_createC | Create a resource pool. |
| pool_updateC | Update a resource pool (e.g. rename). |
| pool_deleteC | Delete a resource pool. |
| pool_resource_addC | Add a resource (project/template/compute id) to a pool. |
| pool_resource_removeC | Remove a resource from a pool. |
| whoamiA | Return the currently authenticated user. |
| users_listC | List user accounts. |
| user_getC | Get a user account. |
| user_groupsC | List the groups a user belongs to. |
| groups_listC | List user groups. |
| group_membersC | List members of a user group. |
| roles_listC | List roles. |
| role_privilegesC | List the privileges granted to a role. |
| privileges_listC | List all assignable privileges in the system. |
| acl_listC | List Access Control Entries (ACEs) in the ACL. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| build_lab | Guide building a GNS3 lab topology from a natural-language description. |
| troubleshoot_node | Guide troubleshooting a misbehaving node. |
| snapshot_before_change | Remind to snapshot before a risky change and how to roll back. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| projects_resource | All projects on the controller. |
| templates_resource | All device templates. |
| computes_resource | All compute servers. |
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/Olaw2jr/gns3-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server