tutorials.md•14.4 kB
# NetBrain MCP 用户操作指南
本文档是NetBrain MCP系统的完整用户操作指南,将指导您从安装配置到高级功能使用的全过程。
## 1. 项目简介
### 1.1 什么是NetBrain MCP?
NetBrain MCP(Model Context Protocol)是一个开源的网络运维整合平台,通过MCP协议连接大型语言模型(LLM)与网络设备。它允许AI助手通过标准化协议执行网络配置、诊断和管理任务。
### 1.2 核心功能
#### 🔧 设备管理功能
- **统一设备管理**:支持思科、华为、H3C、Juniper等主流厂商设备
- **多协议连接**:支持SSH、Telnet、SNMP等连接协议
- **凭据安全管理**:加密存储设备访问凭据
- **设备状态监控**:实时监控设备连接状态
#### 🌐 网络操作功能
- **命令执行**:远程执行网络设备命令
- **配置管理**:设备配置备份、比较和部署
- **拓扑发现**:基于CDP/LLDP的自动拓扑发现
- **网络扫描**:网络范围扫描和设备识别
#### 🤖 AI集成功能
- **32个MCP工具**:涵盖设备管理、连接控制、拓扑分析等
- **13个MCP资源**:提供设备信息、配置数据、拓扑数据等
- **13个提示模板**:专业的网络诊断和配置模板
- **智能诊断**:AI驱动的网络问题分析和解决方案
#### 💻 Web界面功能
- **专业终端**:基于XTerm.js的多标签页终端体验
- **拓扑可视化**:基于D3.js的交互式网络拓扑图
- **设备管理界面**:直观的设备添加、编辑和监控界面
- **主题系统**:支持暗色/明亮主题切换
## 2. 系统要求
### 2.1 硬件要求
- **CPU**:2核心以上
- **内存**:4GB以上
- **存储**:10GB可用空间
- **网络**:能够访问目标网络设备
### 2.2 软件要求
- **操作系统**:Windows 10+、Linux、macOS
- **Python版本**:Python 3.10或更高版本
- **网络访问**:SSH/Telnet访问目标设备的权限
### 2.3 支持的设备
- **思科设备**:IOS、IOS-XE、NX-OS
- **华为设备**:VRP系统
- **H3C设备**:Comware系统
- **Juniper设备**:JUNOS系统
- **其他厂商**:支持标准SSH/Telnet协议的设备
## 3. 安装和配置
### 3.1 获取项目代码
```bash
# 克隆项目(假设从Git仓库)
git clone https://github.com/your-org/NetBrainMCP.git
cd NetBrainMCP
# 或者下载项目压缩包并解压
# wget https://github.com/your-org/NetBrainMCP/archive/main.zip
# unzip main.zip
# cd NetBrainMCP-main
```
### 3.2 创建Python虚拟环境
```bash
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate
```
### 3.3 安装依赖
```bash
# 安装项目依赖
pip install -r requirements.txt
# 验证关键依赖安装
python -c "import scrapli; print('Scrapli版本:', scrapli.__version__)"
python -c "import mcp; print('MCP已安装')"
```
### 3.4 配置环境变量(可选)
```bash
# 设置日志级别
export LOG_LEVEL=INFO
# 设置数据目录
export DATA_DIR=./data
# 设置加密密钥(用于凭据加密)
export ENCRYPTION_KEY=your-secret-key
```
## 4. 快速开始
### 4.1 启动MCP服务器
```bash
# 启动MCP服务器(标准输入输出模式)
python server.py
# 或启动Web服务器模式
python server.py --web
```
### 4.2 连接到Claude Desktop
1. **安装Claude Desktop**
- 从 https://claude.ai/download 下载并安装Claude Desktop
2. **配置MCP服务器**
编辑Claude Desktop配置文件:
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
添加配置:
```json
{
"mcpServers": {
"netbrain-mcp": {
"command": "python",
"args": ["/path/to/NetBrainMCP/server.py"],
"env": {
"LOG_LEVEL": "INFO"
}
}
}
}
```
3. **重启Claude Desktop**
- 重启Claude Desktop,您将看到工具图标,表示MCP服务器已连接
### 4.3 连接到Cursor IDE
1. **启动SSE模式**
```bash
python server.py --mode sse --port 8000
```
2. **配置Cursor**
- 打开Cursor → 设置 → 功能 → MCP服务器
- 添加新服务器:
- **名称**: netbrain-mcp
- **类型**: sse
- **URL**: http://localhost:8000/sse
## 5. 基本操作指南
### 5.1 设备管理
#### 添加设备凭据
首先添加设备访问凭据:
```
# 在Claude或Cursor中输入:
请帮我添加一个思科设备的SSH凭据,用户名是admin,密码是cisco123
```
AI将调用`add_credential`工具:
- 用户名:admin
- 密码:cisco123
- 协议:ssh
- 端口:22
#### 添加网络设备
```
# 添加思科路由器
请添加一台思科路由器,名称是Router-01,IP地址是192.168.1.1,使用刚才添加的凭据
```
AI将调用`add_device`工具添加设备。
#### 查看设备列表
```
显示所有网络设备的列表
```
AI将调用`list_devices`工具显示所有已添加的设备。
### 5.2 设备连接和命令执行
#### 连接到设备
```
请连接到Router-01设备
```
AI将调用`connect_device`工具建立与设备的连接。
#### 执行命令
```
# 查看设备版本信息
在Router-01上执行 show version 命令
# 查看接口状态
在Router-01上执行 show ip interface brief 命令
# 执行多个命令
在Router-01上依次执行以下命令:
1. show running-config
2. show ip route
3. show interface status
```
AI将调用`send_command`或`send_commands`工具执行相应命令。
### 5.3 网络拓扑发现
#### 发现设备拓扑
```
请发现Router-01的网络拓扑
```
AI将调用`discover_topology`工具,通过CDP/LLDP协议发现网络拓扑。
#### 查看拓扑信息
```
显示当前网络拓扑的统计信息
```
AI将调用`get_topology_statistics`工具显示拓扑统计。
### 5.4 网络扫描
#### 扫描网络范围
```
请扫描192.168.1.0/24网段,发现网络设备
```
AI将调用`scan_network_range`工具进行网络扫描。
#### 查看扫描结果
```
显示网络扫描的结果
```
AI将调用`get_scan_results`工具显示扫描发现的设备。
## 6. 高级功能
### 6.1 使用提示模板
#### 设备诊断模板
```
使用设备诊断模板分析Router-01的状态
```
AI将使用`device_diagnosis`模板,结合设备信息和接口状态进行专业分析。
#### 配置审查模板
```
使用配置审查模板检查Router-01的配置
```
AI将使用`config_review`模板对设备配置进行安全和最佳实践审查。
#### 网络故障排除模板
```
使用故障排除模板分析网络连接问题
```
AI将使用`network_troubleshooting`模板进行系统化的故障排除。
### 6.2 使用MCP资源
#### 访问设备信息资源
```
获取device://router-01的设备信息资源
```
#### 访问配置资源
```
获取device://router-01/config的配置资源
```
#### 访问拓扑资源
```
获取topology://的网络拓扑资源
```
### 6.3 Web界面使用
#### 启动Web界面
```bash
python server.py --web --port 8080
```
然后在浏览器中访问:http://localhost:8080
#### Web界面功能
1. **设备管理页面**
- 添加、编辑、删除设备
- 管理设备凭据
- 查看设备状态
2. **终端页面**
- 多标签页终端
- 实时命令执行
- 命令历史和补全
3. **拓扑页面**
- 交互式拓扑图
- 拓扑发现控制
- 设备详情查看
## 7. 配置管理
### 7.1 数据存储配置
系统数据存储在以下位置:
```
NetBrainMCP/
├── data/
│ ├── devices.json # 设备信息
│ └── credentials.json # 凭据信息(加密存储)
├── resource_cache/ # 资源缓存
└── templates/ # 模板缓存
```
### 7.2 日志配置
日志文件位置:
```
NetBrainMCP/
└── logs/
├── netbrain_mcp.log # 主日志
├── device_connector.log # 连接日志
└── audit.log # 审计日志
```
### 7.3 缓存配置
- **资源缓存**:默认5分钟TTL
- **设备配置缓存**:默认10分钟TTL
- **拓扑缓存**:默认15分钟TTL
可在代码中调整缓存设置:
```python
# 在mcp_resources.py中
self.default_cache_ttl = 300 # 5分钟
```
## 8. 故障排除
### 8.1 常见问题
#### 连接问题
**问题**:无法连接到设备
```
解决方案:
1. 检查设备IP地址是否正确
2. 验证网络连通性(ping测试)
3. 确认SSH/Telnet服务已启用
4. 检查凭据是否正确
5. 查看防火墙设置
```
**问题**:连接超时
```
解决方案:
1. 增加连接超时时间
2. 检查网络延迟
3. 确认设备负载不高
4. 检查并发连接限制
```
#### MCP服务器问题
**问题**:Claude Desktop无法连接MCP服务器
```
解决方案:
1. 检查配置文件路径是否正确
2. 验证Python路径和脚本路径
3. 检查权限设置
4. 查看Claude Desktop日志
5. 重启Claude Desktop
```
**问题**:工具调用失败
```
解决方案:
1. 检查Python环境和依赖
2. 查看MCP服务器日志
3. 验证工具参数格式
4. 检查设备连接状态
```
### 8.2 调试技巧
#### 启用详细日志
```bash
# 设置日志级别为DEBUG
export LOG_LEVEL=DEBUG
python server.py
```
#### 查看实时日志
```bash
# Linux/macOS
tail -f logs/netbrain_mcp.log
# Windows (PowerShell)
Get-Content logs/netbrain_mcp.log -Wait
```
#### 测试设备连接
```python
# 使用test_scrapli_connection工具
python -c "
import asyncio
from server import test_scrapli_connection
result = asyncio.run(test_scrapli_connection(
host='192.168.1.1',
username='admin',
password='cisco123',
platform='cisco_iosxe'
))
print(result)
"
```
### 8.3 性能优化
#### 连接池配置
```python
# 在device_connector.py中调整连接池大小
MAX_CONNECTIONS = 10 # 最大并发连接数
CONNECTION_TIMEOUT = 30 # 连接超时时间
```
#### 缓存优化
```python
# 调整缓存策略
RESOURCE_CACHE_TTL = 300 # 资源缓存时间
CONFIG_CACHE_TTL = 600 # 配置缓存时间
TOPOLOGY_CACHE_TTL = 900 # 拓扑缓存时间
```
## 9. 最佳实践
### 9.1 设备管理最佳实践
1. **统一命名规范**
```
设备命名:<位置>-<类型>-<编号>
示例:DC1-RTR-01、DC1-SW-02
```
2. **标签使用**
```
按功能分类:core, access, distribution
按环境分类:production, staging, development
按位置分类:datacenter1, branch-office, remote
```
3. **凭据管理**
```
- 为不同设备类型创建专用凭据
- 定期轮换密码
- 使用SSH密钥认证(推荐)
- 设置不同权限级别的凭据
```
### 9.2 安全最佳实践
1. **网络安全**
```
- 限制MCP服务器的网络访问
- 使用VPN或专用网络连接
- 启用设备访问日志记录
- 定期审查访问权限
```
2. **数据保护**
```
- 定期备份设备和凭据数据
- 使用强密码和加密
- 限制文件系统访问权限
- 监控异常访问活动
```
### 9.3 运维最佳实践
1. **监控和告警**
```
- 监控MCP服务器状态
- 设置设备连接告警
- 记录重要操作日志
- 定期检查系统资源使用
```
2. **维护计划**
```
- 定期更新依赖包
- 清理过期缓存文件
- 归档旧日志文件
- 验证备份数据完整性
```
## 10. API参考
### 10.1 MCP工具列表
#### 设备管理工具
- `list_devices` - 列出设备
- `add_device` - 添加设备
- `get_device` - 获取设备信息
- `update_device` - 更新设备
- `delete_device` - 删除设备
#### 连接管理工具
- `connect_device` - 连接设备
- `disconnect_device` - 断开连接
- `send_command` - 发送命令
- `send_commands` - 发送多个命令
- `get_active_connections` - 获取活动连接
#### 拓扑发现工具
- `discover_topology` - 发现拓扑
- `get_topology` - 获取拓扑
- `clear_topology` - 清除拓扑
- `get_device_neighbors` - 获取邻居
- `get_topology_statistics` - 拓扑统计
### 10.2 MCP资源列表
#### 设备资源
- `device/{device_id}` - 设备基本信息
- `device/{device_id}/config` - 设备配置
- `device/{device_id}/interfaces` - 接口信息
- `device/{device_id}/routes` - 路由信息
- `device/{device_id}/neighbors` - 邻居信息
#### 系统资源
- `credentials` - 凭据列表
- `system/status` - 系统状态
- `topology` - 网络拓扑
- `scan/results` - 扫描结果
### 10.3 提示模板列表
#### 诊断模板
- `device_diagnosis` - 设备诊断
- `network_troubleshooting` - 网络故障排除
- `performance_optimization` - 性能优化
#### 配置模板
- `config_review` - 配置审查
- `security_audit` - 安全审计
- `vlan_config` - VLAN配置
## 11. 扩展开发
### 11.1 添加新的MCP工具
```python
@mcp.tool()
async def custom_tool(param1: str, param2: int) -> Dict[str, Any]:
"""自定义工具描述"""
# 工具实现逻辑
return {"result": "success"}
```
### 11.2 添加新的MCP资源
```python
@resource_manager.register_resource("custom/{id}", ResourceType.CUSTOM)
async def get_custom_resource(id: str) -> Dict[str, Any]:
"""自定义资源描述"""
# 资源获取逻辑
return {"data": "custom_data"}
```
### 11.3 添加新的提示模板
```python
@template_manager.register_template(
name="custom_template",
description="自定义模板描述"
)
def custom_template(param1: str, param2: str) -> str:
"""自定义模板实现"""
return f"自定义提示:{param1} - {param2}"
```
## 12. 社区和支持
### 12.1 获取帮助
- **文档**:查看完整的技术文档
- **示例**:参考examples目录中的使用示例
- **FAQ**:查看常见问题解答
### 12.2 贡献代码
欢迎为NetBrain MCP项目贡献代码:
1. Fork项目仓库
2. 创建功能分支
3. 提交代码变更
4. 创建Pull Request
### 12.3 报告问题
如发现bug或有功能建议,请:
1. 检查已知问题列表
2. 提供详细的错误信息
3. 包含复现步骤
4. 提交Issue或联系维护团队
---
通过本指南,您应该能够熟练使用NetBrain MCP系统进行网络设备管理和AI驱动的网络运维工作。如有任何问题,请参考故障排除部分或联系技术支持团队。