Files
NetBrain_MCP/docs/tutorials.md
T
2026-05-22 12:17:24 +08:00

658 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NetBrain MCP 用户操作指南
本文档是NetBrain MCP系统的完整用户操作指南,将指导您从安装配置到高级功能使用的全过程。
## 1. 项目简介
### 1.1 什么是NetBrain MCP
NetBrain MCPModel 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-01IP地址是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驱动的网络运维工作。如有任何问题,请参考故障排除部分或联系技术支持团队。