Cisco vManage MCP Server
Cisco vManage MCP Server
一个只读的 Model Context Protocol 服务器,用于 Cisco SD-WAN vManage,让 AI 客户端可以通过自然语言查询网络健康状态、设备、隧道、BFD 会话、OMP 对等体、告警、策略和配置状态。
该项目刻意围绕一个简单的边界构建:
API 收集事实。Python 计算信号。LLM 解释证据。
与其让模型从原始 API 载荷中即兴得出网络结论,服务器提供了结构化工具和确定性关联层。Python 服务计算健康信号、故障范围、爆炸半径和排序后的根因假设;AI 客户端则用于选择工具、解释生成的证据并根据操作员需求调整详细程度。
20 个只读工具: 16 个检索工具和 4 个诊断工作流。
独立项目。不是 Cisco 官方产品或 Cisco 支持的集成。
为什么构建它
SD-WAN 故障排查通常意味着在设备状态、控制连接、BFD 会话、告警、隧道性能和策略信息之间来回切换,才能形成有用的整体视图。
该项目探索了 AI 如何让这些运维数据更容易查询,同时不让语言模型成为事实来源。它提供对 vManage 遥测数据的自然语言访问,同时将网络推理、安全控制和证据溯源保留在普通应用代码中。
典型问题包括:
"SD-WAN 网络整体状况如何?"
"哪些站点受此事件影响?"
"这个设备故障是孤立的还是更大问题的一部分?"
"网络是否足够健康以进行计划中的变更?"
"给我一份给领导层的简短事件摘要和给工程团队的技术细节。"
Related MCP server: Cisco Meraki MCP Server
AI 设计
AI 在该项目中以两种不同的方式使用。
运行时 AI
诸如 Claude 之类的 MCP 客户端可以使用自然语言选择和调用服务器的工具。模型接收结构化结果,而不是对 vManage 的无限制访问,并且不负责计算底层网络健康信号。
运行时设计遵循五项原则:
API 收集事实,Python 计算信号,LLM 解释结果。
结论带有证据。 健康和诊断信号引用用于推导它们的 vManage API 数据。
部分结果是明确的。 如果某个数据源失败,响应会指出缺失的内容,而不是将不完整的评估呈现为完整。
设计上只读。 当前工具面仅使用 GET 操作。
审计一切。 可以记录工具调用和 API 活动,并脱敏敏感值。
AI 辅助开发
AI 辅助开发被用于加速原型设计、实现、测试生成和迭代。架构、vManage API 行为、网络逻辑、关联规则、安全边界和技术输出均通过单元测试、模拟 API 响应以及针对 Cisco DevNet SD-WAN 沙箱的测试进行了独立验证。
目标是利用 AI 提高工程速度,同时保留对系统中正确性、网络语义和运维安全至关重要的部分的明确控制。
架构
flowchart TD
subgraph Clients["AI Clients"]
C1["Claude Desktop"]
C2["Claude Code"]
C3["Cursor / Other MCP Clients"]
end
Clients -- "stdio or HTTP/MCP" --> Server
subgraph Server["cisco-vmanage-mcp"]
subgraph Tools["MCP Tools"]
T1["Device Monitoring"]
T2["Alarms & Events"]
T3["Tunnel / BFD / OMP"]
T4["Interfaces & Control"]
T5["Diagnostics & Correlation"]
end
subgraph Services["Deterministic Python Services"]
S1["Health Signals"]
S2["Failure Scope"]
S3["Root-Cause Hypotheses"]
S4["Blast Radius"]
S5["Audit & Evidence"]
end
end
Tools --> Services
Services --> VMClient["VManageClient\nhttpx + session/auth handling"]
VMClient --> API["Cisco SD-WAN vManage\n/dataservice/... REST API"]
API --> Network["SD-WAN Fabric"]可用工具
检索工具(16 个)
工具 | 用途 | vManage 数据 |
| 列出网络设备及其状态和过滤器 |
|
| 单台设备的详细状态 |
|
| 接口错误和丢包计数器 |
|
| 接口、状态、寻址和流量 |
|
| IPsec 隧道健康、抖动、延迟和丢包 |
|
| BFD 会话状态 |
|
| OMP 对等体状态 |
|
| 带严重级别/时间过滤器的活动告警 |
|
| 按严重级别统计的告警数量 |
|
| 最近的系统事件 |
|
| vSmart 策略状态 |
|
| 设备模板和关联 |
|
| 设备的运行配置 |
|
| CPU、内存和磁盘状态 |
|
| vSmart/vBond 控制连接 |
|
| 综合网络摘要 | 多个端点 |
诊断工具(4 个)
工具 | 运维用途 |
| 关联网络状态,分类故障范围,估算爆炸半径,并带证据对根因假设进行排序 |
| 深度单设备诊断,结合更广泛的网络上下文以区分孤立故障与更广泛的故障 |
| 变更前健康检查,在计划工作前返回阻塞项和警告 |
| 为管理层或工程受众生成结构化的事件上下文 |
关联与诊断
诊断层在呈现评估之前会组合多个 vManage 观测结果。它可以:
将不可达的 WAN 边缘设备与控制连接和 BFD 状态关联
将 BFD 故障映射到可能的传输相关状况
区分设备级、站点级和网络级故障模式
按站点和受影响设备数量估算爆炸半径
带置信度和支持性观测对根因假设进行排序
识别缺失数据何时会使评估不完整
示例:
Fabric Health: CRITICAL
Controllers: 3/3 reachable
WAN Edges: 3/4 reachable
Impact scope: site
Site 100 is affected while other sites remain reachable.
Hypothesis: site transport outage
Confidence: high
Evidence:
- edge unreachable
- no BFD sessions
- no control connections
- other sites healthy
Data sources:
- GET /dataservice/device: OK
- GET /dataservice/alarms/count: OK假设就是作为假设呈现的。服务器不将关联视为物理根因的证据。
运维护栏
当前服务器有意设计为只读。
所有 20 个 MCP 工具都使用只读的 vManage API 操作
readOnlyHint: true和destructiveHint: false注解暴露给 MCP 客户端凭据来自环境变量,绝不会出现在工具输出中
审计日志会脱敏密码和会话令牌
瞬时故障使用指数退避重试
认证刷新是并发安全的
部分结果处理在某个数据源不可用时保留有用的证据
工具描述定义了模型可以从结果中推断什么、不可以推断什么
故障处理
客户端区分运维故障,而不是将它们归并为通用错误:
RateLimitErrorNotFoundErrorPermissionErrorTimeoutErrorConnectionError
对于瞬时 HTTP 故障(如 429 和 5xx 响应),可以使用指数退避重试请求。如果某个数据源仍然不可用,诊断响应会明确标识缺失的数据源以及哪些结论可能因此不完整。
项目结构
src/cisco_vmanage_mcp/
├── server.py # MCP server and tool registration
├── client.py # Async vManage client, auth, retry/backoff
├── services/
│ ├── health_check.py # Deterministic health signals
│ ├── correlation.py # Failure scope, hypotheses, blast radius
│ └── audit.py # Structured audit logging
├── tools/
│ ├── device_tools.py
│ ├── tunnel_tools.py
│ ├── alarm_tools.py
│ ├── health_tools.py
│ ├── policy_tools.py
│ ├── config_tools.py
│ └── diagnostic_tools.py
├── models/ # Pydantic validation
└── utils/
├── errors.py # Exception taxonomy
└── formatters.py # Structured output formatters
tests/
└── test_health_and_correlation.py快速开始
需要 Python 3.11 或更高版本。
git clone https://github.com/weegienamja/sdwan-mcp-server.git
cd sdwan-mcp-server
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
cp .env.example .env
# Add your vManage connection details to .env
pytest -v
npx @modelcontextprotocol/inspector python -m cisco_vmanage_mcp配置
变量 | 描述 | 默认值 |
| vManage 主机名或 IP |
|
| vManage HTTPS 端口 |
|
| vManage 用户名 | 必填 |
| vManage 密码 | 必填 |
| 验证 SSL 证书 |
|
| 最大瞬时故障重试次数 |
|
| 可选的 JSONL 审计日志 | 已禁用 |
VMANAGE_VERIFY_SSL=false 用于实验室和 DevNet 沙箱环境。生产环境应启用证书验证。
与 Claude Code 一起使用
cd sdwan-mcp-server
claude mcp add cisco-vmanage \
-e VMANAGE_HOST=sandbox-sdwan-2.cisco.com \
-e VMANAGE_PORT=443 \
-e VMANAGE_USERNAME=your_username \
-e VMANAGE_PASSWORD=your_password \
-e VMANAGE_VERIFY_SSL=false \
-- .venv/bin/python -m cisco_vmanage_mcp然后用自然语言查询网络:
How is the SD-WAN fabric looking?
Are there any critical alarms?
Which sites are affected?
Show BFD sessions for this edge.
Is the fabric healthy enough for a planned change?任何兼容 MCP 的客户端都可以使用该服务器。该项目已使用基于 Claude 的客户端和 MCP Inspector 进行了测试。
测试
该仓库目前包含 46 个单元测试,使用模拟的 vManage 响应。
覆盖范围包括:
健康信号计算
告警优先级
站点分组
设备级 vs 站点级 vs 网络级故障范围
根因假设排序
网络健康评估
部分结果行为
设备诊断
审计脱敏
异常映射和错误处理
pip install -e ".[dev]"
pytest -v该服务器还已针对 运行 vManage 20.10.1 的 Cisco DevNet 常开 SD-WAN 沙箱 进行了测试。
兼容性
要求 | 详情 |
Python | 3.11+ |
vManage | 已针对 20.10.1 测试;预期适用于 20.9+ API 兼容环境 |
vManage 角色 | 当前只读工具集需要 |
MCP 客户端 | Claude Desktop、Claude Code、Cursor 和其他兼容 MCP 的客户端 |
示例操作员工作流
工作流 | 工具 | 问题 |
事件分类 |
| 哪些站点受到影响,哪些证据指向可能的故障域? |
设备诊断 |
| 此边缘故障是孤立事件,还是更大范围问题的一部分? |
变更前检查 |
| 网络结构是否足够健康以支持计划中的工作? |
高管简报 |
| 用几句话概括影响是什么? |
工程交接 |
| 哪些设备、会话、传输和告警值得关注? |
遥测
可选的匿名遥测默认禁用,需要显式选择启用。
启用后,它可以记录:
工具名称
匿名用户哈希
执行时长
成功/失败
服务器版本
时间戳
它不会收集凭据、设备 IP 或主机名、告警内容、API 响应体、配置数据或其他个人身份信息。
export VMANAGE_MCP_TELEMETRY=true
export SPLUNK_HEC_URL=https://your-splunk-instance:8088/services/collector
export SPLUNK_HEC_TOKEN=your-hec-token要保持遥测禁用,请勿设置 VMANAGE_MCP_TELEMETRY,或将其显式设置为 false。
安全
凭据从环境变量中读取
会话 cookie 仅保留在内存中
凭据和令牌会从审计输出中移除
身份验证失败时会刷新 XSRF 令牌,并执行并发安全的重新身份验证
当前没有 MCP 工具会修改 vManage 配置
可通过
VMANAGE_VERIFY_SSL=true启用 SSL 验证
路线图
潜在的未来工作包括:
变更前/变更后快照对比
拓扑感知的叠加网络路径追踪
SLA 和应用路由性能趋势分析
事件驱动告警
与其他网络可观测性和安全系统的跨域关联
基于受限工具构建的自动化诊断运行手册
更大规模的 CML 和网络结构性能测试
任何未来的写入能力都需要单独的安全模型,而不是简单地扩展现有的只读工具集。
许可
根据 Apache License 2.0 许可。
致谢
感谢 Cisco DevNet 提供用于集成测试的 SD-WAN 沙盒
感谢 Model Context Protocol 以及用于暴露服务器的 Python MCP 工具
贡献
在仓库访问权限允许的情况下,欢迎提交 Issue 和拉取请求。新增或修改的工具应包含单元测试,除非另有明确设计,否则应保持只读安全模型,并将确定性网络逻辑保留在 LLM 层之外。
This server cannot be deployed
Maintenance
Related MCP Connectors
AI helper for choosing and speccing network & security products from Cisco, Arista, Juniper and more
Query your SEO data in plain language: rankings, audits, backlinks, competitors and AI visibility.
Ask questions in plain language, get answers from your business database. No SQL required.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to query HPE Aruba Networking Central data (sites, devices, clients, alerts, events) through natural language.7MIT
- AlicenseNot gradedqualityDmaintenanceEnables intelligent troubleshooting, monitoring, and configuration of Cisco Meraki networks through natural language, with agentic workflows for automated diagnostics and health checks.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to securely access and query Prisma SD-WAN operational data for inventory, health checks, topology analysis, and policy verification through natural language.275MIT
- AlicenseBqualityDmaintenanceEnables natural language automation of Cisco SD-WAN vManage, including device management, template deployment, policy configuration, monitoring, and software upgrades.2MIT