一个全面的MCP(模型上下文协议)服务器,用于网络基础设施管理。通过AI助手如Claude Desktop和Warp,在150多个供应商的网络设备上执行CLI命令,监控设备健康和性能,分析集中日志,管理数据中心结构,并控制无线基础设施。
关键特性:
克隆仓库
git clone https://github.com/angoran/git-netai.git
cd git-netai
使用UV同步依赖
uv sync
配置凭据
在项目根目录创建一个.env文件:
# SSH凭据
SSH_USERNAME="your_username"
SSH_PASSWORD="your_password"
# API端点和凭据
LIBRENMS_URL="https://your-librenms-server"
LIBRENMS_TOKEN="your_api_token"
GRAYLOG_URL="https://your-graylog-server"
GRAYLOG_TOKEN="your_api_token"
APIC_URL="https://your-apic-server"
APIC_USERNAME="your_username"
APIC_PASSWORD="your_password"
ARUBA_URL="https://your-aruba-controller:4343"
ARUBA_USERNAME="your_username"
ARUBA_PASSWORD='your_password' # 使用单引号处理特殊字符
macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"NET-AI-ASSISTANT": {
"command": "uv",
"args": ["--directory", "/path/to/git-netai", "run", "python", "main.py"],
"env": {"PYTHONPATH": "/path/to/git-netai"}
}
}
}
位置: ~/.warp/mcp_config.json
{
"mcpServers": {
"NET-AI-ASSISTANT": {
"command": "uv",
"args": ["run", "python", "main.py"],
"env": {"PYTHONPATH": "/path/to/git-netai"},
"working_directory": "/path/to/git-netai"
}
}
}
该服务器提供74个MCP工具,分布在5个类别中:
| 类别 | 工具 | 描述 |
|---|---|---|
| SSH命令执行 | 1 | 通过SSH在150多种网络设备类型上执行CLI命令 |
| 网络监控(LibreNMS) | 17 | 设备、接口、传感器监控和事件跟踪 |
| 日志管理(Graylog) | 4 | 集中日志搜索、流和分析 |
| 数据中心结构(Cisco APIC) | 35 | ACI结构健康、租户、策略和容量规划 |
| 无线管理(Aruba) | 17 | AP监控、客户端跟踪、射频优化和QoS |
在设备10.1.1.1上使用cisco_ios执行"show version"
显示来自位置"datacenter-1"的所有设备
在过去的1小时内搜索Graylog中的"认证失败"
列出Aruba控制器上的所有连接客户端
from connectors import run_network_command
# Cisco IOS自动检测
result = run_network_command(
ip_address="10.1.1.1",
command="show version"
)
# Cisco Nexus(明确设备类型)
result = run_network_command(
ip_address="10.1.10.100",
command="show ip int br",
device_type="cisco_nxos"
)
from connectors.librenms_con import search_devices
# 按位置搜索设备
devices = search_devices("location", "datacenter-1")
from connectors.graylog_con import search_logs
# 搜索过去1小时的日志
logs = search_logs("error", relative_range=3600)
| 厂商 | 设备类型 | 示例命令 |
|---|---|---|
| Cisco IOS | cisco_ios | show version |
| Cisco NX-OS | cisco_nxos | show ip int br |
| Cisco ASA | cisco_asa | show firewall |
| MikroTik | mikrotik_routeros | /system resource print |
| Palo Alto | paloalto_panos | show system info |
| Juniper | juniper_junos | show version |
| Aruba | aruba_os | show version |
| HP Comware | hp_comware | display version |
对于150多种支持设备的完整列表,请参见Netmiko支持平台。
git-netai/
├── main.py # MCP服务器入口点
├── connectors/
│ ├── __init__.py # 包初始化
│ ├── ssh_conn.py # SSH连接模块
│ ├── librenms_con.py # LibreNMS API连接器
│ ├── graylog_con.py # Graylog API连接器
│ ├── apic_con.py # Cisco APIC API连接器
│ └── aruba_con.py # Aruba WiFi控制器API连接器
├── .env # 凭据(未提交)
├── .gitignore # Git忽略规则
├── pyproject.toml # 项目配置
├── uv.lock # UV锁文件
├── test_connectors.py # 连接器烟雾测试
└── README.md # 本文件
验证服务器:
uv run python -c "from main import mcp; print('✓ 服务器正常:', mcp.name)"
测试所有连接器:
uv run python test_connectors.py
# SSH连接
from connectors import run_network_command
result = run_network_command("10.1.1.1", "show version", "cisco_ios")
# LibreNMS
from connectors.librenms_con import search_devices
devices = search_devices("location", "datacenter-1")
# Graylog
from connectors.graylog_con import search_logs
logs = search_logs("error", relative_range=3600)
# Cisco APIC
from connectors.apic_con import get_apic_fabric_health
health = get_apic_fabric_health()
# Aruba
from connectors.aruba_con import ArubaConnector
aruba = ArubaConnector()
info = aruba.get_controller_info()
aruba.logout()
.env文件(已在.gitignore中)| 问题 | 解决方案 |
|---|---|
| SSH连接失败 | 使用ping验证网络连通性,手动测试SSH,检查.env凭据 |
| 服务器无法启动 | 验证uv --version和python --version(≥3.12),重新安装uv sync |
| 自动检测失败 | 明确指定设备类型:run_network_command("10.1.1.1", "show version", "cisco_ios") |
| 启用调试日志 | 在连接器文件中添加:import logging; logging.basicConfig(level=logging.DEBUG) |
欢迎贡献!分叉仓库,创建功能分支,提交更改,并打开拉取请求。
本项目采用MIT许可证——详情请参阅LICENSE文件。