← Back to directory
N

Network Sketcher (Local MCP)

Official
Local-first, AI-native MCP server for network design automation
Category
Dev Tools #133 of 438
Stars
★ 416 Very popular
Transport
stdio (local process)
Runtime
Python 3.10+
Credentials
No credential needed
License
Apache-2.0
Last commit
Tools
11
59FMRS · C

Network Sketcher (Local MCP) is the AI-native MCP server edition of the Cisco open-source network design tool, maintained by Cisco under the Apache-2.0 license. It exposes 11 tools over stdio, letting LLM clients such as Cursor and Claude Code create Cisco-style network designs, manage device data, and generate L1/L2/L3 topology diagrams (SVG / PowerPoint), combined HTML viewers, device tables, and AI Context files through direct tool calls. Master files are .nsm and stay in a local workspace; the server keeps no internal data storage and does not communicate externally. It is intended for local single-user environments; it requires Python 3.10+, the full repository, and is recommended with Claude Opus 4.7 or later. Limitations include stdio-only transport, no IPv6 support, LLM clients not being able to view binary diagram output directly, and features (VPNs, Flow, creating masters from PowerPoint sketches) not offered in this edition. Overall, it is the official local-first way to connect network design with LLM workflows.

Strongest · Documentation 15/20 Weakest · Security and permissions 9/20

Reliability
10/20
Security and permissions
9/20
Maintenance
14/20
Documentation
15/20
Setup experience
11/20
Why each score
Reliability 10/20
Static review sees only the server.json manifest plus README; there are no CI workflows or committed tests covering the server's key paths (get_ai_context, run_commands, export_diagram). The manifest is internally consistent and coherent with the README (stdio transport, Python 3.10+, .nsm workspace), tool signatures and descriptions align, and the ordering prerequisite (get_ai_context before edits) is stated. However, absence of verifiable execution evidence, of documented failure handling (subprocess errors, missing paths, timeouts on large networks), and of any pinned dependency detail (requirements_mcp.txt not visible) keeps this mid-range.
Security and permissions 9/20
No red line is triggered: no credential theft, no covert exfiltration, no unconfirmed destructive defaults. Design is local stdio, no data retention claimed, set_workspace is explicitly constrained to the user's home directory and writability-checked, and exports write only into the workspace. Deductions: run_commands can execute arbitrary Network Sketcher CLI mutations (delete/rename) with no documented confirmation or dry-run step, and the get_ai_context requirement is a soft workflow gate rather than an access control; no secrets or real tokens appear in the install examples.
Maintenance 14/20
License is explicit (Apache-2.0) with clear copyright attribution (Cisco Systems / Yusuke Ogawa), the version string shows semantic versioning intent (3.1.2r), and the repo is active (392 stars, 0 open issues). Missing evidence, however, for release cadence, dependency update policy, and a security-response channel; no CHANGELOG or CI status is provided, so governance details remain a gap and the score is good-but-not-full.
Documentation 15/20
README is layered and thorough: three-edition comparison, feature support matrix, disclosed limitations (stdio only, single user, long generation times, PPTX/SVG not directly viewable by the LLM, recommended model), install steps, dual-client config examples for Cursor and Claude Code, and platform notes. Tool descriptions in the manifest are likewise detailed (e.g. the area/format constraints on export_diagram). Deductions: no troubleshooting section for dependency or Python-version issues (requirements_mcp.txt content, engine 3.9+ vs SDK 3.10+), leaving hidden assumptions.
Setup experience 11/20
The install path is short and clear: git clone, pip install -r requirements_mcp.txt, then register the python script in Cursor's mcp.json or via claude mcp add, with the -- separator and scope options explained and copy-pasteable examples. But it requires the full repository (network-sketcher_online present), manual absolute-path substitution, and the README states Windows-only testing (macOS/Linux untested), with no packaging, container, or one-command install. Workable but manual and somewhat fragile, so below the top tier.

Static review · not runListed 2026-09-18

Read the FMRS scoring method →

Fit and risk

What it can accessReads local filesWrites / deletes local filesRuns commands or code

