网络设备管理服务器

pyATS MCP Server是一个基于Cisco pyATS和Genie功能的模型上下文协议服务器,支持通过JSON-RPC 2.0协议对现代IOS-XE网络设备进行结构化、模型驱动的交互。

  • by skullq
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 skullq/pyATS_MCP

使用说明

pyATS MCP服务器

该项目实现了一个模型上下文协议(MCP)服务器,该服务器封装了Cisco pyATS和Genie功能。它实现了结构化、模型驱动的交互 现代IOS-XE 通过STDIO使用JSON-RPC 2.0协议的网络设备(包括Catalyst 9K和IOL)。

🚨 备注:此服务器针对以下内容进行了优化 现代IOS-XE (以及IOL等等效物),以确保无缝的EVPN VXLAN和MVPN配置。


🔧 核心能力

  • 现代IOS-XE优化:完全支持最新的配置标准(例如Auto RD/RT、L3VNI/L2VNI)。
  • 智能EVPN配置:用于第1天结构、第2天L2VNI/L3VNI和NG-MVPN的基于生命周期的工具。
  • 设备角色感知:角色的内置逻辑: 叶子(LF), 脊椎(SP), 边界叶(BL),以及 边境网关(BGW) 自动 RT缝合.
  • 代币经济(Genie Dq):内置 Genie字典查询(Dq) 支持过滤大型JSON输出并保存LLM上下文窗口令牌。
  • Ad-Hoc连接:在任何没有 testbed.yaml 文件。
  • 动态设备管理:通过自然语言聊天实时将设备添加到pyATS测试平台。
  • 安全配置:强制阻止不安全命令(擦除、重新加载等)并使用Pydantic进行验证。

🚀 入门指南

1.设定你的试验台路径

服务器使用 testbed.yaml 默认情况下。您可以定义您的环境:

export PYATS_TESTBED_PATH=/path/to/your/testbed.yaml

2.运行服务器

python3 pyats_mcp_server.py

3.Docker模式

docker build -t pyats-mcp-server .
docker run -i --rm -v /your/testbed/path:/app -e PYATS_TESTBED_PATH=/app/testbed.yaml pyats-mcp-server

⚡ 性能和令牌优化(黄金工作流程)

尽量减少延迟和令牌成本,特别是在使用时 本地LLMs,跟随 发现优先工作流:

  1. 第一步(探索):使用 pyats_discover_json_structure 获取数据结构的微小“仅密钥”映射(避免大量有效载荷)。
  2. 第二步(地图):确定您需要的确切JSON路径(例如。, info.vrf.default.neighbors).
  3. 步骤3(筛选):呼叫 pyats_learn_feature 或 pyats_run_show_command 随着 filter_query (Genie Dq)。

为什么? 传输50000个JSON令牌是主要的瓶颈。在服务器端将其过滤到50个令牌 快10倍 而不是迁移到更强大的LLM或升级您的网络。


🧠 专用工具

连接和设备管理

  • pyats_run_command_adhoc:(One Shot)使用IP、用户名和密码在任何设备上立即执行命令。
  • mcp_pyats_add_device_to_testbed:将新设备注册到当前会话的测试台,以便后续调用工具。

功能学习和故障排除

  • pyats_learn_feature:学习网络功能(OSPF、BGP等)作为深度JSON模型。
    • 代币提示:使用 filter_query (Dq)只得到你需要的东西。
  • pyats_run_show_command:运行显示具有可选Genie解析和Dq过滤的命令。
  • pyats_verify_bgp_convergence:在检查路由表之前,对BGP对等体状态进行智能轮询。

EVPN VXLAN结构(第一天和第二天)

  • pyats_provision_evpn_fabric:初始化BGP L2VPN EVPN、NVE源和所需的BGP路由器id/ASN 自动RD/RT.
  • pyats_add_l3vni:将租户VRF、L3VNI和VNI添加到VLAN映射中。
    • 智能逻辑:自动应用 stitching RT(如果设备角色为) 边界叶(BL) 或 边境网关(BGW).
  • pyats_add_l2vni:使用可选的Anycast网关在整个结构中提供L2扩展。
  • pyats_provision_mvpn:为租户VRF添加NG-MVPN(BGP信令)。

🪙 使用Genie Dq保存代币

网络输出可能很大。该服务器支持 吉尼Dq (字典查询)直接在工具中。

示例:临时命令(不需要测试台)

{
  "method": "tools/call",
  "params": {
    "name": "pyats_run_command_adhoc",
    "arguments": {
      "ip": "172.20.20.5",
      "os_type": "iosxe",
      "username": "admin",
      "password": "admin",
      "command": "show version"
    }
  }
}

示例:令牌保存Dq过滤器

{
  "method": "tools/call",
  "params": {
    "name": "pyats_run_show_command",
    "arguments": {
      "device_name": "Leaf-01",
      "command": "show ip ospf neighbor",
      "filter_query": "info.vrf.default.address_family.ipv4.instance.1.areas.0.0.0.0.interfaces.GigabitEthernet1.neighbors"
    }
  }
}

你只需要5行,而不是1000行。


🔒 安全与验证

  • 安全配置: pyats_apply_configuration 和 pyats_direct_ssh_configure 阻止危险命令,如 write erase, reload,或 delete.
  • BGP严格规则:自动执行 no bgp default ipv4-unicast 以及用于EVPN稳定性的显式邻居激活。
  • 输入保护:所有工具输入都通过Pydantic进行验证,以防止CLI注入或参数格式错误。

📜 集成示例(Claude/LangGraph)

{
  "mcpServers": {
    "pyats": {
      "command": "python3",
      "args": ["/path/to/pyats_mcp_server.py"],
      "env": {
        "PYATS_TESTBED_PATH": "/path/to/testbed.yaml"
      }
    }
  }
}

参考

卡宝卞高 https://github.com/automateyournetwork/pyATS_MCP