README
🚀 pyATS MCP 服务器
本项目构建了一个基于模型上下文协议(MCP)的服务器,它集成了 Cisco pyATS 和 Genie 的强大功能。借助 STDIO 通道,服务器运用 JSON - RPC 2.0 协议,实现了对网络设备结构化、基于模型的交互。
🚨 值得注意的是,该服务器不依赖 HTTP 或 SSE 进行通信,所有数据交互均通过标准输入输出(STDIN/STDOUT)完成。这一特性使其非常适合安全嵌入式、容器化或 LangGraph 工具集成场景。
✨ 主要特性
- 设备连接:能够连接到 Cisco IOS/NX - OS 设备,设备信息来源于 pyATS 测试床。
- 安全命令执行:支持安全地执行经过验证的 CLI 命令,如
show、ping等。 - 配置更改控制:允许进行受控的配置更改。
- 输出多样化:可返回结构化(解析)或原始输出。
- 工具暴露:通过
tools/discover和tools/call暴露一组定义良好的工具。 - 安全可移植:完全通过 STDIO 运行,具备最小的攻击面和最大的可移植性。
🚀 快速开始
设置测试床路径
export PYATS_TESTBED_PATH=/absolute/path/to/testbed.yaml
启动服务器
连续 STDIO 模式(默认)
python3 pyats_mcp_server.py
此模式会启动一个长期运行的进程,该进程从标准输入读取 JSON - RPC 请求,并将响应写入标准输出。
一次性模式
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/discover"}' | python3 pyats_mcp_server.py --oneshot
该模式用于处理单个 JSON - RPC 请求,处理完成后即退出。
📦 安装指南
构建 Docker 容器
docker build -t pyats-mcp-server .
运行 Docker 容器(STDIO 模式)
docker run -i --rm \
-e PYATS_TESTBED_PATH=/app/testbed.yaml \
-v /your/testbed/folder:/app \
pyats-mcp-server
🧠 可用 MCP 工具
| 工具 | 描述 |
| ---- | ---- |
| run_show_command | 安全执行 show 命令,可选择解析输出 |
| run_ping_command | 执行 ping 测试,返回解析或原始结果 |
| apply_configuration | 应用受控的配置命令(支持多行) |
| learn_config | 获取运行配置(show run brief) |
| learn_logging | 获取系统日志(show logging last 250) |
所有输入均通过 Pydantic 模式进行验证,以确保安全性和一致性。
🤖 LangGraph 集成
可将 MCP 服务器作为工具节点添加到您的 LangGraph 管道中,示例如下:
("pyats-mcp", ["python3", "pyats_mcp_server.py", "--oneshot"],)
✍️ 作者
John Capobianco,Selector AI 的产品营销传教士,《自动化你的网络》的作者。
如果您有任何需求,欢迎提出,作者乐于添加以下内容:
- 一个样本 LangGraph 图配置
- 配套客户端脚本
- CI/CD 集成(例如 GitHub Actions)
注意事项
testbed.yaml 文件与 Cisco DevNet 的 Cisco Modeling Labs (CML) 砂箱兼容!
Scan to join WeChat group