Best for

  • Teams using Cursor or Claude Code who want to drive network design directly through tool calls
  • Local single-user workflows that keep master files on the machine with no external communication
  • Network engineers who need Cisco-style L1/L2/L3 topology diagrams (SVG / PowerPoint), device tables, and AI Context files
  • Users willing to use a model with strong multi-step tool-calling ability (Claude Opus 4.7 or later recommended)

Not for

  • Deployments needing HTTP/SSE transport or multi-user concurrency (stdio, single-user only)
  • Scenarios where the LLM client must directly view PPTX / SVG binary output (the user should open the generated SVG)
  • Environments that cannot run Python or install local dependencies
  • Network designs requiring IPv6 (IPv6 is not supported)
  • Needs for master file creation from PowerPoint sketches, GUI add/delete of VPNs, or Flow management (not offered in this edition)

Required permissions

  • Read and write workspace directories under the user's home directory (set_workspace validates the path is under the home directory and confirms it is writable)
  • Create and read .nsm master files in the active workspace
  • Read a .xlsx file at a given path for import_master
  • Write generated SVG / PPTX diagrams, .xlsx files, and HTML device tables into the active workspace
  • Launch a local Python subprocess to execute Network Sketcher CLI commands

Risks and side effects

  • run_commands batches LLM-generated CLI commands into a local subprocess, so wrong or unintended commands can modify the .nsm master (back up first or experiment with an empty master)
  • import_master and export_master_xlsx read and write files in the workspace; path mistakes or overwrites can affect existing files
  • Imported converter output is only a starting draft and may have data-quality issues requiring review
  • Diagram generation for large networks may take a long time
  • Weaker or older models may struggle to follow the layout / workflow rules embedded in the server instructions and AI Context (e.g. RULE 0 / 0.5 layout, RULE 3.5 multi-transport WAN waypoint design, the mandatory get_workspace_info to get_ai_context bootstrap)

Setup

Before you start

Runtime:Python 3.10+

1) Clone the repository: git clone https://github.com/cisco-open/network-sketcher/, then cd network-sketcher/network-sketcher_local_mcp and run python -m pip install -r requirements_mcp.txt.
2) Cursor: add the mcpServers entry to Cursor's MCP configuration file (File > Preferences > Cursor Settings > MCP -> mcp.json), using command python and args pointing to ns_mcp_server.py under your local clone's network-sketcher_local_mcp folder.
3) Claude Code: run claude mcp add network-sketcher -- python "<local-clone-path>/network-sketcher_local_mcp/ns_mcp_server.py"; use --scope user|project as needed.
4) Manual: clone the repository, install Python dependencies, then launch the server directly with python ns_mcp_server.py.
Note that Python 3.10 or later is required (for the MCP SDK), and the full Network Sketcher repository must be present (the network-sketcher_online/ folder is required).

.cursor/mcp.json
{"mcpServers":{"network-sketcher":{"command":"python","args":["<abs-path>/network-sketcher_local_mcp/ns_mcp_server.py"]}}}

