NETGEAR交换机AI协议服务器

一个将NETGEAR Pro AV网络交换机作为AI原生工具暴露的MCP服务器,通过网络工程师和AV集成商使用自然语言查询、监控或排查NETGEAR交换机问题。

  • by 0xEkho
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 0xEkho/Netgear-AV-MCP

使用说明

NETGEAR M4250/M4300/M4350——MCP服务器🔌

MCP(模型上下文协议)服务器,将NETGEAR M4250/M4300/M4350 Pro AV网络交换机作为AI原生工具公开。将任何兼容MCP的LLM客户端(Claude Desktop、OpenWebUI、Cursor…)连接到您的网络基础设施,并通过自然语言查询、监控或排除NETGEAR交换机组的故障。

目标受众: 希望使用AI助手与NETGEAR Pro AV交换机交互的网络工程师和AV集成商。

✨ 特性

  • 双HTTP传输 — streamable-http (推荐)和 SSE,可通过单个环境变量切换
  • SSH连接 --使用SSH连接到NETGEAR交换机 异步ssh
  • 交互式外壳处理 --寻呼机旁路自动启用模式(terminal length 0),以及 --More-- 提示处理
  • 多交换机支持 --通过IP定位任何交换机;按子网区域或全局回退解析凭据
  • 结构化JSON输出 --每个工具都返回一致的、机器可读的JSON有效负载
  • 安全中间件 --承载令牌身份验证和IP分配列表(CIDR),在ASGI层强制执行
  • 兼容OpenWebUI --在OpenWebUI中作为MCP工具服务器开箱即用
  • 多型号支持 --具有型号自适应命令的M4250、M4300和M4350系列
  • 11个NETGEAR工具 --设备信息、接口、VLAN、PoE、STP、路由、LLDP、配置备份和通用CLI
  • 按设计只读 --没有工具可以修改交换机配置

🔧 可用工具

核心和设备信息

工具 CLI命令 说明
netgear_show_version show version / show switch 型号、串行、固件、正常运行时间(型号自适应)
netgear_show_hosts show hosts 主机名、DNS域、DNS服务器
netgear_config_backup show running-config 完整运行配置备份

端口和接口

工具 CLI命令 说明
netgear_show_interfaces show interface counters 所有端口流量计数器
netgear_show_interface_port show interfaces status <port> + show interface ethernet <port> 详细的单端口统计数据(端口格式: 1/0/X)

虚拟局域网

工具 CLI命令 说明
netgear_show_vlan show vlan / show interfaces switchport <port> 所有VLAN或每个端口的交换端口配置

能量网络

工具 CLI命令 说明
netgear_show_poe show poe PoE功率预算、消耗、每个端口状态

生成树

工具 CLI命令 说明
netgear_show_spanning_tree show spanning-tree STP网桥/根信息

路由

工具 CLI命令 说明
netgear_show_ip_route show ip route IP路由表

链路层发现协议

工具 CLI命令 说明
netgear_show_lldp show lldp remote-device all LLDP邻居发现

通用CLI

工具 CLI命令 说明
netgear_cli_readonly 任何 show ... command 执行任何只读CLI命令

🚀 快速开始

先决条件: Python 3.10+ 和 紫外线

# 1. Clone the repository
git clone https://github.com/0xEkho/Netgear-AV-MCP.git
cd Netgear-AV-MCP

# 2. Install dependencies
uv sync

# 3. Configure
cp .env.example .env
#    → Edit .env: set NETGEAR_GLOBAL_USERNAME, NETGEAR_GLOBAL_PASSWORD, MCP_API_KEY

# 4. Start the MCP server
uv run mcp-server

服务器启动于 http://0.0.0.0:8082 (流式HTTP传输)。

🐳 Docker(生产)

cp .env.example .env
# Edit .env
docker compose up -d

⚙️ 配置

复制 .env.example 到 .env 并调整数值。永不承诺 .env 版本控制。

MCP 服务器

