AI网络助手
🤖 一种基于人工智能的网络自动化助手,使用MCP在Containerlab设置中安全地调用pyATS工具来对抗Arista cEOS设备。自然聊天以运行show命令、推送配置、验证状态,并可选择使用Terraform配置实验室EC2主机。
______________________________________________________________________
演示

______________________________________________________________________
架构图
╔════════════════════════════════════╗
║ AI Network Assistant Flow ║
╚════════════════════════════════════╝
┌──────────┐
│ User │
└─────┬────┘
│ chat query
▼
┌──────────────────────┐
│ agent.py (Gemini) │ ◄─ Gemini API
└──────────┬───────────┘
│ MCP stdio
│ (list_devices, run_show, configure)
▼
┌──────────────────────┐
│ server.py (FastMCP) │ ◄─ pyATS
└──────────┬───────────┘
│ SSH (testbed.yaml)
▼
┌────────────────────────┐
│ Containerlab Topology │
│ ┌────┐ ┌────┐ ┌────┐ │
│ │ceos│──│ceos│─│ceos│ │
│ │ 1 │ │ 2 │ │ 3 │ │
│ └────┘ └────┘ └────┘ │
└────────────────────────┘
Optional: Terraform → EC2 → Containerlab → cEOS______________________________________________________________________
工作原理(机制)
- MCP首次设计:服务器通过MCP公开安全、明确的网络自动化工具(列出设备、运行显示、推送配置、ping等)。
- 人工智能代理(Gemini):
src/agent.py使用Gemini,并在需要时调用MCP工具。该模型从不具有原始设备访问权限;它仅通过MCP工具起作用。 - pyATS集成:
src/server.py加载pyATS试验台(PYATS_TESTBED_PATH)并使用稳健的发送/期望流在设备上执行命令。 - Containerlab拓扑结构:Arista cEOS实验室样本如下
containerlab/带着一个topology.clab.yaml以及一个现成的pyATS测试台。 - 可选的云配置:
terraform/如果您喜欢云实验室环境,可以启动EC2主机来运行Containerlab。
主要特点:
- 工具安全:AI只能做MCP工具允许的事情。破坏性命令被设计阻止。
- 可重复实验室:Containerlab拓扑+测试平台YAML=快速、可重复的演示。
- 云可选性:本地或EC2。使用适合您环境的东西。
______________________________________________________________________
设置
1) Python虚拟环境
使用venv来避免依赖冲突。
cd AI-Network-Assistant
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt2) 环境变量(.env)
创建一个 .env 项目根目录中的文件(它已在 .gitignore 以避免秘密泄露)。
cat > .env << 'EOF'
GEMINI_API_KEY=your_gemini_api_key_here
PYATS_TESTBED_PATH=./containerlab/testbed_containerlab.yaml
EOF笔记:
GEMINI_API_KEY代理人要求。PYATS_TESTBED_PATH必须指向您的pyATS测试台YAML。现成的文件存在于containerlab/testbed_containerlab.yaml.
3) Containerlab(本地实验室)
此仓库包括一个简单的3节点Arista cEOS拓扑。
使用辅助脚本安装Containerlab和依赖项:
./clab.sh部署实验室:
sudo containerlab deploy -t containerlab/topology.clab.yaml您有:
- 3个cEOS节点(
ceos1,ceos2,ceos3)启动配置如下containerlab/backup_configs/ - 链接定义见
containerlab/topology.clab.yaml - 一个现成的pyATS测试台
containerlab/testbed_containerlab.yaml具有SSH访问权限和默认凭据(admin/admin对于演示)
完成后拆卸:
sudo containerlab destroy -t containerlab/topology.clab.yaml4) 可选:使用Terraform配置EC2主机
如果你想在AWS而不是本地运行实验室,你可以配置一个实例,然后在那里安装Containerlab。如果你没有使用云,你可以跳过这一节。
安装AWS CLI和Terraform:
./terraform.sh配置AWS凭据(一次):
aws configure审查/调整 terraform/terraform.tfvars 根据需要,然后提供:
cd terraform
terraform init
terraform plan
terraform apply -auto-approve有用的输出将包括实例详细信息和SSH命令。配置后,通过SSH连接到实例,克隆此仓库,重复步骤1-3,并在云VM中部署Containerlab拓扑。
完成后销毁:
terraform destroy -auto-approve______________________________________________________________________
运行AI网络助手
当你的静脉处于活动状态时 .env 已配置:
python3 src/agent.py发生了什么:
- 代理启动并连接到MCP服务器(
src/server.py)超过stdio。 - 服务器从以下位置加载pyATS测试平台
PYATS_TESTBED_PATH并暴露工具。 - 你和代理人聊天;必要时,它调用MCP工具对设备进行操作。
示例问题:
- “列出设备”
- “在clab-test_network-ceos1上运行显示ip路由”
- “在clab-test_network-ceos2上配置Ethernet1的描述”
- “从clab-test_network-ceos1 Ping 10.0.12.2”
______________________________________________________________________
建筑细部
- 服务器(
src/server.py)
- 用途 fastmcp 通过MCP(stdio传输)公开工具。 - 通过以下方式加载pyATS试验台 PYATS_TESTBED_PATH 并按需连接到设备。 - 实现安全助手来运行show命令、推送配置、获取日志和运行ping。 - 清理CLI输出(删除ANSI代码),阻止危险输入,并干净地断开连接。
- 代理商(
src/agent.py)
- 负载 .env 并初始化Gemini(google-generativeai). - 作为stdio客户端连接到MCP服务器,并将服务器工具作为功能反映到Gemini。 - 向Gemini发送用户提示,处理函数调用,执行MCP工具,返回结果。 - 提供一个简单的聊天循环,供交互式使用。
- Containerlab和pyATS
- containerlab/topology.clab.yaml 定义cEOS节点和链接。 - 启动配置实时 containerlab/backup_configs/. - pyATS试验台位于 containerlab/testbed_containerlab.yaml 指向具有SSH凭据的实验室设备IP。
- 地形(可选)
- terraform/ 定义EC2实例、安全组和实例状态控制。 - terraform.sh 在运行之前在计算机上安装AWS CLI和Terraform terraform 命令。
______________________________________________________________________
故障排除
- 确保
.venv已激活,并且pip install -r requirements.txt成功。 - 验证
.env存在有效GEMINI_API_KEY和PYATS_TESTBED_PATH. - 确认Containerlab设备可以使用测试台YAML中的IP通过SSH访问。
- 如果在AWS中运行,请确认安全组允许从您的IP进行SSH。
______________________________________________________________________
安全和范围
- MCP服务器将操作限制在定义的工具上;危险命令被拒绝。
- 示例:擦除/删除/重定向在命令过滤器和配置应用程序中被阻止。您可以查看@mcp.tools了解实施情况。
- 始终检查并调整启动配置、凭据和安全组以用于生产。
______________________________________________________________________
贡献
欢迎投稿!请按照以下步骤操作:
- 分叉存储库
- 创建要素分支
git checkout -b feature-branch-name- 提交您的更改
git commit -m "Add new feature"- 推你的叉子
git push origin feature-branch-name- 打开拉取请求
______________________________________________________________________
许可证
Apache 2.0