Shown for Cursor. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "network-sketcher": {
      "command": "python",
      "args": [
        "<abs-path>/network-sketcher_local_mcp/ns_mcp_server.py"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add network-sketcher -- python '<abs-path>/network-sketcher_local_mcp/ns_mcp_server.py'

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After connecting, the client's tool list should show tools like get_workspace_info; calling get_workspace_info and getting back a workspace path plus .nsm file list confirms the server is running.

Troubleshooting

  1. Confirm Python is at least 3.10 (required by the MCP SDK; the engine itself supports 3.9+)
  2. Confirm the repository is fully cloned and the network-sketcher_online/ folder is present
  3. Verify the script path in the MCP client config is the absolute path of your local clone (on Windows, forward slashes or escaped backslashes both work)
  4. For Claude Code registration, confirm the -- separator is used so the script path is passed to python rather than parsed as a claude mcp add argument
  5. If a tool call reports missing context, call get_ai_context first, then run run_commands or export_diagram
  6. If setting the workspace fails, check that the path is under the user's home directory and writable, or call suggest_workspace to see candidates
  7. If diagrams or the device table are not produced, confirm you are using a .nsm master (export_device_table_html rejects .xlsx) and check workspace write permissions

Things to try

Once connected, you can ask your AI assistant things like:

  • Using Network Sketcher Local MCP, create a 5-site WAN design with HQ, two data centers, and two branches, then build the default L1/L2/L3 diagrams and device table.
  • Call get_workspace_info to list the .nsm master files in my current workspace.
  • Export an L2 SVG diagram for [MASTER]office.nsm.
  • Import my existing .xlsx master file as .nsm and then export the interactive HTML device table.

Tools 11

get_workspace_info read-only
Return the active workspace path and the list of .nsm master files (and other NS-generated files) in it. Always safe to call.
suggest_workspace read-only
Suggest OS-appropriate (Windows / macOS / Linux) workspace directory candidates under the user's home, with hints about which exist and are writable. Always safe to call.
set_workspace writes
Set the active workspace directory for this session. Validates that the path is under the user's home directory, creates it if missing, and confirms it is writable.
create_empty_master writes
Create a new empty Network Sketcher master file (.nsm) in the active workspace.
get_network_state read-only
Run the standard set of show commands and return aggregated results - a lightweight summary of the network state for the agent.
get_ai_context read-only
Generate the full AI Context file for a master and return its contents (network state plus the full CLI command reference). Recommended bootstrap call before issuing any edits.
run_commands writes
Execute one or more Network Sketcher CLI commands (add / rename / delete / show) against a .nsm master. Multiple lines are batched into a single subprocess to amortise startup cost. Requires get_ai_context to have been called at least once in this session.
import_master writes
Convert an existing .xlsx master into a .nsm in the active workspace. Use once at the start of a session to bring an existing .xlsx master under .nsm management.
Show 3 more tools
export_master_xlsx writes
Convert a .nsm master back to .xlsx for use with Excel or the Network Sketcher Offline edition. The .nsm itself is not modified.
export_diagram writes
Export an L1, L2, or L3 network diagram for the given .nsm master. Output format is SVG (default, fast, browser-renderable) or PPTX (editable in PowerPoint). When 'area' is omitted, the legacy behaviour is preserved (L1: all_areas_tag, L3: all_areas, L2: first area). When 'area' is supplied, only that single area is generated (L1/L3 require format='svg'; L2 supports area for both formats). Requires get_ai_context to have been called at least once in this session.
export_device_table_html writes
Export an interactive HTML Device Table preview from a .nsm master (.xlsx masters are rejected). The output is a single self-contained HTML file ('[DEVICE_TABLE]{basename}.html') with six tabs (L1 / L2 / L3 / Attribute / IP Address_Summary / IP Address_List) whose layout matches the Network Sketcher Online edition's Device Preview screen, including sticky-header tables, per-tab CSV/HTML download buttons, and URL-hash initial-tab selection. No external CDN or scripts are referenced, so the file can be opened directly from disk or shared as a single artifact.

Use cases

Build a 5-site WAN or campus LAN design from an AI conversation
Generate L1 physical, L2 VLAN/broadcast-domain, and L3 IP topology diagrams
Export a combined L1/L2/L3 HTML viewer and an interactive device table
Create an AI Context file so another LLM can review or extend the network design
Run a Cisco Extension converter, feed ns_commands.txt through run_commands, and build default outputs in one session

Supported clients

Cursor
Claude Code

Listed from the project's documentation, not tested by this site.

Overview

Network Sketcher (Local MCP) is the third edition of the Cisco open-source network design tool. It wraps network-sketcher_online/ns_engine/ as a library and exposes the Network Sketcher CLI over the Model Context Protocol through stdio, letting LLM clients such as Cursor and Claude Code drive network design via tool calls. It is AI-native: the LLM executes the CLI directly, with no browser and no copy-paste. It can build Cisco-style network designs, manage device data, and generate L1/L2/L3 topology diagrams (SVG / PowerPoint), combined HTML viewers, device tables, and AI Context files from natural-language workflows. Master files are stored locally in the .nsm format; the server keeps no internal data storage and has no external communication (stdio to the local LLM client only).

Similar servers

Context7 80 · B

Upstash's official server providing up-to-date third-party library docs for AI coding assistants

★ 64.1k · Tools 2 Compare with this →

Source revision 0bdda3d1e1b6 Data synced 2026-11-02 Read the FMRS scoring method