Token导航 LogoToken导航

MCP Server · 运维云端

Cml Pyats Validator

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

stdio官方级别未说明来源级核验工具 8
PythonClaude云端部署Claude Desktop

快速开始

作者 / 组织
MediocreTriumph
提供方
MediocreTriumph

工具数量

8

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Cml Pyats Validator 属于运维云端类 MCP Server,公开资料标注 8 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude,有可以直接复制的安装命令;接入前先确认权限范围。

分类

运维云端

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

pip install -e .

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 对应的运行时,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 8 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

详细介绍

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
  • 专为网络工程教育而设计

工具与能力

工具数量

8

资源数量

0

提示词数量

0

能力标签

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

支持客户端

Claude DesktopClaude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

看服务状态

查询容器、日志和监控指标,定位异常。

执行部署变更

在权限范围内触发发布、回滚和环境切换。

核对资源用量

汇总用量,找出闲置和超额的部分。

选择建议

值得选的地方

  • 只提供 8 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 运行环境,换机器要重新装一遍。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在运维云端场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Cml Pyats Validator

MCP World · 本页

8stdio有1 个2026-05-17
Ui Tars Desktop 8a825770

MCP World

0stdio有1 个2026-05-17
Elie222 MCP

MCP World

0未说明未标注1 个2026-05-17
Arizeai Phoenix MCP

MCP World

0stdio有3 个2026-05-17
Unity MCP 87ee506e

MCP World

42HTTP有2 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Cml Pyats Validator 怎么安装?

公开资料给出的安装命令是 pip install -e .,运行环境为 未标注。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Cml Pyats Validator 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Cml Pyats Validator 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Cml Pyats Validator 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Cml Pyats Validator 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP