aruba cx-mcp服务器
Python MCP(模型上下文协议)服务器,通过其REST API将AI助手桥接到Aruba CX交换机。直接从AI驱动的IDE或聊天客户端管理接口、VLAN、光学器件、固件等。
特性
- 19工具 (13读+6写),涵盖完整的AOS-CX REST API
- 系统 --系统信息、序列号、正常运行时间、固件、VSF成员详细信息,包括每个成员的序列号和角色、内存利用率
- 接口 --列表、检查、配置(管理状态、速度、双工、VLAN、描述)
- 端口接入AAA --通用端口级AAA配置(MAC身份验证、802.1X、身份验证优先级、客户端限制、回退VLAN、角色)
mac-radius预设用于快速转换 - 虚拟局域网 --列表、创建、删除
- 配置 --运行/启动配置、写入内存、检查点
- 路由 --路由表、ARP表
- 链路层发现协议 --邻居发现
- MAC地址表 --带有VLAN和MAC过滤器
- 光学/DOM --收发器信息、每条通道DOM诊断、具有阈值违规检测的健康评估
- ISSU --准备状态检查、固件暂存、升级、回滚定时器、确认
- 固件 --从本地文件上传,从HTTP下载,启动银行信息
- 生成树协议 --生成树状态、根网桥、每个端口的角色/状态、BPDU保护/环路保护/根保护不一致检测
- 事件日志 --按严重性、时间范围、模块、关键字搜索检索和过滤开关事件日志
- 垂直同步频率 --拓扑和成员信息
- 多路开关 --从单个服务器实例管理多个交换机
安装
git clone https://github.com/slientnight/aruba-cx-mcp-server.git
cd aruba-cx-mcp-server
pip install -r mcp-servers/aruba-cx-mcp/requirements.txt配置
交换机可以通过两种方式配置:
选项1:配置文件(推荐)
创建 aruba-cx-config.json 在服务器目录中(请参见 mcp-servers/aruba-cx-mcp/aruba-cx-config.example.json):
{
"targets": [
{
"name": "core-switch-1",
"host": "10.0.1.1",
"username": "admin",
"password": "your-password",
"port": 443,
"verify_ssl": false
},
{
"name": "access-switch-2",
"host": "10.0.1.2",
"username": "admin",
"password": "your-password"
}
],
"timeout": 30
}服务器正在查找 aruba-cx-config.json 在当前目录中。集 ARUBA_CX_CONFIG 使用不同的路径。
选项2:环境变量
export ARUBA_CX_TARGETS='[{"name":"my-switch","host":"10.0.0.1","username":"admin","password":"your-password","verify_ssl":false}]'如果两者都被设置, ARUBA_CX_TARGETS 优先考虑。
每个目标都需要 name, host, username, password.可选字段: port (默认值443), api_version (默认为“v10.13”), verify_ssl (默认为true)。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ARUBA_CX_TARGETS | [] | 目标交换机定义的JSON数组 |
ARUBA_CX_CONFIG | JSON配置文件的路径 | |
ARUBA_CX_TIMEOUT | 30 | 请求超时(秒) |
ITSM_ENABLED | false | 启用ITSM门进行写入操作 |
ITSM_LAB_MODE | false | 仅格式化CR验证(跳过外部检查) |
与MCP客户端一起使用
Kiro/VS代码
添加 .kiro/settings/mcp.json:
{
"mcpServers": {
"aruba-cx-mcp": {
"command": "python3",
"args": ["-u", "mcp-servers/aruba-cx-mcp/aruba_cx_mcp_server.py"],
"env": {
"ARUBA_CX_CONFIG": "/path/to/aruba-cx-config.json"
}
}
}
}克劳德桌面
添加到您的Claude Desktop配置中:
{
"mcpServers": {
"aruba-cx-mcp": {
"command": "python3",
"args": ["-u", "/path/to/aruba-cx-mcp-server/mcp-servers/aruba-cx-mcp/aruba_cx_mcp_server.py"],
"env": {
"ARUBA_CX_CONFIG": "/path/to/aruba-cx-config.json"
}
}
}
}可用工具
阅读工具(13)
| 工具 | 说明 |
|---|---|
get_system | 系统信息+运行状况(主机名、固件、序列号、平台、正常运行时间、MAC、VSF成员序列号/角色、内存) |
get_interfaces | 所有接口汇总,或一个详细(通过 interface 参数)。 detail:config/stats/full |
get_vlans | 所有带有ID、名称和状态的VLAN |
get_config | 正在运行或启动配置(pass config_type) |
get_routing | 路由或ARP表(传递 table="routes" 或 "arp") |
get_lldp_neighbors | LLDP邻居详细信息 |
get_mac_address_table | 带可选VLAN/MAC过滤器的MAC表 |
get_optics | 收发器信息、DOM诊断或健康状况(通过 detail).支持每通道SFP+和QSFP28 DOM |
get_issu_info | ISSU准备情况、状态、进度 |
get_firmware | 固件版本、启动库、传输进度 |
get_vsf_topology | VSF堆栈拓扑和成员 |
get_stp | STP状态、根网桥、每个端口的角色/状态、BPDU保护/环路保护/根保护不一致、BPDU统计信息 |
get_logs | 带过滤器的事件日志:严重性、时间范围(since),模块,关键字搜索,限制。默认值50,最大值1000 |
书写工具(6)
| 工具 | 说明 |
|---|---|
configure_interface | 设置管理状态、描述、速度、双工、VLAN |
configure_port_access | 配置端口级别AAA(MAC认证、802.1X、认证优先级、客户端限制、角色、回退VLAN)。支持 mac-radius 预设和任意JSON配置 |
manage_vlan | 创建或删除VLAN(传递 action) |
save_config | 写入内存或创建检查点(通过 action) |
manage_issu | 启动、设置回滚计时器或确认(通过 action) |
manage_firmware | 上传或下载固件(pass action) |
写入工具接受可选 change_request_number 参数。当 ITSM_ENABLED=true,有效的CR(格式: CHG +数字)是必需的。
端口接入AAA配置
这 configure_port_access 该工具通过以下方式在任何AOS-CX交换机端口上提供通用AAA配置 /system/interfaces/{port} REST端点。
快速预设:MAC RADIUS
在一次调用中将静态VLAN端口转换为MAC RADIUS身份验证:
configure_port_access(target="my-switch", port="1/1/9", mode="mac-radius")此预设:
- 删除静态VLAN分配
- 将身份验证优先级设置为mac身份验证优先,dot1x次
- 启用MAC身份验证和重新身份验证
- 将客户端限制设置为256
自定义AAA配置
通过以下方式将任何有效的AOS-CX端口属性作为JSON字符串传递 port_access_config:
configure_port_access(
target="my-switch",
port="1/1/5",
port_access_config='{"aaa_auth_precedence":{"1":"dot1x","2":"mac-auth"},"port_access_auth_configurations":{"dot1x":{"auth_enable":true,"reauth_period":3600,"quiet_period":60,"max_retries":3,"tx_period":30},"mac-auth":{"auth_enable":true}},"port_access_clients_limit":128}'
)预设覆盖
从预设开始,自定义特定字段。用户覆盖被深度合并到预设之上:
configure_port_access(
target="my-switch",
port="1/1/9",
mode="mac-radius",
port_access_config='{"port_access_clients_limit":512,"port_access_local_override":{"critical_vlan":100,"auth_fail_vlan":999}}'
)支持的字段
AOS-CX REST API在上接受的任何字段 /system/interfaces/{port} 可以通过 port_access_config.常见字段:
| 字段 | 示例 | 描述 |
|---|---|---|
aaa_auth_precedence | {"1":"mac-auth","2":"dot1x"} | 身份验证方法顺序 |
port_access_auth_configurations | {"mac-auth":{"auth_enable":true,"reauth_enable":true}} | 按方法身份验证设置 |
port_access_clients_limit | 256 | 最大已验证客户端数 |
port_access_role | "/rest/v10.13/system/roles/my-role" | 分配端口访问角色 |
port_access_local_override | {"critical_vlan":100,"auth_fail_vlan":999,"guest_vlan":50} | 回退VLAN分配 |
vlan_tag | null | 删除静态VLAN(设置为null) |
vlan_mode | null | 删除VLAN模式(设置为空) |
响应格式
该工具返回完整审计跟踪的基线(之前)、应用(修补的内容)和验证(之后)状态:
{
"status": "success",
"port": "1/1/9",
"applied": { ... },
"baseline": { "vlan_tag": "598" },
"verify": {
"aaa_auth_precedence": {"1": "mac-auth", "2": "dot1x"},
"port_access_auth_configurations": {"mac-auth": {"auth_enable": true, "reauth_enable": true}},
"port_access_clients_limit": 256
}
}测试
88个基于属性的测试使用假设验证正确性属性:
cd mcp-servers/aruba-cx-mcp
python -m pytest tests/ -v需求
- Python>=3.10
- Aruba CX交换机在启用REST API的情况下运行AOS-CX(在6300M VSF、6100、8360-FL/PL/LL.10.16上测试)
- 从MCP服务器到交换机管理接口的网络访问
许可证
麻省理工学院
