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: central-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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to query and monitor wireless clients in Cisco Catalyst Center infrastructure, providing intelligent client searches, health monitoring, and network diagnostics through natural language.
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to query HPE Aruba Networking Central data (sites, devices, clients, alerts, events) through natural language.6MIT
- 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
Related MCP Connectors
AI agent run monitoring with incident replay and SLA receipts.
An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.
Ask AI about your ads — query Meta, TikTok, and Google Ads performance in natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/weegienamja/sdwan-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server