Token导航 LogoToken导航TokenDH.com
Cml Pyats Validator logo
运维云端stdio官方级别未说明来源级核验

Cml Pyats Validator

MCP Server

一个使用PyATS解析器和SSH控制台访问的网络设备验证工具,用于验证路由协议、检查接口状态和测试网络可达性。

工具数

8

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude云端部署Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

MediocreTriumph

提供方

MediocreTriumph

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

CML PyATS验证器

一个精简的MCP(模型上下文协议)服务器,用于使用具有SSH控制台访问权限的PyATS解析器进行网络设备验证。旨在通过提供验证和测试功能来补充CML实验室构建工具。

概述

此服务器使Claude和其他MCP客户端能够:

  • 通过SSH控制台在CML网络设备上执行命令
  • 使用PyATS/Genie解析器(Cisco设备)解析输出
  • 验证路由协议(OSPF、BGP、EIGRP等)
  • 检查接口状态和错误
  • 测试网络可达性(ping/traceroute)
  • 比较设备配置
  • 进行全面的试验台健康检查

建筑

控制台访问:SSHes使用从CML API获得的每个设备控制台密钥直接连接到CML控制台服务器。不需要外部工具。 解析:将PyATS/Genie解析器应用于结构化数据的命令输出 多厂商:Cisco设备获得解析输出;其他人返回原始文本进行LLM解释 运输:支持 stdio (克劳德桌面)和 streamable-http (Docker/远程)模式

特性

8核心工具

  1. 初始化ml_客户端 -使用CML服务器进行身份验证
  2. execute_device_command -使用可选的PyATS解析运行命令
  3. 验证路由协议 -检查OSPF、BGP、EIGRP、STP等。
  4. validate_device_接口 -验证接口状态和错误
  5. test_网络可访问性 -具有实际成功率检测的Ping和traceroute测试
  6. getconfig配置 -检索运行/启动配置
  7. 比较配置 -区分两种配置
  8. run_full_validation -全面的试验台健康检查

支持的协议

  • 路由:OSPF、BGP、EIGRP、RIP
  • 二级:STP、VTP
  • FHRP:HSRP、VRRP

支持设备

  • 完全句法分析:思科IOS、IOS-XE、NX-OS、IOS-XR
  • ASA意识:Cisco ASA使用平台正确命令(show interface, show ospf neighbor等等)
  • 原始输出:Palo Alto、FortiGate、Juniper、Linux等。

安装

先决条件

  • Python 3.10或更高版本
  • 思科建模实验室(CML)2.9+
  • 与CML服务器的网络连接

从源代码安装

# Clone the repository
git clone https://github.com/MediocreTriumph/cml-pyats-validator
cd cml-pyats-validator

# Install with uv
uv sync

# Or with pip
pip install -e .

配置

环境变量

创建一个 .env 项目目录中的文件:

# CML Server Configuration
CML_URL=https://your-cml-server
CML_USERNAME=your-username
CML_PASSWORD=your-password
CML_VERIFY_SSL=true

# Device Credentials (for console access)
DEVICE_USERNAME=cisco
DEVICE_PASSWORD=cisco
DEVICE_ENABLE_PASSWORD=cisco

# Transport (stdio or streamable-http)
TRANSPORT=stdio
HOST=0.0.0.0
PORT=9001

Claude桌面配置

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "cml-pyats-validator": {
      "command": "uvx",
      "args": ["cml-pyats-validator"],
      "env": {
        "CML_URL": "https://your-cml-server",
        "CML_USERNAME": "your-username",
        "CML_PASSWORD": "your-password",
        "DEVICE_USERNAME": "cisco",
        "DEVICE_PASSWORD": "cisco",
        "DEVICE_ENABLE_PASSWORD": "cisco"
      }
    }
  }
}

对于开发安装:

{
  "mcpServers": {
    "cml-pyats-validator": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/cml-pyats-validator",
        "run",
        "cml-pyats-validator"
      ],
      "env": {
        "CML_URL": "https://your-cml-server",
        "CML_USERNAME": "admin",
        "CML_PASSWORD": "password"
      }
    }
  }
}

