MCP server for Cisco Catalyst SD-WAN (vManage): fabric inventory, device health, alarms, policies.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
cisco-sdwan-mcp is an MCP server for
Cisco Catalyst SD-WAN Manager (vManage), built with
FastMCP.
It gives an LLM client a working view of your SD-WAN fabric β inventory, device health, control and data plane state, alarms, path quality, templates and policies β so you can ask "why is the Frankfurt branch down?" and get an answer backed by real controller data instead of a guess.
Read-only by default. The configuration-changing tools are not registered unless you explicitly enable them, and even then every call requires a human to approve it.
| Area | Tools |
|---|---|
| Inventory | list_devices, get_device, get_fabric_summary, list_inventory |
| Device health | check_device_health, get_system_status, get_control_connections, get_bfd_sessions, get_omp_peers, get_interfaces |
| Alarms & events | get_alarm_summary, list_alarms, list_events |
| Path quality | find_degraded_tunnels, get_tunnel_statistics, get_interface_statistics |
| Templates & policy | list_device_templates, get_device_template, list_feature_templates, list_policies, get_template_input_variables |
| Config groups & profiles | list_config_groups, get_config_group, get_device_config_group, get_config_group_device_variables, list_feature_profiles, get_feature_profile, get_parcel, get_parcel_schema, get_device_running_config |
| Configuration (opt-in) | attach_device_template, activate_vsmart_policy, update_parcel, update_cli_addon_config, deploy_config_group, get_task_status |
Plus four workflow prompts and three resources.
Three design decisions are worth knowing up front, because they shape every tool:
detailed=true when you want
everything.count (what
matched) alongside returned (what you got), so "3 devices are down" is
never confused with "3 devices are down in the first 100 I looked at".Make a dedicated vManage account. Give it a read-only role to start. The account's privileges are the real security boundary β see Write protection.
From PyPI, if you only want to run it:
From a checkout, if you want to change it:
The three settings you must fill in:
The server reads .env from the repository root at startup β set
SDWAN_ENV_FILE to load a different file. Variables already present in the
environment (compose env_file, Kubernetes secrets) are never overwritten by
it, and the startup log names the file it used.
The server starts over HTTP on 0.0.0.0:8000. The MCP endpoint is at
http://localhost:8000/mcp, a health probe at http://localhost:8000/healthz,
and this README at http://localhost:8000/.
Startup logs confirm what it will talk to before any client connects:
Point an MCP client at it (see Connecting an MCP client)
and ask for get_fabric_summary. It is one round trip and exercises
authentication, TLS and reachability at once:
Everything is environment-driven; .env.example is the annotated reference.
| Variable | Default | Description |
|---|---|---|
SDWAN_VMANAGE_URL | β | Controller URL, e.g. https://vmanage.example.com:8443. Required (or use SDWAN_VMANAGE_HOST) |
SDWAN_VMANAGE_HOST | β | Hostname instead of a full URL |
SDWAN_VMANAGE_PORT | 443 | Port, when using SDWAN_VMANAGE_HOST |
SDWAN_USERNAME | β | vManage username. Required |
SDWAN_PASSWORD | β | vManage password. Required |
SDWAN_VERIFY_SSL | true | TLS certificate verification |
SDWAN_CA_BUNDLE | β | Path to a CA bundle β the right answer for a private CA |
SDWAN_TIMEOUT | 60 | Seconds to wait for vManage |
SDWAN_PAGE_SIZE | 100 | Default cap on records per tool call |
SDWAN_ENABLE_WRITES | false | Register the configuration tools β see below |
| Variable | Default | Description |
|---|---|---|
MCP_SERVER_NAME | cisco-sdwan-mcp | Name advertised to MCP clients |
MCP_TRANSPORT | http | http or stdio |
MCP_HOST | 0.0.0.0 | Bind address (HTTP only) |
MCP_PORT | 8000 | Bind port (HTTP only) |
MCP_AUTH | none | How MCP clients authenticate to this server |
LOG_LEVEL | INFO | Python log level |
SDWAN_USERNAME/SDWAN_PASSWORDauthenticate this server to vManage.MCP_AUTHgoverns how clients authenticate to this server. They are unrelated, and you generally want both.
vManage very often presents a self-signed or private-CA certificate. In descending order of preference:
SDWAN_CA_BUNDLE at the controller's CA β verification stays on.certificates/, which the Docker build installs into the
container trust store automatically.SDWAN_VERIFY_SSL=false.
The server logs a warning naming the host each time it does this, because
it means anything on the path can read the credentials.The tools that change configuration are gated twice.
Gate 1 β registration. With SDWAN_ENABLE_WRITES unset or false, the
module holding them is never imported. They do not appear in the tool list, so
a model cannot call them by mistake, misinterpretation or prompt injection.
The server is read-only by construction, not by policy.
Gate 2 β confirmation. With writes enabled, each call still asks the user
through MCP elicitation, naming the template or policy and the devices
affected, before anything reaches vManage. Clients that do not implement
elicitation cannot silently proceed β the call is refused unless the caller
passes confirm=true, which puts the decision in a human's hands either way.
The vManage account is the real boundary.
SDWAN_ENABLE_WRITEScontrols which tools exist in this server; it does nothing about what the account can do through any other path. If a change must be impossible, use a read-only vManage role β do not rely on this flag alone.
vManage applies configuration asynchronously: a write returns a task_id,
meaning accepted, not applied. Poll get_task_status(task_id) until it
reports done.
The intended flow for a template push, with a review step in the middle:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/cisco-sd-wan-mcp-server)<a href="https://allmcps.com/mcp/cisco-sd-wan-mcp-server"><img src="https://allmcps.com/api/badge/cisco-sd-wan-mcp-server?style=directory" alt="Cisco SD WAN MCP Server on AllMCPs" /></a>