本项目构建了一个基于模型上下文协议(MCP)的服务器,它集成了 Cisco pyATS 和 Genie 的强大功能。借助 STDIO 通道,服务器运用 JSON - RPC 2.0 协议,实现了对网络设备结构化、基于模型的交互。
🚨 值得注意的是,该服务器不依赖 HTTP 或 SSE 进行通信,所有数据交互均通过标准输入输出(STDIN/STDOUT)完成。这一特性使其非常适合安全嵌入式、容器化或 LangGraph 工具集成场景。
show、ping 等。tools/discover 和 tools/call 暴露一组定义良好的工具。export PYATS_TESTBED_PATH=/absolute/path/to/testbed.yaml
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 build -t pyats-mcp-server .
docker run -i --rm \
-e PYATS_TESTBED_PATH=/app/testbed.yaml \
-v /your/testbed/folder:/app \
pyats-mcp-server
| 工具 | 描述 |
|---|---|
| run_show_command | 安全执行 show 命令,可选择解析输出 |
| run_ping_command | 执行 ping 测试,返回解析或原始结果 |
| apply_configuration | 应用受控的配置命令(支持多行) |
| learn_config | 获取运行配置(show run brief) |
| learn_logging | 获取系统日志(show logging last 250) |
所有输入均通过 Pydantic 模式进行验证,以确保安全性和一致性。
可将 MCP 服务器作为工具节点添加到您的 LangGraph 管道中,示例如下:
("pyats-mcp", ["python3", "pyats_mcp_server.py", "--oneshot"],)
John Capobianco,Selector AI 的产品营销传教士,《自动化你的网络》的作者。
如果您有任何需求,欢迎提出,作者乐于添加以下内容:
testbed.yaml 文件与 Cisco DevNet 的 Cisco Modeling Labs (CML) 砂箱兼容!