返回市场
pyATS_MCP服务器

pyATS_MCP服务器

作者:automateyournetwork51 星标更新:2025-09-13

项目介绍

pyATS MCP Server

信任评分

该项目实现了一个模型上下文协议(MCP)服务器,该服务器封装了Cisco pyATS和Genie的功能。它通过使用JSON-RPC 2.0协议在STDIO上实现了与网络设备的结构化、模型驱动交互。

🚨 本服务器不使用HTTP或SSE。所有通信均通过STDIN/STDOUT(标准输入/输出)进行,使其非常适合安全、嵌入式、容器化或基于LangGraph工具集成。

🔧 功能概述

  • 连接到定义在pyATS测试床中的Cisco IOS/NX-OS设备
  • 支持安全执行验证过的CLI命令(如show、ping)
  • 允许受控配置更改
  • 返回结构化(解析后)或原始输出
  • 通过tools/discover和tools/call暴露一组明确定义的工具
  • 完全通过STDIO操作,以最小化表面区域并提高可移植性

🚀 使用方法

  1. 设置您的测试床路径

export PYATS_TESTBED_PATH=/绝对路径/到/testbed.yaml

  1. 运行服务器

连续STDIO模式(默认)


python3 pyats_mcp_server.py

启动一个长时间运行的过程,从stdin读取JSON-RPC请求,并将响应写入stdout。

一次性模式


echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/discover"}' | python3 pyats_mcp_server.py --oneshot

处理单个JSON-RPC请求并退出。

📦 Docker支持

构建容器


docker build -t pyats-mcp-server .

运行容器(STDIO模式)

docker run -i --rm \
  -e PYATS_TESTBED_PATH=/app/testbed.yaml \
  -v /你的测试床文件夹:/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集成

在您的LangGraph管道中添加MCP服务器作为工具节点,如下所示:


("pyats-mcp", ["python3", "pyats_mcp_server.py", "--oneshot"], "tools/discover", "tools/call")

名称:pyats-mcp

命令:python3 pyats_mcp_server.py --oneshot

发现方法:tools/discover

调用方法:tools/call

基于STDIO的通信确保了与LangGraph工具调用模型的紧密集成,无需打开HTTP端口或暴露REST端点。

📜 示例请求

发现工具


{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/discover"
}

运行Show命令


{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "run_show_command",
    "arguments": {
      "device_name": "router1",
      "command": "show ip interface brief"
    }
  }
}

🔒 安全特性

  • 使用Pydantic进行输入验证
  • 阻止不安全命令,如erase、reload、write
  • 防止管道/重定向滥用(例如,| include, >, copy等)
  • 柔和处理解析回退和错误

📁 项目结构


.
├── pyats_mcp_server.py     # 包含JSON-RPC和pyATS集成的MCP服务器
├── Dockerfile              # Docker容器定义
├── testbed.yaml            # pyATS测试床(用户提供的)
└── README.md               # 本文件

📥 MCP服务器配置示例(通过Docker的pyATS MCP)

要作为容器运行带有STDIO集成的pyATS MCP服务器,请像这样配置您的mcpServers:

{
  "mcpServers": {
    "pyats": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "PYATS_TESTBED_PATH",
        "-v",
        "/绝对路径/到/testbed/文件夹:/app",
        "pyats-mcp-server"
      ],
      "env": {
        "PYATS_TESTBED_PATH": "/app/testbed.yaml"
      }
    }
  }
}

{
  "servers": { 
    "pyats": {
      "type": "stdio",
      "command": "python3",
      "args": [
        "-u",
        "/Users/johncapobianco/pyATS_MCP/pyats_mcp_server.py"
      ],
      "env": {
        "PYATS_TESTBED_PATH": "/Users/johncapobianco/pyATS_MCP/testbed.yaml"
      }
  }
}

🧾 解释: command: 使用Docker启动容器化的pyATS MCP服务器

args:

-i: 保持STDIN打开用于通信

--rm: 执行后自动删除容器

-e: 注入环境变量PYATS_TESTBED_PATH

-v: 将本地测试床目录挂载到容器中

pyats-mcp-server: Docker镜像名称

env:

设置容器内测试床文件的路径(/app/testbed.yaml)

✍️ 作者

John Capobianco

产品营销倡导者,Selector AI

作者,《自动化您的网络》

如果您希望添加以下内容,请告知我:

  • 样例LangGraph图配置
  • 伴随客户端脚本
  • CI/CD集成(例如GitHub Actions)

我很乐意帮忙!

testbed.yaml文件与Cisco DevNet Cisco建模实验室(CML)沙箱兼容!