变量 默认值 描述
MCP_SERVER_NAME netgear-av-mcp 显示名称
MCP_TRANSPORT streamable-http 运输: streamable-http, sse,或 stdio
MCP_HOST 0.0.0.0 绑定地址
MCP_PORT 8082 监听端口

安全

变量 默认值 描述
MCP_API_KEY (空) 不记名代币。留空以禁用。
MCP_ALLOWED_IPS 127.0.0.1/32,... 逗号分隔的CIDR列表

SSH凭据

变量 默认值 描述
NETGEAR_GLOBAL_USERNAME -- 默认SSH用户名
NETGEAR_GLOBAL_PASSWORD -- 默认SSH密码
NETGEAR_ZONE{X}_USERNAME (空) 覆盖10.X.0.0/16
NETGEAR_ZONE{X}_PASSWORD (空) 覆盖10.X.0.0/16

基于区域的凭据: 集 NETGEAR_ZONE9_USERNAME / NETGEAR_ZONE9_PASSWORD 所有开关打开 10.9.0.0/16.

SSH设置

变量 默认值 描述
SSH_STRICT_HOST_KEY false 严格的主机密钥检查
SSH_KNOWN_HOSTS_FILE ./known_hosts SSH已知主机路径
SSH_CONNECT_TIMEOUT 10 连接超时(秒)
SSH_COMMAND_TIMEOUT 30 命令超时(秒)

📁 项目结构

Netgear-AV-MCP/
├── src/
│   └── mcp_server/
│       ├── server.py          # FastMCP init, transport, security middleware
│       ├── tools/             # MCP tools — one file per category
│       │   ├── core.py        # version, hosts, config backup
│       │   ├── ports.py       # interface counters, port details
│       │   ├── vlan.py        # VLAN audit
│       │   ├── poe.py         # PoE status
│       │   ├── spantree.py    # Spanning Tree
│       │   ├── routing.py     # IP routes
│       │   ├── lldp.py        # LLDP neighbors
│       │   └── cli.py         # Generic read-only CLI
│       └── ssh/
│           ├── client.py      # asyncssh interactive shell client
│           └── auth.py        # Credential resolver (global → zone)
├── tests/
├── .env.example
├── pyproject.toml
├── AGENTS.md
└── LICENSE

🌐 OpenWebUI集成

  1. 从...开始 MCP_TRANSPORT=streamable-http (默认)
  2. 在OpenWebUI中→ 设置→ 工具→ 添加工具服务器:
    • 网址: http://<server-ip>:8082/mcp
    • 认证: Authorization: Bearer <MCP_API_KEY>
  3. 工具自动出现

SSE:设置 MCP_TRANSPORT=sse,使用 /sse 终点。

🔧 Claude桌面集成

编辑 claude_desktop_config.json:

  • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗 : %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "netgear-av": {
      "command": "uv",
      "args": ["--directory", "/path/to/Netgear-AV-MCP", "run", "mcp-server"],
      "env": {"MCP_TRANSPORT": "stdio"}
    }
  }
}

⚠️ 替换 /path/to/Netgear-AV-MCP 在您的计算机上拥有此项目的绝对路径。

🛠 发展

uv sync                              # Install dependencies
uv run mcp-server                    # Start (streamable-http)
MCP_TRANSPORT=sse uv run mcp-server  # SSE transport
MCP_TRANSPORT=stdio uv run mcp-server # STDIO
uv run pytest                        # Run tests
uv run pytest --cov=mcp_server       # With coverage
npx @modelcontextprotocol/inspector uv run mcp-server  # MCP Inspector

🤖 副驾驶代理

该项目包括4名专业的Copilot代理商(.github/agents/)用于自动化协作。

代理 域
mcp-developer 源代码: src/mcp_server/ (工具、SSH客户端、身份验证)
mcp-tester 测试: tests/ --从不修改 src/
mcp-scaffolder 配置: pyproject.toml, .gitignore, .env.example
mcp-documenter 文件: README.md,文档字符串, AGENTS.md

🔗 资源

📄 许可证

MIT许可证——见 许可证.