{"_id":"@den.dance/network-diagram-mcp","_rev":"9-bc66359ef9f54983fce78647e6fbb061","name":"@den.dance/network-diagram-mcp","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@den.dance/network-diagram-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"url":"https://den.dance/","name":"Denys Malieiev"},"license":"MIT","_id":"@den.dance/network-diagram-mcp@1.0.0","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"homepage":"https://map.den.dance/","bin":{"network-diagram-mcp":"index.js"},"dist":{"shasum":"36f97b6c18653241b2212e6a92c74f074a501c5f","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.0.0.tgz","fileCount":7,"integrity":"sha512-trsZuQgcMoEKyRee8hSN6QT2Ojcf9/y8uC5dXCNLGewVMSici18jxujMjpTHgphsVboO6Vi7QVbvUG2U6Nc8kA==","signatures":[{"sig":"MEUCIC1EgFAcfvPZnh347cOZaMiAUtoEzqxkjuTfV13XUVRsAiEAiEAtIOGahFFGeco2WHzQIchTVlzHW7yAqFQ16qKIcpI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41043},"main":"./index.js","type":"module","engines":{"node":">=18.0.0"},"scripts":{"start":"node index.js"},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"_npmVersion":"10.8.2","description":"Visual network topology editor with AI agent integration via MCP. One-click SSH + web-service access from any node, nmap/CSV import, smart auto-layout, multi-sheet, local-first. Open-source successor to netViz (CA Technologies, 1990-2012).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/network-diagram-mcp_1.0.0_1779338711277_0.9936856891451333","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@den.dance/network-diagram-mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"url":"https://den.dance/","name":"Denys Malieiev"},"license":"MIT","_id":"@den.dance/network-diagram-mcp@1.0.1","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"homepage":"https://map.den.dance/","bin":{"network-diagram-mcp":"index.js"},"dist":{"shasum":"c13f83d9d043e567b48f1ba9a49f92795d7fc680","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.0.1.tgz","fileCount":8,"integrity":"sha512-7idNKraaMUvDUhEs3RSnR98MFYZvXeSKtmTWxobMRbhhoEwGyjb/og1REuiOK0iOfWl+Vvvu/QHUk1lDrxg+Xg==","signatures":[{"sig":"MEYCIQDDqQcwEapyj5Fr2K44IbuQp8Z+F9d9/OCd0bDp6Es+UAIhAJlxPfruHgrUKP3ADc/aLAHQx4NleWXyKln1FpQpA7CK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547842},"main":"./index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5f4380b886ce3c7a74e9d702ebbd321d5397a2cc","scripts":{"start":"node index.js"},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"_npmVersion":"10.9.4","description":"Visual network topology editor with AI agent integration via MCP. One-click SSH + web-service access from any node, nmap/CSV import, smart auto-layout, multi-sheet, local-first. Open-source successor to netViz (CA Technologies, 1990-2012).","directories":{},"_nodeVersion":"22.21.0","dependencies":{"ws":"^8.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/network-diagram-mcp_1.0.1_1779355140544_0.7191623254155606","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@den.dance/network-diagram-mcp","version":"1.0.2","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"url":"https://den.dance/","name":"Denys Malieiev"},"license":"MIT","_id":"@den.dance/network-diagram-mcp@1.0.2","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"homepage":"https://map.den.dance/","bugs":{"url":"https://github.com/den-indance/network-diagram-mcp/issues"},"bin":{"network-diagram-mcp":"index.js"},"dist":{"shasum":"4f6aa8130145383dbe5c860bab6b4e9c335cb683","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.0.2.tgz","fileCount":8,"integrity":"sha512-ye6fArRJDYFzWE46Nwe2akdeTP5SkS9IFpTEP3P/N0Ve+UgopBeC7tP4JUVApLc7xeuWnc4rAEJ0dzImUrNFoQ==","signatures":[{"sig":"MEQCIEnl6MGs5L8PDFas1hjfEN50iq4biC7yp3wuo12G08B6AiBAZlanYEIxNF9p3Z3ddhuIOHxZprxGowKxTS6qiRXnIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":548173},"main":"./index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"16802d36347be2f492a2996efadeeebb60d9f74c","scripts":{"start":"node index.js"},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"repository":{"url":"git+https://github.com/den-indance/network-diagram-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Visual network topology editor with AI agent integration via MCP. One-click SSH + web-service access from any node, nmap/CSV import, smart auto-layout, multi-sheet, local-first. Open-source successor to netViz (CA Technologies, 1990-2012).","directories":{},"_nodeVersion":"22.21.0","dependencies":{"ws":"^8.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/network-diagram-mcp_1.0.2_1779407772409_0.03052025136785952","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@den.dance/network-diagram-mcp","version":"1.0.3","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"url":"https://den.dance/","name":"Denys Malieiev"},"license":"MIT","_id":"@den.dance/network-diagram-mcp@1.0.3","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"homepage":"https://map.den.dance/","bugs":{"url":"https://github.com/den-indance/network-diagram-mcp/issues"},"bin":{"network-diagram-mcp":"index.js"},"dist":{"shasum":"687e3e7d719f898b7156249f63ba85368f5a6618","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.0.3.tgz","fileCount":8,"integrity":"sha512-feq0qD0WRJ3rvHvjtZTKWXT8syUkuTatA6Q0aGyVbAPmjLDVYtl7wr88lrVH/ZMU428SwxmnxWUSfCkavoW+Bg==","signatures":[{"sig":"MEYCIQCvPEk1CBHIsDAN0JGzl4G1Aguni8ILPboe63LnNezcPwIhAKcyw4+IcUypeNl/fmjNqBepZjSjbklHaPOh7dpJSNwz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":548238},"main":"./index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"25afc96d449c4b1bd40b9f19194689f99a1c1b38","scripts":{"start":"node index.js"},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"repository":{"url":"git+https://github.com/den-indance/network-diagram-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Visual network topology editor with AI agent integration via MCP. One-click SSH + web-service access from any node, nmap/CSV import, smart auto-layout, multi-sheet, local-first. Open-source successor to netViz (CA Technologies, 1990-2012).","directories":{},"_nodeVersion":"22.21.0","dependencies":{"ws":"^8.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/network-diagram-mcp_1.0.3_1779409789298_0.9173740116175413","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@den.dance/network-diagram-mcp","version":"1.0.4","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"url":"https://den.dance/","name":"Denys Malieiev"},"license":"MIT","_id":"@den.dance/network-diagram-mcp@1.0.4","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"homepage":"https://map.den.dance/","bugs":{"url":"https://github.com/den-indance/network-diagram-mcp/issues"},"bin":{"network-diagram-mcp":"index.js"},"dist":{"shasum":"226104758d568070f6b26d12f69d723ec81ce2fd","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.0.4.tgz","fileCount":8,"integrity":"sha512-S7ax2udOJaDl4cu0agn+YCDpwDzGrnyGQFMSwFsL/cu40P+ay1NVmHH1VKQxmStEbdw3fnHA3muWwPJG1be5LA==","signatures":[{"sig":"MEUCIHN0xHANBkyVI837TSVz2FqBScYNTzDJGZY748wWtjJYAiEA+0V6ko5gACMQTMhHgIx/b8R3D8A0g3QhTWypsvLoPsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":548296},"main":"./index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"18d2c8ddfbc82b573c00d0f886460fc341275841","mcpName":"io.github.den-indance/network-diagram-mcp","scripts":{"start":"node index.js"},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"repository":{"url":"git+https://github.com/den-indance/network-diagram-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Visual network topology editor with AI agent integration via MCP. One-click SSH + web-service access from any node, nmap/CSV import, smart auto-layout, multi-sheet, local-first. Open-source successor to netViz (CA Technologies, 1990-2012).","directories":{},"_nodeVersion":"22.21.0","dependencies":{"ws":"^8.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/network-diagram-mcp_1.0.4_1779411871162_0.6236192966748169","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@den.dance/network-diagram-mcp","version":"1.0.5","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"url":"https://den.dance/","name":"Denys Malieiev"},"license":"MIT","_id":"@den.dance/network-diagram-mcp@1.0.5","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"homepage":"https://map.den.dance/","bugs":{"url":"https://github.com/den-indance/network-diagram-mcp/issues"},"bin":{"network-diagram-mcp":"index.js"},"dist":{"shasum":"0ceae64e9b32031823eaad90233bae882b2b9ad1","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.0.5.tgz","fileCount":8,"integrity":"sha512-SlC3R2dDi/mxETSjoLIJKoVd8RRzryXPUK02/THJpum6nhgVm6SlreYTQeKprn5X3cRsBnHdZ+MKhYNgwPQoUw==","signatures":[{"sig":"MEUCIAfwzescGb4vapeGUiiL7Ivv9rrBvIjF8YCPWXIDl7mTAiEAp5Ozh7y4c4BK3JSeMsRekanNhvqjnEYgX9QDjcE/Kqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":548296},"main":"./index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"a8f6c7a17cb663d6cbde2fee32483d79ddaf5e8a","mcpName":"io.github.den-indance/network-diagram-mcp","scripts":{"start":"node index.js"},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"repository":{"url":"git+https://github.com/den-indance/network-diagram-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Visual network topology editor with AI agent integration via MCP. One-click SSH + web-service access from any node, nmap/CSV import, smart auto-layout, multi-sheet, local-first. Open-source successor to netViz (CA Technologies, 1990-2012).","directories":{},"_nodeVersion":"22.21.0","dependencies":{"ws":"^8.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/network-diagram-mcp_1.0.5_1779414889578_0.7773335118831728","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@den.dance/network-diagram-mcp","version":"1.0.6","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"url":"https://den.dance/","name":"Denys Malieiev"},"license":"MIT","_id":"@den.dance/network-diagram-mcp@1.0.6","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"homepage":"https://map.den.dance/","bugs":{"url":"https://github.com/den-indance/network-diagram-mcp/issues"},"bin":{"network-diagram-mcp":"index.js"},"dist":{"shasum":"fe9171c57dabd10075bd934a48c62e7fba4fa4e0","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.0.6.tgz","fileCount":8,"integrity":"sha512-uVY0laMGLYhFIomb2t2GlXU4F88Y/vNbUSZYLY9CExonMcO9NvNuz/LwtlTYs4hMcdGNUCMOdpCFZ2MfA61/nw==","signatures":[{"sig":"MEQCIALViEhbddmBHfb5PYzMx5HbNxawNprtqixaIe/a5BowAiB39B7FjL/jk47vc4FNVdbKDQAUQHXoLys7XjCIDW1CFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":548436},"main":"./index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"da02896135400c96a7ebf647678c6a8a98165b0b","mcpName":"io.github.den-indance/network-diagram-mcp","scripts":{"start":"node index.js"},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"repository":{"url":"git+https://github.com/den-indance/network-diagram-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Visual network topology editor with AI agent integration via MCP. One-click SSH + web-service access from any node, nmap/CSV import, smart auto-layout, multi-sheet, local-first. Open-source successor to netViz (CA Technologies, 1990-2012).","directories":{},"_nodeVersion":"22.21.0","dependencies":{"ws":"^8.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/network-diagram-mcp_1.0.6_1779421122401_0.19921210998448724","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@den.dance/network-diagram-mcp","version":"1.0.7","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"url":"https://den.dance/","name":"Denys Malieiev"},"license":"MIT","_id":"@den.dance/network-diagram-mcp@1.0.7","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"homepage":"https://map.den.dance/","bugs":{"url":"https://github.com/den-indance/network-diagram-mcp/issues"},"bin":{"network-diagram-mcp":"index.js"},"dist":{"shasum":"2420c0cc74a007ac1e76a2d4b8e73482f3ff1dcd","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.0.7.tgz","fileCount":8,"integrity":"sha512-PpgnvjObGSes8kf/dsYJPFxStk8482FjQ9HplNoUzwykTN+8tRCiq0YFF6cf7gII6MpExB3K5TZqrrVnaa8brw==","signatures":[{"sig":"MEUCIF6BjGT6yBju13hXr4Zj8ArpVaTnlVE+7ris0zGp6nTFAiEAghyG55sB2XkWoabGW/D1zjp9x7Ki/UdJQdZpoyHBnV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":549409},"main":"./index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"cc1d5f8e180eae87ab4b9017fa934ca39d0f5049","mcpName":"io.github.den-indance/network-diagram-mcp","scripts":{"start":"node index.js"},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"repository":{"url":"git+https://github.com/den-indance/network-diagram-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Visual network topology editor with AI agent integration via MCP. One-click SSH + web-service access from any node, nmap/CSV import, smart auto-layout, multi-sheet, local-first. Open-source successor to netViz (CA Technologies, 1990-2012).","directories":{},"_nodeVersion":"22.21.0","dependencies":{"ws":"^8.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/network-diagram-mcp_1.0.7_1779421753354_0.6953837485776442","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@den.dance/network-diagram-mcp","version":"1.2.0","mcpName":"io.github.den-indance/network-diagram-mcp","description":"Visual network topology editor with AI-agent MCP integration plus a cross-platform URL handler agent. Click any SSH / Postgres / Redis port on a node in NetMap (or any ssh:// / postgres:// / redis:// link in your OS) → picks your installed client (psql / ","type":"module","main":"./index.js","bin":{"network-diagram-mcp":"index.js"},"scripts":{"start":"node index.js"},"keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","ssh-client","postgres","postgres-client","redis","redis-client","protocol-handler","url-scheme-handler","xdg-mime","daemon","cli","network-mapping","infrastructure","sysadmin","sre","devops"],"author":{"name":"Denys Malieiev","url":"https://den.dance/"},"license":"MIT","homepage":"https://map.den.dance/","repository":{"type":"git","url":"git+https://github.com/den-indance/network-diagram-mcp.git"},"bugs":{"url":"https://github.com/den-indance/network-diagram-mcp/issues"},"engines":{"node":">=18.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","ws":"^8.0.0"},"_id":"@den.dance/network-diagram-mcp@1.2.0","gitHead":"f9a35033591001b6b06f3040a956d14e856f3632","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-YgKrjUyE4nVihYrFXgYTLLcDdP8mPvLibT4BfvevOZhlrzVf417o5Qj93G0uJVAn2Gugk9vm4tAJMl2pbD8L+A==","shasum":"cfed89ee6fdc480211362aa43548b2710b852ef6","tarball":"https://registry.npmjs.org/@den.dance/network-diagram-mcp/-/network-diagram-mcp-1.2.0.tgz","fileCount":49,"unpackedSize":640946,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCroBHv4BqOS+G3TTb5Jex6ZoMenT+SCh9/W/LjSjwYhwIhANUPe2rVLcJ2aXuiUVT9zJFrIjSneHM0zSi6ylFsB7xK"}]},"_npmUser":{"name":"den.dance","email":"denismaleev95@gmail.com"},"directories":{},"maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/network-diagram-mcp_1.2.0_1779697648038_0.4479497766918745"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-21T04:45:11.096Z","modified":"2026-05-25T08:27:28.336Z","1.0.0":"2026-05-21T04:45:11.495Z","1.0.1":"2026-05-21T09:19:00.733Z","1.0.2":"2026-05-21T23:56:12.659Z","1.0.3":"2026-05-22T00:29:49.479Z","1.0.4":"2026-05-22T01:04:31.379Z","1.0.5":"2026-05-22T01:54:49.768Z","1.0.6":"2026-05-22T03:38:42.577Z","1.0.7":"2026-05-22T03:49:13.538Z","1.2.0":"2026-05-25T08:27:28.209Z"},"bugs":{"url":"https://github.com/den-indance/network-diagram-mcp/issues"},"author":{"name":"Denys Malieiev","url":"https://den.dance/"},"license":"MIT","homepage":"https://map.den.dance/","keywords":["mcp","model-context-protocol","claude","ai","llm","network-diagram","network-topology","netviz","dcim","network-documentation","topology-editor","nmap","ssh","ssh-client","postgres","postgres-client","redis","redis-client","protocol-handler","url-scheme-handler","xdg-mime","daemon","cli","network-mapping","infrastructure","sysadmin","sre","devops"],"repository":{"type":"git","url":"git+https://github.com/den-indance/network-diagram-mcp.git"},"description":"Visual network topology editor with AI-agent MCP integration plus a cross-platform URL handler agent. Click any SSH / Postgres / Redis port on a node in NetMap (or any ssh:// / postgres:// / redis:// link in your OS) → picks your installed client (psql / ","maintainers":[{"name":"den.dance","email":"denismaleev95@gmail.com"}],"readme":"# @den.dance/network-diagram-mcp\n\n[![npm](https://img.shields.io/npm/v/@den.dance/network-diagram-mcp)](https://www.npmjs.com/package/@den.dance/network-diagram-mcp)\n[![smithery badge](https://smithery.ai/badge/den-indance/network-diagram-mcp)](https://smithery.ai/servers/den-indance/network-diagram-mcp)\n\n> Visual network topology editor with AI agent integration via the Model Context Protocol.\n> Open-source successor to **netViz** (netViz Inc., 1990 → CA Technologies → discontinued 2012).\n>\n> **Try it live → https://map.den.dance/**\n\n![NetMap workspace](https://map.den.dance/netmap.png)\n\n## What makes it different\n\n- **One-click ops dashboard.** Click any web port (80 / 443 / 8080 / …) on a node card to open the\n  service in a new tab. Click an SSH / Postgres / Redis port → in-app picker offers your installed\n  clients (iTerm / Windows Terminal / psql / DBeaver / redis-cli / RDM / …) and launches the one you\n  choose. The picker re-detects every click — newly installed clients show up immediately, never a\n  silent locked-in default.\n- **AI agents edit the map.** 44 MCP tools — your Claude / Cursor / Claude Desktop session can build\n  a diagram for you, search across nodes / ports / notes, run smart auto-layouts, export PNG / PDF —\n  all by talking to the open browser tab.\n- **`nmap -oX` import.** Run a network scan, hand the XML to the agent, get a map with nodes\n  auto-typed from OS fingerprint + port profile (router / switch / firewall / server / printer / …).\n- **CSV inventory import.** Drop in your asset spreadsheet — auto-detects columns\n  (name / ip / type / ports / notes; aliases like `hostname` / `description` accepted).\n- **Operator-grade node cards.** Per-node: open ports with service names, Docker services, DNS domains,\n  free-form notes. All searchable cross-entity via the agent.\n- **Smart auto-layout.** Force-directed (deterministic via seed), cluster-by-type, cluster-by-connection.\n- **Multi-sheet, local-first.** Multiple maps in one workspace, everything in `localStorage`. No login,\n  no cloud. Export JSON / PNG / PDF.\n\n## How it works\n\nThis package is a **stdio → WebSocket bridge**. It runs locally as an MCP server; the live NetMap\nbrowser tab connects to it over WebSocket. The agent talks to the bridge over MCP; the bridge forwards\ncalls to the browser, which updates React state in real time.\n\n```\nLLM agent (Claude Code / Claude Desktop / Cursor)\n   │  MCP protocol (stdio)\n   ▼\n@den.dance/network-diagram-mcp  ←  this package, runs locally\n   │  WebSocket ws://localhost:47821\n   ▼\nNetMap in browser (https://map.den.dance/)  ←  React state updates live\n```\n\n> ⚠️ **Requires an open NetMap browser tab.** Open https://map.den.dance/ — the MCP bridge is\n> enabled by default (v1.2+), so the connection comes up as soon as the tab is open. Without an\n> open tab the bridge has no peer and every tool call will time out. (To opt out:\n> `Settings → ⚙ → Integrations → AI Agent (MCP) → Enable WebSocket connection`.)\n\n## Install\n\n### Claude Desktop\n\nAdd to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"netmap\": {\n      \"command\": \"npx\",\n      \"args\": [\"@den.dance/network-diagram-mcp\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add netmap -- npx @den.dance/network-diagram-mcp\n```\n\nWith a custom port:\n\n```bash\nclaude mcp add netmap -e NETMAP_MCP_PORT=12345 -- npx @den.dance/network-diagram-mcp\n```\n\nThen open https://map.den.dance/ — the bridge is enabled by default (v1.2+). Settings → **Integrations → AI Agent (MCP)** if you need to inspect or toggle the connection.\nThe toolbar will show a 🟢 **MCP online** badge when the browser and server are connected.\n\nVerify the agent side:\n\n```bash\nclaude mcp list\n```\n\nYou should see `netmap` in the list.\n\n### Environment variables\n\n| Var | Default | Description |\n|-----|---------|-------------|\n| `NETMAP_MCP_PORT` | `47821` | Local WebSocket port the bridge listens on. Must match the URL configured in NetMap's Settings → Integrations → AI Agent (MCP). |\n\n## URL Protocol Handlers + in-app client picker (v1.1+, picker since v1.2)\n\nThis package also ships an OS-level agent that registers handlers for `ssh://`,\n`postgres://`, and `redis://` URLs. Click any such link in a browser or terminal\nand the agent spawns your installed client (psql / redis-cli / iTerm /\nWindows Terminal / kitty / DBeaver / TablePlus / RedisInsight / …).\n\n**Inside NetMap (v1.2+):** when the `serve` daemon is running, clicking an\nSSH / Postgres / Redis port button on a node card opens an in-app picker of\ninstalled clients on your machine and launches the one you pick — every click\nre-detects, so newly installed clients show up immediately. Without the daemon,\nport-clicks fall back to the OS default URL handler.\n\nInstall once per machine:\n\n```bash\n# Linux:   ~/.local/share/applications/netmap-<scheme>-handler.desktop + xdg-mime\n# macOS:   ~/Library/Application Support/NetMap/handlers/NetMap<Scheme>Handler.app + lsregister\n# Windows: HKCU\\Software\\Classes\\<scheme>  (per-user, no admin)\nnpx @den.dance/network-diagram-mcp install --all\n```\n\nOther CLI subcommands:\n\n```bash\nnpx @den.dance/network-diagram-mcp install ssh        # single scheme\nnpx @den.dance/network-diagram-mcp uninstall postgres # remove registration\nnpx @den.dance/network-diagram-mcp list               # what's registered (JSON)\nnpx @den.dance/network-diagram-mcp detect ssh         # which clients are available\nnpx @den.dance/network-diagram-mcp serve              # daemon: WS + HTTP on :47821\n```\n\nClick handling is **daemon-less** — OS routes the link to a short-lived\n`bin/handler.js` process which parses the URL, picks the first installed\nclient (priority order: CLI → popular GUI → cross-platform power), and spawns\nit. The optional `serve` daemon adds HTTP endpoints (`/status`, `/detect`,\n`/exec`) for browser-side integration with a Bearer-token-gated `/exec`.\n\n`npx @den.dance/network-diagram-mcp` with no args still runs the original\nstdio MCP server (back-compat — Smithery / Claude Desktop probes are\nunaffected).\n\nTop-5 clients per scheme (priority order, first-installed wins):\n\n| Scheme | Clients |\n|--------|---------|\n| `ssh`      | iTerm2 → Windows Terminal → GNOME Terminal → Terminal.app → kitty |\n| `postgres` | psql → TablePlus → DBeaver → Beekeeper Studio → pgAdmin 4 |\n| `redis`    | redis-cli → RedisInsight → Another Redis DM → Medis → RDM (legacy) |\n\n`postgresql://` aliases to `postgres`; `rediss://` is preserved and triggers\n`redis-cli --tls`.\n\n## Available tools\n\n### State & layout\n\n| Tool | Description |\n|------|-------------|\n| `map_get_state` | Return all nodes, connections, stickies, notes |\n| `map_clear` | Clear the entire map (requires `confirm: true`) |\n| `map_arrange` | Naive auto-arrange (`grid` or `circle` layout — ignores connections) |\n| `map_suggest_layout` | Smart auto-layout: `force` (force-directed, deterministic via `seed`), `cluster-by-type` (lanes per type), or `cluster-by-connection` (BFS components into zones) |\n\n### Nodes\n\n| Tool | Description |\n|------|-------------|\n| `map_add_node` | Add a node (`type`, `name`, `ip`, `x`, `y`) |\n| `map_update_node` | Update node fields by id |\n| `map_delete_node` | Delete a node and its connections |\n| `map_move_node` | Move node to new coordinates |\n\n### Connections\n\n| Tool | Description |\n|------|-------------|\n| `map_add_connection` | Add connection (`from_id`, `to_id`, `label?`, `color?`) |\n| `map_update_connection` | Update `label` or `color` of a connection |\n| `map_delete_connection` | Delete a connection by id |\n\n### Sticky notes\n\n| Tool | Description |\n|------|-------------|\n| `map_add_sticky` | Add a sticky note (`text`, `x?`, `y?`, `color?`) |\n| `map_update_sticky` | Update `text`, `color`, `x`, `y`, `w`, `h` |\n| `map_delete_sticky` | Delete a sticky note by id |\n| `map_move_sticky` | Move sticky to new coordinates |\n\n### Sheets (multi-sheet)\n\n| Tool | Description |\n|------|-------------|\n| `map_list_sheets` | List all sheets with metadata and active sheet id |\n| `map_get_sheet_data` | Get nodes / connections / stickies for a sheet (default: active) |\n| `map_create_sheet` | Create a new empty sheet and switch to it |\n| `map_switch_sheet` | Switch active sheet by id |\n| `map_rename_sheet` | Rename a sheet |\n| `map_delete_sheet` | Delete a sheet (requires `confirm: true`, can't delete last) |\n\n### View / canvas\n\n| Tool | Description |\n|------|-------------|\n| `map_set_zoom` | Set zoom level (0.1–3.0) |\n| `map_set_canvas_offset` | Pan canvas to absolute pixel position |\n| `map_zoom_to_fit` | Auto-fit all nodes into viewport |\n\n### Lock / protection\n\n| Tool | Description |\n|------|-------------|\n| `map_lock_sheet` | Lock (`locked: true`) or unlock (`locked: false`) a sheet. Locked sheets reject all MCP mutations and disable manual editing in the UI. |\n\n### Notes & settings\n\n| Tool | Description |\n|------|-------------|\n| `map_get_notes` | Get sheet-level notes text |\n| `map_set_notes` | Set sheet-level notes text |\n| `map_get_settings` | Get app settings (sshMode, showGrid, etc.) |\n| `map_update_settings` | Update app settings |\n\n### Search\n\n| Tool | Description |\n|------|-------------|\n| `map_find_node` | Structured node-only filter by `name` / `ip` / `type` / `text`. Returns stripped `{id, name, type, ip, x, y}`. |\n| `map_search` | Full-text cross-entity search. Looks across **nodes** (name / ip / notes), **stickies** (text), **connection labels**, and **ports** (port number + service name). Optional `types: [\"nodes\",\"stickies\",\"connections\",\"ports\"]` narrows the scope. |\n| `map_get_nodes_by_type` | Return every node of a single type with **FULL** field data (ports, dockerServices, domains, ips, notes, parentServer, …). Use this when you need the complete objects, not the stripped projection from `map_find_node`. |\n\nExample — find everything matching `postgres` anywhere in the map:\n\n```jsonc\n// → call\n{ \"q\": \"postgres\" }\n\n// → result\n{\n  \"nodes\":       [{ \"id\": \"n1\", \"name\": \"db-primary\", \"type\": \"server\", \"ip\": \"10.0.0.5\" }],\n  \"stickies\":    [{ \"id\": \"s2\", \"text\": \"TODO: upgrade postgres 15 → 16\" }],\n  \"connections\": [{ \"id\": \"c4\", \"label\": \"postgres replication\", \"from\": \"n1\", \"to\": \"n2\" }],\n  \"ports\":       [{ \"nodeId\": \"n1\", \"nodeName\": \"db-primary\", \"port\": 5432, \"protocol\": \"tcp\", \"service\": \"postgresql\" }],\n  \"total\": 4\n}\n```\n\n`map_search` and `map_get_nodes_by_type` are read-only — they work on locked sheets.\n\n### Import\n\n| Tool | Description |\n|------|-------------|\n| `map_import_sheet` | Replace active-sheet content with a provided `{nodes, connections, stickies?, notes?}` JSON. |\n| `map_import_nmap` | Parse `nmap -oX` output (or a pre-parsed `hosts[]` array) and create nodes with their open ports. Auto-infers node type from OS fingerprint + port profile (router / switch / firewall / server / printer / …). Nodes auto-arranged in a square-root grid. |\n| `map_import_csv` | Import nodes from CSV. Auto-detects columns from the header row (`name` / `ip` / `type` / `ports` / `notes` — aliases like `hostname` / `description` accepted). Ports field accepts `22/tcp,80/tcp` or bare numbers. Nodes laid out in a 6-column grid. |\n\nExample — turn a 2-host nmap scan into a map in one call:\n\n```jsonc\n// → call\n{\n  \"xml\": \"<?xml version=\\\"1.0\\\"?>\\n<nmaprun>\\n  <host>\\n    <address addr=\\\"10.0.0.1\\\" addrtype=\\\"ipv4\\\"/>\\n    <hostnames><hostname name=\\\"web.local\\\" type=\\\"user\\\"/></hostnames>\\n    <ports>\\n      <port protocol=\\\"tcp\\\" portid=\\\"22\\\"><state state=\\\"open\\\"/><service name=\\\"ssh\\\"/></port>\\n      <port protocol=\\\"tcp\\\" portid=\\\"80\\\"><state state=\\\"open\\\"/><service name=\\\"http\\\"/></port>\\n    </ports>\\n  </host>\\n  <host>\\n    <address addr=\\\"10.0.0.2\\\" addrtype=\\\"ipv4\\\"/>\\n    <os><osmatch name=\\\"Cisco IOS router\\\" accuracy=\\\"98\\\"/></os>\\n  </host>\\n</nmaprun>\"\n}\n\n// → result\n{ \"count\": 2, \"ids\": [\"…\", \"…\"] }\n```\n\nProvide `{\"hosts\": [...]}` instead of `xml` when you already have parsed host data — `hosts` takes priority when both are given.\n\nExample — turn a CSV inventory snippet into a map:\n\n```jsonc\n// → call\n{\n  \"csv\": \"name,ip,type,ports,notes\\ndb-primary,10.0.0.5,server,\\\"22/tcp,5432/tcp\\\",Postgres 15\\nrouter-main,10.0.0.1,router,22/tcp,Edge router\"\n}\n\n// → result\n{ \"count\": 2, \"ids\": [\"…\", \"…\"] }\n```\n\nFor non-standard headers, pass an explicit `columns` mapping (`-1` means \"absent\"):\n\n```jsonc\n{\n  \"csv\":     \"Host,Address\\nfoo,10.0.0.99\",\n  \"columns\": { \"name\": 0, \"ip\": 1, \"type\": -1, \"ports\": -1, \"notes\": -1 }\n}\n```\n\n`map_import_nmap` and `map_import_csv` are **mutations** — blocked on locked sheets.\n\n### Layout\n\n`map_suggest_layout` repositions every node according to a chosen algorithm; result shape:\n`{ ok: true, algorithm, changed: <node count> }`.\n\n```jsonc\n// Force-directed (organic; reproducible with seed)\n{ \"algorithm\": \"force\", \"iterations\": 200, \"seed\": 42 }\n\n// Group nodes into horizontal lanes by type\n{ \"algorithm\": \"cluster-by-type\" }\n\n// Place each connected component in its own x-zone\n{ \"algorithm\": \"cluster-by-connection\" }\n```\n\nForce-directed is `O(n²)` per iteration — fine up to a few hundred nodes; bring `iterations` down\nfor larger scenes. `map_suggest_layout` is a **mutation** — blocked on locked sheets.\n\n### Export (JSON / PNG / PDF)\n\n| Tool | Description |\n|------|-------------|\n| `map_export_sheet` | Export a single sheet as a JSON object (auto-connections included). Legacy entry — still works. |\n| `map_export` | Multi-format export: `json` (object), `png` and `pdf` (base64-encoded blob + `mimeType`). |\n\n```jsonc\n// JSON\n{ \"format\": \"json\" }\n// → { format: \"json\", data: { nodes, connections, stickies, notes, auto_connections } }\n\n// PNG (max 30 s; agent must persist the base64 to a file)\n{ \"format\": \"png\" }\n// → { format: \"png\", filename: \"netmap-<sheetId>.png\",\n//      base64: \"iVBORw0KGgoAAAANSUhEUg…\",\n//      mimeType: \"image/png\" }\n\n// PDF\n{ \"format\": \"pdf\" }\n// → { format: \"pdf\", filename: \"netmap-<sheetId>.pdf\",\n//      base64: \"JVBERi0xLjQK…\",\n//      mimeType: \"application/pdf\" }\n```\n\nPNG / PDF capture renders the live workspace via `html-to-image` + `jsPDF`, so the MCP server raises\nthe per-command timeout to 30 s for this tool. `map_export` is **read-only** — works on locked sheets.\n\n## Connection status indicator\n\nA badge appears next to the NetMap version in the toolbar (click it to open Settings):\n\n| Badge | Meaning |\n|-------|---------|\n| 🟢 **MCP online** | Connected — agent can edit the map |\n| 🟡 **MCP** | Connecting to server |\n| 🟠 **MCP retry N/10** | Retrying, up to 10 attempts × 30 sec |\n| 🔴 **MCP error** | Gave up — start the server, then toggle off / on to retry |\n| _(no badge)_ | Disabled in settings |\n\nDetailed status (with URL and hints) is shown inside **Settings → Integrations → AI Agent (MCP)**.\n\n## Running from source (for contributors)\n\n```bash\ngit clone https://github.com/den-indance/network-diagram-mcp.git\ncd network-diagram-mcp\nnpm install\nnode index.js\n```\n\nOverride port: `NETMAP_MCP_PORT=12345 node index.js`.\n\nRegister the local build in Claude Code instead of npm:\n\n```bash\nclaude mcp add netmap-dev -- node /absolute/path/to/network-diagram-mcp/index.js\n```\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}