使用说明
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,跟随 发现优先工作流:
- 第一步(探索):使用
pyats_discover_json_structure获取数据结构的微小“仅密钥”映射(避免大量有效载荷)。 - 第二步(地图):确定您需要的确切JSON路径(例如。,
info.vrf.default.neighbors). - 步骤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映射中。- 智能逻辑:自动应用
stitchingRT(如果设备角色为) 边界叶(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
