Skip to main content
Glama

Cisco vManage MCP Server

Python 3.11+ License: Apache 2.0 Tests Read-Only

一个只读的 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 的无限制访问,并且不负责计算底层网络健康信号。

运行时设计遵循五项原则:

  1. API 收集事实,Python 计算信号,LLM 解释结果。

  2. 结论带有证据。 健康和诊断信号引用用于推导它们的 vManage API 数据。

  3. 部分结果是明确的。 如果某个数据源失败,响应会指出缺失的内容,而不是将不完整的评估呈现为完整。

  4. 设计上只读。 当前工具面仅使用 GET 操作。

  5. 审计一切。 可以记录工具调用和 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 数据

vmanage_list_devices

列出网络设备及其状态和过滤器

/dataservice/device

vmanage_get_device_status

单台设备的详细状态

/dataservice/device

vmanage_get_device_counters

接口错误和丢包计数器

/dataservice/device/counters

vmanage_get_device_interfaces

接口、状态、寻址和流量

/dataservice/device/interface

vmanage_list_tunnels

IPsec 隧道健康、抖动、延迟和丢包

/dataservice/device/tunnel

vmanage_get_bfd_sessions

BFD 会话状态

/dataservice/device/bfd/sessions

vmanage_get_omp_peers

OMP 对等体状态

/dataservice/device/omp/peers

vmanage_list_alarms

带严重级别/时间过滤器的活动告警

/dataservice/alarms

vmanage_get_alarm_count

按严重级别统计的告警数量

/dataservice/alarms/count

vmanage_list_events

最近的系统事件

/dataservice/event

vmanage_list_policies

vSmart 策略状态

/dataservice/template/policy/vsmart

vmanage_list_templates

设备模板和关联

/dataservice/template/device

vmanage_get_running_config

设备的运行配置

/dataservice/template/config/running/{uuid}

vmanage_get_system_status

CPU、内存和磁盘状态

/dataservice/device/system/status

vmanage_get_control_status

vSmart/vBond 控制连接

/dataservice/device/control/connections

vmanage_get_fabric_summary

综合网络摘要

多个端点

诊断工具(4 个)

工具

运维用途

vmanage_assess_fabric_health

关联网络状态,分类故障范围,估算爆炸半径,并带证据对根因假设进行排序

vmanage_diagnose_device

深度单设备诊断,结合更广泛的网络上下文以区分孤立故障与更广泛的故障

vmanage_pre_change_validation

变更前健康检查,在计划工作前返回阻塞项和警告

vmanage_incident_summary

为管理层或工程受众生成结构化的事件上下文

关联与诊断

诊断层在呈现评估之前会组合多个 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: truedestructiveHint: false 注解暴露给 MCP 客户端

  • 凭据来自环境变量,绝不会出现在工具输出中

  • 审计日志会脱敏密码和会话令牌

  • 瞬时故障使用指数退避重试

  • 认证刷新是并发安全的

  • 部分结果处理在某个数据源不可用时保留有用的证据

  • 工具描述定义了模型可以从结果中推断什么、不可以推断什么

故障处理

客户端区分运维故障,而不是将它们归并为通用错误:

  • RateLimitError

  • NotFoundError

  • PermissionError

  • TimeoutError

  • ConnectionError

对于瞬时 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_HOST

vManage 主机名或 IP

sandbox-sdwan-2.cisco.com

VMANAGE_PORT

vManage HTTPS 端口

443

VMANAGE_USERNAME

vManage 用户名

必填

VMANAGE_PASSWORD

vManage 密码

必填

VMANAGE_VERIFY_SSL

验证 SSL 证书

false

VMANAGE_MAX_RETRIES

最大瞬时故障重试次数

3

AUDIT_LOG_PATH

可选的 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 角色

当前只读工具集需要 operator 或更高权限

MCP 客户端

Claude Desktop、Claude Code、Cursor 和其他兼容 MCP 的客户端

示例操作员工作流

工作流

工具

问题

事件分类

vmanage_assess_fabric_health

哪些站点受到影响,哪些证据指向可能的故障域?

设备诊断

vmanage_diagnose_device

此边缘故障是孤立事件,还是更大范围问题的一部分?

变更前检查

vmanage_pre_change_validation

网络结构是否足够健康以支持计划中的工作?

高管简报

vmanage_incident_summary

用几句话概括影响是什么?

工程交接

vmanage_incident_summary

哪些设备、会话、传输和告警值得关注?

遥测

可选的匿名遥测默认禁用,需要显式选择启用。

启用后,它可以记录:

  • 工具名称

  • 匿名用户哈希

  • 执行时长

  • 成功/失败

  • 服务器版本

  • 时间戳

不会收集凭据、设备 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 许可。

致谢

贡献

在仓库访问权限允许的情况下,欢迎提交 Issue 和拉取请求。新增或修改的工具应包含单元测试,除非另有明确设计,否则应保持只读安全模型,并将确定性网络逻辑保留在 LLM 层之外。

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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