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 |
Capabilities
Features and capabilities supported by this server
| 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 | |
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/den-indance/network-diagram-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server