博科MCP服务器
  ](https://nodejs.org) 
用于自动化管理Brocade ICX 6450交换机的MCP(模型上下文协议)服务器。此项目提供了基于stdio和SSE的MCP服务器,这些服务器通过SSH与Brocade交换机进行接口交互。
特点/特性
- 系统信息获取交换机型号、固件版本、运行时间等信息。
- VLAN管理创建、配置和管理VLAN
- 接口控制配置端口,查看状态,管理设置
- 第二层操作MAC地址表管理
- 第三层操作路由表检查
- 原始CLI访问直接执行任何CLI命令
建筑学
使用……构建 TypeScript 和(the) MCP SDK 1.18.2(中文可译为:“MCP软件开发工具包 1.18.2”)这台服务器遵循了现代AI代理集成的模式。由于Brocade ICX 6450交换机不支持REST API,因此服务器使用SSH来执行CLI命令并解析输出结果。
运输方式
- stdio(标准输入输出)用于与Claude Code及其他基于CLI的MCP客户端进行命令行集成
- SSE(服务器发送事件)用于基于网络的集成,具备实时监控功能
模块化设计
src/
├── core/ # Foundation libraries
│ ├── config.ts # Zod-validated configuration
│ ├── errors.ts # Custom error classes
│ └── logger.ts # Winston logging utilities
├── lib/ # Core functionality
│ ├── ssh-client.ts # Connection pooling & auto-reconnect
│ └── brocade-commands.ts # Command execution logic
├── mcp/ # MCP protocol implementation
│ ├── schemas.ts # Zod schemas with JSON Schema generation
│ ├── tools.ts # Tool definitions
│ ├── resources.ts # Resource definitions
│ └── handlers.ts # Shared request handlers
└── servers/ # Transport implementations
├── stdio.ts # CLI transport
└── sse.ts # Web transport主要特点
- TypeScript优先启用严格模式下的全面类型安全
- 模式验证Zod schemas 自动生成 JSON schemas
- 连接池强大的SSH连接管理,支持自动重连
- 共享处理程序不同传输方式之间无代码重复
- 结构化日志记录Winston(带上下文错误追踪)
- 现代ESM(环境敏感模型/电子系统模块/等,具体含义需根据上下文确定)使用 NodeNext 解析的纯 ES 模块
先决条件
- Node.js 18及以上版本
- 通过SSH访问Brocade ICX 6450交换机
- 交换机的SSH凭据
安装
选项1:直接从GitHub获取(推荐)
使用 npx 与 MCP 客户端:
npx -y github:vespo92/BrocadeICXMCP选项2:克隆并构建
git clone https://github.com/vespo92/BrocadeICXMCP.git
cd BrocadeICXMCP
npm install
npm run build选项3:GitHub发布
从(指定位置)下载最新的发布版tarball文件 发布:
tar -xzf brocade-mcp-server-v1.0.0.tar.gz
cd brocade-mcp-server
npm install --production配置
- 复制
.env.example到.env:
cp .env.example .env- 编辑
.env附上您的交换机详细信息:
BROCADE_HOST=192.168.1.100
BROCADE_PORT=22
BROCADE_USERNAME=admin
BROCADE_PASSWORD=your_password_here使用方法
stdio 服务器
为了与Claude Code集成:
npm run start:stdioSSE 服务器
对于基于网络的集成:
npm run start:sseSSE服务器将在3000端口启动(可通过配置调整) SSE_PORT)。
可用工具
信息收集
get_system_info检索系统信息get_vlans列出所有已配置的VLANget_interfaces获取接口状态和配置get_mac_table查看MAC地址表get_routing_table显示IP路由表
配置
configure_vlan创建或修改VLAN设置add_port_to_vlan将端口分配给VLAN(标记/未标记)configure_interface设置接口参数execute_command运行原始CLI命令
监控(仅限SSE)
monitor_interface实时接口统计
示例用法
与克劳德代码一起
使用 npx(推荐)
添加到您的 .mcp.json:
{
"mcpServers": {
"brocade": {
"command": "npx",
"args": ["-y", "github:vespo92/BrocadeICXMCP"],
"env": {
"BROCADE_HOST": "192.168.1.100",
"BROCADE_USERNAME": "admin",
"BROCADE_PASSWORD": "your_password"
}
}
}
}使用本地克隆
{
"mcpServers": {
"brocade": {
"command": "node",
"args": ["/absolute/path/to/BrocadeICXMCP/dist/servers/stdio.js"],
"env": {
"BROCADE_HOST": "192.168.1.100",
"BROCADE_USERNAME": "admin",
"BROCADE_PASSWORD": "your_password"
}
}
}
}示例命令
创建一个虚拟局域网(VLAN):
await server.callTool('configure_vlan', {
vlanId: 100,
name: 'Guest-Network'
});将端口添加到VLAN:
await server.callTool('add_port_to_vlan', {
port: 'ethernet 1/1/1',
vlanId: 100,
tagged: false
});安全注意事项
- 使用环境变量安全地存储凭据
- 尽可能使用SSH密钥认证
- 限制MCP服务器访问受信任的系统
- 考虑对管理流量进行网络分段
局限性
- Brocade ICX 6450 缺少原生 REST API 支持
- 性能取决于SSH连接的质量
- 命令解析依赖于CLI输出格式的一致性
- 某些操作可能需要提升权限
发展
# Run in development mode
npm run dev
# Run tests
npm test
# Lint code
npm run lint
# Type check
npm run typecheck人工智能与代理集成
这个项目旨在实现人工智能和基于代理的自动化:
- CLAUDE.md(文件名,可译为“克劳德文档”或保持原样,具体取决于上下文是否需要翻译文件名) - 人工智能助手的背景与指导原则
- AI代理指南 - 自主代理的高级模式
贡献;做出贡献
请参阅 CONTRIBUTING.md(贡献指南文件) 关于如何为该项目做贡献的指南。
许可证
麻省理工学院(MIT) - 查看 许可证 详情请见
