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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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_version | Return the GNS3 controller version and whether it runs in local mode. |
| gns3_statistics | Return controller-wide statistics (counts of projects, computes, etc.). |
| iou_license_get | 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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