β οΈ Disclaimer: This project is a completely personal work developed independently for educational and open-source purposes. It is not an official product of Cisco Systems, Inc. and is not affiliated with, endorsed by, or sponsored by any company. This project relies solely on public documentation and APIs, and contains no proprietary intellectual property or confidential information. There is no conflict of interest with any employer.
A robust Model Context Protocol (MCP) server for Cisco SD-WAN (vManage).
This server bridges the gap between AI agents (like Claude, Gemini, or custom LLMs) and your Cisco SD-WAN fabric. It enables secure, read-only access to operational data, allowing agents to perform tasks like inventory audits, health checks, and policy verification without risking configuration drift.
- About
- Features
- Prerequisites
- Installation
- Configuration
- Usage
- Client Integration
- Available Tools
- Troubleshooting
- Contributing
- License
The Cisco SD-WAN MCP Server abstracts the complexity of the vManage REST API into a set of clean, semantic tools that AI models can understand.
Why use this?
- π‘οΈ Safety First: Designed as a Read-Only interface to prevent accidental changes.
- π§ Simplified Context: Raw API responses are parsed and simplified to save token usage for LLMs.
- π Multi-Transport: Supports standard Stdio (for local apps) and SSE (for remote/web agents).
- π³ Container Ready: Includes a production-ready Dockerfile for easy deployment.
- Inventory Management: List all controllers (vSmart, vBond, vManage) and WAN Edges.
- Template Analysis: View attached device and feature templates.
- Policy Inspection: Retrieve Centralized and Localized policy definitions.
- Operational Health: Check alarms, events, BFD sessions, and control connections.
- Deep Dives: Fetch running configurations, interface statistics, and OMP routes.
- Python 3.10 or higher
- Access to a Cisco vManage instance (on-prem or cloud)
- Credentials with at least
read-onlyprivileges
-
Clone the repository:
git clone https://github.com/techmaker/cisco-sdwan-mcp.git cd cisco-sdwan-mcp -
Install dependencies:
pip install fastmcp requests python-dotenv
The server requires three key pieces of information to connect to your vManage instance.
You can set these directly in your shell or pass them to the Docker container.
| Variable | Description |
|---|---|
VMANAGE_IP |
IP address or Hostname of your vManage instance. |
VMANAGE_USERNAME |
Username for authentication. |
VMANAGE_PASSWORD |
Password for authentication. |
For local development, create a .env file in the project root:
VMANAGE_IP=ip_address
VMANAGE_USERNAME=username
VMANAGE_PASSWORD=password(Note: Never commit your .env file to version control.)
Ideal for integration with desktop applications like Claude Desktop.
python sdwan_mcp_server.py --transport stdioBest for remote connections, web agents, or debugging.
python sdwan_mcp_server.py --transport sse --host 0.0.0.0 --port 8000- Server URL:
http://localhost:8000/sse
Build the image:
docker build -t cisco-sdwan-mcp .Run in Stdio Mode:
docker run -i --rm \
-e VMANAGE_IP=ip_address \
-e VMANAGE_USERNAME=username \
-e VMANAGE_PASSWORD=password \
cisco-sdwan-mcp --transport stdioRun in SSE Mode:
docker run -d -p 8000:8000 \
-e VMANAGE_IP=ip_address \
-e VMANAGE_USERNAME=username \
-e VMANAGE_PASSWORD=password \
cisco-sdwan-mcp --transport sse --host 0.0.0.0Add the following to your config file:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"cisco-sdwan": {
"command": "python",
"args": ["/absolute/path/to/sdwan_mcp_server.py", "--transport", "stdio"],
"env": {
"VMANAGE_IP": "ip_address",
"VMANAGE_USERNAME": "username",
"VMANAGE_PASSWORD": "password"
}
}
}
}Add to your settings.json:
{
"mcpServers": {
"cisco-sdwan": {
"command": "python",
"args": ["sdwan_mcp_server.py", "--transport", "stdio"],
"env": {
"VMANAGE_IP": "ip_address",
"VMANAGE_USERNAME": "username",
"VMANAGE_PASSWORD": "password"
}
}
}
}| Tool Name | Description |
|---|---|
get_devices |
Full inventory of fabric devices (vManage, vSmart, vBond, vEdge). |
get_wan_edge_inventory |
WAN Edge specific details (Serial, Chassis ID). |
get_device_templates |
List all device templates. |
get_feature_templates |
List all feature templates. |
get_centralized_policies |
List Centralized Policy definitions. |
get_alarms |
Retrieve active system alarms. |
get_events |
Fetch recent audit logs and events. |
get_interface_stats |
Get interface statistics for a specific device. |
get_bfd_sessions |
View BFD session status for a device. |
get_omp_routes |
Inspect OMP routes (received/advertised). |
get_control_connections |
Check DTLS/TLS control connections. |
get_running_config |
Fetch the full running configuration. |
Q: Connection Refused or Timeout
- Ensure
VMANAGE_IPis reachable from your machine or container. - If using Docker on Linux, add
--network hostor ensure routing is correct.
Q: SSL Certificate Warnings
- The server suppresses insecure warnings by default (
verify=False). If you have a valid certificate, you can modify the client code to verify it.
Q: Login Failed
- Double-check your username and password.
- Ensure your account has API access privileges.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