HTTP/流式HTTP模式

服务器支持 streamable-http 用于远程MCP客户端或Docker部署的传输。通过CLI标志或环境变量进行配置:

# CLI flags
cml-pyats-validator --transport streamable-http --host 0.0.0.0 --port 9001

# Environment variables (useful for Docker)
TRANSPORT=streamable-http HOST=0.0.0.0 PORT=9001 cml-pyats-validator

码头工人

A预制 Dockerfile 在中运行服务器 streamable-http 9001端口上的模式。它迫使 linux/amd64 以便PyATS/Unicon轮子(仅限x86)即使在通过Rosetta的苹果Silicon Mac上也能正常工作。

构建

docker build -t cml-pyats-validator .

docker run -d \
  -p 9001:9001 \
  -e CML_URL=https://your-cml-server \
  -e CML_USERNAME=admin \
  -e CML_PASSWORD=password \
  -e CML_VERIFY_SSL=false \
  -e DEVICE_USERNAME=cisco \
  -e DEVICE_PASSWORD=cisco \
  -e DEVICE_ENABLE_PASSWORD=cisco \
  cml-pyats-validator

MCP端点将在 http://localhost:9001/mcp.

将Claude Desktop连接到Docker

{
  "mcpServers": {
    "cml-pyats-validator": {
      "url": "http://localhost:9001/mcp"
    }
  }
}

使用示例

基本命令执行

Execute "show ip interface brief" on R1 in lab abc123

克劳德将:

  1. 从CML API获取设备信息和控制台密钥
  2. SSH到CML控制台服务器并连接到设备控制台
  3. 执行命令
  4. 使用Genie解析输出(如果是Cisco设备)
  5. 返回结构化数据或原始输出

协议验证

Validate OSPF neighbors on R1 in lab abc123

退货:

  • 邻居状态(满、INIT等)
  • 接口关联
  • 发现的问题
  • 通过/失败状态

该工具会自动检测设备类型(IOS与ASA),并使用正确的命令:

  • 网间网操作系统: show ip ospf neighbor
  • ASA: show ospf neighbor

接口健康检查

Check all interfaces on R1 for errors

退货:

  • 接口运行状态
  • 错误计数(CRC、帧、超限)
  • 需要注意的问题
  • 整体健康评估

设备类型感知命令选择:

  • IOS/IOS-XE/NX-OS: show interfaces
  • ASA: show interface

可达性测试

Can R1 ping 10.1.1.2? The lab ID is abc123

退货:

  • 成功/失败状态(来自实际 Success rate is X percent 解析)
  • 丢包率
  • RTT统计
  • 根据预期结果进行验证

配置管理

Get the running config from R1 and compare it to the startup config

退货:

  • 两种配置
  • 显示变化的统一差异
  • 添加/删除次数

全面验证

Run a full health check on lab abc123

执行:

  • 所有设备的接口状态检查
  • 协议邻居验证
  • 错误检测
  • 连接性测试
  • 汇总通过/失败报告

控制台访问

服务器SSH使用每个设备的控制台密钥直接连接到CML控制台服务器:

  1. 节点查找:通过标签查找设备 GET /api/v0/labs/{lab_id}/nodes
  2. 控制台按键:通过获取密钥 GET /api/v0/labs/{lab_id}/nodes/{node_id}/keys/console?line=0
  3. SSH会话:使用控制台密钥作为用户名打开SSH到CML主机
  4. 命令执行:通过以下方式发送命令并捕获输出 pexpect
  5. 解析器应用程序:将Genie解析器应用于捕获的文本

PyATS解析器集成

运作原理

  1. 设备检测:从CML节点定义中标识设备操作系统
  2. 解析器查找:搜索合适的Genie解析器
  3. 文本解析:将解析器应用于原始命令输出
  4. 结构化输出:如果没有解析器,则返回解析后的数据或原始文本

支持的Cisco设备类型

CML节点定义Genie OS
iosvios
iosvl2ios
csr1000viosxe
nxosvnxos
asavasa
iosxrviosxr

