NetMap — Network Diagram MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NETMAP_MCP_PORT | No | Local WebSocket port the bridge listens on. Must match the URL configured in NetMap's Settings → Integrations → AI Agent (MCP). | 47821 |
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 |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| map_get_stateA | Return the current map state: all nodes, manual connections, stickies and notes. NOTE: only manual connections are included — use map_get_all_connections to also get auto-generated connections (DNS→server, project→server, service→node). |
| map_add_nodeB | Add a new node to the map. Returns the new node id. |
| map_update_nodeA | Update fields of an existing node by id. FIELD SCHEMA BY NODE TYPE All types: name, ip, x, y, w, h, notes ips: [{address, label}] — extra IP addresses server / pc / nas / ap / camera / printer / router / switch / firewall / other: ports: [{port, protocol("tcp"|"udp"|"icmp"), service, url, bindIp}] dockerServices: [{name, image, hostPort, containerPort, protocol("tcp"|"udp"), url}] project: parentServer — id of the parent server node (creates auto-connection) repoUrl — Git/GitLab URL deployPath — deployment directory cicdUrl — CI/CD pipeline URL dockerServices (same as server) domain (DNS Zone): ip — registrar name (e.g. "Cloudflare") registrarUrl — registrar control panel URL domains: [{name, record("A"|"AAAA"|"CNAME"|"MX"|"TXT"|"NS"|"SRV"), target, url}] target IP in 'target' triggers auto-connection to matching server node service (External Service): provider — provider name (e.g. "Supabase", "Vercel") dashboardUrl — link to service dashboard serviceConns: [{toId, label}] — links to other nodes (creates auto-connections) servedDomains: [string] |
| map_delete_nodeA | Delete a node and all its connections. |
| map_add_connectionA | Add a manual connection between two nodes. Returns the new connection id. |
| map_delete_connectionB | Delete a connection by id. |
| map_add_stickyA | Add a sticky note to the map. Returns the new sticky id. |
| map_move_nodeA | Move a node to new canvas coordinates without changing any other fields. |
| map_move_stickyA | Move a sticky note to new canvas coordinates without changing its text or color. |
| map_clearA | Remove all nodes, connections and stickies from the current sheet. |
| map_arrangeB | Auto-arrange all nodes in a grid or circle layout. |
| map_update_connectionA | Update label or color of an existing connection. |
| map_update_stickyC | Update text, color or size of a sticky note. |
| map_delete_stickyA | Delete a sticky note by id. |
| map_list_sheetsA | List all sheets with their id, name, createdAt, updatedAt and which is active. |
| map_get_sheet_dataA | Return nodes/connections/stickies/notes for a specific sheet (defaults to active sheet). |
| map_create_sheetA | Create a new empty sheet and switch to it. Returns new sheet id. |
| map_switch_sheetA | Switch the active sheet. Saves current sheet state first. |
| map_rename_sheetB | Rename a sheet. |
| map_delete_sheetA | Delete a sheet. Cannot delete the last remaining sheet. |
| map_set_zoomA | Set canvas zoom level (0.1–3.0). |
| map_set_canvas_offsetA | Pan canvas to an absolute pixel offset. |
| map_zoom_to_fitA | Auto-fit all nodes into the viewport by adjusting zoom and pan. |
| map_get_notesB | Return the sheet-level notes text. |
| map_set_notesA | Set the sheet-level notes text. |
| map_lock_sheetA | Lock or unlock a sheet. A locked sheet rejects all MCP mutations and disables manual editing in the UI. Pass locked: false to unlock. |
| map_get_settingsA | Return current app settings (sshMode, dblClickAction, perfMode, showGrid, showZoomSlider). |
| map_update_settingsB | Update one or more app settings. |
| map_get_all_connectionsA | Return all connections including auto-generated ones (DNS→server, project→server, service→node). Auto connections have auto:true flag. Use this instead of map_get_state.connections when you need the full topology picture. |
| map_get_viewA | Return current canvas zoom level and pan offset. |
| map_find_nodeA | Search nodes by name, IP, type, or free-text query. Returns id, name, type, ip, x, y for each match. Use this to locate a node before updating it. |
| map_searchA | Full-text search across nodes (name/ip/notes), stickies, connection labels, and ports (port-number/service). Returns categorized hits with a total count. Use map_find_node for structured node-only filtering. |
| map_import_nmapA | Parse nmap scan output (XML from |
| map_suggest_layoutA | Smart auto-layout: force-directed (organic, deterministic with seed), cluster-by-type (horizontal lanes per node type), or cluster-by-connection (BFS components → separate zones). Different from map_arrange (naive grid/circle). Mutates node positions in-place. |
| map_import_csvA | Import nodes from CSV. Auto-detects columns from the header row (name/ip/type/ports/notes — case-insensitive, aliases like hostname/description/host_ip accepted). Ports field accepts 'port/protocol,port/protocol' (e.g. '22/tcp,80/tcp') or bare port numbers (default tcp). Nodes laid out in a 6-column grid. Returns {count, ids}. |
| map_get_nodes_by_typeA | Return all nodes of a given type with FULL field data (ports, dockerServices, domains, ips, notes, parentServer, etc.). For stripped projection or multi-criteria filtering use map_find_node instead. |
| map_import_sheetA | Replace active sheet content with provided JSON data. Useful for loading a prepared topology in one call. |
| map_export_sheetA | Export sheet data as JSON including auto-connections. Defaults to active sheet. |
| map_exportA | Export current or specified sheet as JSON / PNG / PDF. PNG and PDF return base64-encoded blobs with mimeType — the client decodes and saves to a file. Server raises the response timeout to 30s for PNG/PDF since large maps can take several seconds to render. |
| map_duplicate_nodeA | Clone a node with all its properties (ports, services, domains, etc.). Returns new node id. |
| map_get_selectionA | Return currently selected node/sticky ids and connection id. Result shape: { nodeIds: string[], nodeId: string|null (= nodeIds[0], legacy single-id), connId: string|null }. |
| map_selectA | Programmatically select node(s)/sticky(s) and/or a connection. Pass node_ids (array) for multi-select; node_id (string) is legacy single-select. Empty array or null deselects. Connection selection remains single (multi-select connections out of scope v1). |
| map_bulk_add_nodesA | Add multiple nodes in a single call. Each node accepts the same fields as map_add_node plus all type-specific fields (ports, dockerServices, domains, parentServer, etc.). Returns array of created ids. |
| map_bulk_add_connectionsA | Add multiple connections in a single call. Returns array of created ids. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 44 tools
While descriptions are detailed, several tools overlap in purpose: map_get_state, map_get_sheet_data, map_export_sheet, and map_export all return map data; map_arrange and map_suggest_layout both auto-layout; map_find_node, map_search, and map_get_nodes_by_type all query nodes. Explicit notes clarify some boundaries, but an agent could easily choose the wrong tool without careful reading.
All tools share the 'map_' prefix and use snake_case throughout, with most following a verb_noun pattern (map_add_node, map_delete_connection). Minor deviations include bare verbs like map_clear, map_arrange, map_search, and map_export, but these are limited and the overall pattern is predictable.
At 44 tools, the server is significantly over the typical range for an MCP server. While the domain is broad, many tools could be consolidated (e.g., map_get_state vs map_get_sheet_data, map_arrange vs map_suggest_layout) to reduce cognitive load. The high count feels heavy even with the expansive feature set.
The tool surface is remarkably comprehensive, covering full CRUD for nodes, connections, stickies, and sheets, plus view management, settings, search, import (CSV, nmap, JSON), export (JSON/PNG/PDF), layout algorithms, selection, and bulk operations. The domain of network diagram management is well-served with no major dead ends.