可用的通用解析器

  • show version
  • show ip interface brief
  • show interfaces
  • show ip route
  • show ip ospf neighbor
  • show ip bgp summary
  • show ip eigrp neighbors
  • show spanning-tree
  • show vlan
  • show cdp neighbors
  • 还有100多个。..

故障弱化

当没有解析器可用时:

  • 返回原始文本输出
  • 包括解释解析器不可用的注释
  • 克劳德仍然可以解释结果
  • 适用于所有设备类型

教育用例

网络故障排除实践

I have a lab where OSPF isn't forming neighbors. Can you help me troubleshoot?

Claude使用验证工具来:

  • 检查接口状态
  • 验证OSPF配置
  • 测试连接性
  • 识别不匹配(区域、计时器等)

配置验证

I just configured BGP. Can you verify it's working correctly?

克劳德表演:

  • BGP邻居验证
  • 路线广告检查
  • 配置审查
  • 最佳实践建议

实验室评估

Is my lab configured correctly according to the topology diagram?

克劳德跑:

  • 完整的试验台验证
  • 对所有路由器进行协议检查
  • 接口状态验证
  • 连接矩阵测试

建筑细部

项目结构

cml-pyats-validator/
├── src/
│   └── cml_pyats_validator/
│       ├── __init__.py
│       ├── server.py               # FastMCP server, transport config
│       ├── client.py               # CML API client
│       ├── console_executor.py     # SSH console access via pexpect
│       ├── pyats_helper.py         # Parser integration
│       ├── utils.py                # Helper functions
│       └── tools/
│           ├── __init__.py
│           ├── auth.py
│           ├── execution.py
│           ├── protocol_validation.py  # IOS + ASA protocol commands
│           ├── interface_validation.py # IOS + ASA interface commands
│           ├── reachability.py         # Ping success-rate parsing
│           ├── config_tools.py
│           └── testbed.py
├── Dockerfile                      # x86_64, streamable-http on port 9001
├── entrypoint.sh
├── pyproject.toml
├── uv.lock
├── README.md
└── .env.example

关键组件

CML客户端:处理CML API身份验证、节点查找和控制台密钥检索 控制台执行器:用于设备控制台访问的SSH+pexpect会话管理 PyATSHelper:将设备类型映射到解析器,应用解析 工具:具有设备类型感知验证逻辑的单个MCP工具 工具集:ping、traceroute、configs等的文本解析。

故障排除

身份验证失败

Error: CML authentication failed: 401 Unauthorized

解决方案:检查 CML_URL, CML_USERNAME, CML_PASSWORD 在您的环境中。

解析器不可用

Note: PyATS parser not available for 'show ip route' on ios

解决方案:正常行为——并非所有命令都有解析器。返回原始输出,Claude可以对其进行解释。

找不到设备

Error: Device 'R1' not found in lab

解决方案:验证设备标签是否完全匹配(区分大小写)。

控制台密钥错误

Error: Failed to get console key for device 'R1'

解决方案:确保实验室正在运行,并且节点已在CML中启动。控制台密钥仅适用于正在运行的节点。

苹果硅上的PyATS

PyATS/Unicon仅提供x86_64车轮。在Apple Silicon Mac上,使用Docker镜像(在Rosetta下运行)或Linux x86 VM。

发展

运行测试

# Install dev dependencies
uv sync --all-extras

# Run tests
pytest tests/

添加新工具

  1. 在相应的模块中创建工具功能 tools/
  2. 导入 tools/__init__.py
  3. 注册于 server.py 随着 @mcp.tool() 装饰器
  4. 用用法示例更新README

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件

相关项目

  • cml实验室建设者:用于创建CML拓扑的MCP服务器
  • PyATS:思科的Python自动化框架
  • 精灵:PyATS解析器库

致谢

  • 建于 FastMCP 2.0
  • 使用PyATS/Genie进行解析
  • 灵感来自xorrkaz/cml-mcp
  • 专为网络工程教育而设计

目录标签

目录标签

PythonClaude云端部署网络验证混合部署SSH控制台PyATS解析路由协议验证网络测试

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP