网络配置命令生成器

一个使用本地语言模型通过MCP协议生成网络设备配置命令的系统,支持多种网络设备类型并包含多层安全验证。

  • by Vostbur
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Vostbur/network-mcp-server

使用说明

网络MCP服务器

利用本地语言模型通过MCP(模型上下文协议)生成网络设备配置指令的系统。

🎯 描述

这个项目是一个MCP服务器,它能够使用自然语言为各种类型的网络设备生成配置命令。该系统通过Ollama使用本地语言模型,以确保数据的隐私和控制。

🏗️ 建筑

主要组件

  1. MCP 服务器 (app/main.py) - 处理MCP请求的主要服务器
  2. 配置图 (app/graph.py) - LangGraph 工作流用于生成配置
  3. 文档工具 (app/tools.py) - 查找相关文件
  4. 模型 (app/models.py) - Pydantic 数据模型
  5. 提示 (app/prompts.py) - LLM(大型语言模型)提示模板

处理工作流

graph TD
    A[Запрос пользователя] --> B[Поиск документации]
    B --> C[Генерация команд LLM]
    C --> D[Валидация безопасности]
    D --> E{Безопасно?}
    E -->|Да| F[Симуляция выполнения]
    E -->|Нет| G[Обработка опасных команд]
    E -->|Критично| H[Блокировка]
    F --> I[Возврат результата]
    G --> I
    H --> I

🚀 安装与设置

要求

  • Python 3.8及以上版本
  • 安装了模型的Ollama
  • Git(一种分布式版本控制系统)

安装依赖项

方案1:使用uv(推荐)

紫外线 - 来自Astral的快速Python包管理器。

UV的优势:

  • ⚡(闪电符号,常用于表示快速、活力或电) 速度比pip快10到100倍
  • 🔒(锁形符号,常用于表示安全、保密或锁定状态) 可靠性确定性装配
  • 🎯 目标(或瞄准、射中) 简洁性一个工具应对所有任务
  • 📦(包裹/箱子) 兼容性与 pip 和 pip-tools 兼容
  • 🐍(蛇) Python管理自动安装所需版本的Python
# Установка uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Или через pip
pip install uv

# Установка зависимостей проекта
uv sync

# Активация виртуального окружения
source .venv/bin/activate  # Linux/macOS
# или
.venv\Scripts\activate     # Windows

# Запуск проекта
uv run python app/main.py

方案2:使用pip

# Создание виртуального окружения
python -m venv .venv

# Активация виртуального окружения
source .venv/bin/activate  # Linux/macOS
# или
.venv\Scripts\activate     # Windows

# Установка зависимостей
pip install -r requirements.txt

选项3:使用poetry

# Установка poetry
curl -sSL https://install.python-poetry.org | python3 -

# Установка зависимостей
poetry install

# Запуск проекта
poetry run python app/main.py

Ollama设置

  1. 安装Ollama:https://ollama.ai/
  2. 下载模型:
ollama pull llama2
ollama pull mistral
ollama pull codellama

环境变量

创建一个文件 .env:

LOCAL_MODEL=llama2
OLLAMA_BASE_URL=http://localhost:11434

📖 使用方法

启动MCP服务器

python app/main.py

本地模型测试

python test_local.py

通过MCP的使用示例

{
  "tool": "configure_network",
  "arguments": {
    "request": "настрой vlan 100 с именем Marketing",
    "equipment": "cisco_ios",
    "dry_run": true
  }
}

🔧 支持的设备

  • Cisco IOS(思科网络操作系统) - Cisco交换机和路由器
  • Juniper JunOS(译为“瞻博网络JunOS”) - Juniper Networks设备
  • 华为 - 华为网络设备
  • MikroTik(米科蒂克) - RouterOS设备

🛡️ 安全

该系统包含多层次的安全检查:

  1. 命令验证 - 检查潜在危险操作
  2. 模拟模式 - 默认情况下,所有命令都在模拟模式下执行
  3. 回滚命令 - 自动生成撤销更改的命令
  4. 警告 - 潜在风险通知

📁 项目结构

network-mcp-server/
├── app/
│   ├── __init__.py
│   ├── main.py              # Главный MCP сервер
│   ├── graph.py             # LangGraph workflow
│   ├── models.py            # Pydantic модели
│   ├── prompts.py           # Шаблоны промптов
│   ├── server.py            # MCP сервер логика
│   └── tools.py             # Инструменты документации
├── data/
│   └── documentation/       # Документация по оборудованию
├── test_local.py            # Тестирование моделей
├── test_mcp.py              # Тестирование MCP сервера
├── requirements.txt         # Зависимости Python
├── pyproject.toml          # Конфигурация проекта
└── README.md               # Документация

🔍 这是如何运作的

1. 搜索文档

该系统使用向量搜索技术,根据用户的查询和设备类型来查找相关的配置命令。

2. 命令生成

本地语言模型(LLM)分析请求并生成相应的JSON格式配置命令。

3. 安全性验证

生成的命令会经过检查,以确认是否存在潜在危险操作:

  • 可能导致网络中断的命令
  • 无回滚能力的命令
  • 影响安全的命令

4. 模拟与结果

安全命令会被模拟执行,结果连同完整文档一起返回给用户。

🧪 测试

模型测试

# С uv
uv run python test_local.py

# С pip
python test_local.py

这个脚本用于测试不同的Ollama模型在生成正确配置命令方面的能力。

MCP服务器测试

# С uv
uv run python test_mcp.py

# С pip
python test_mcp.py

检查MCP服务器的基本功能。

🛠️ 开发

开发者命令

使用uv

# Установка зависимостей для разработки
uv sync --dev

# Форматирование кода
uv run black .
uv run isort .

# Проверка типов
uv run mypy app/

# Линтинг
uv run flake8 app/

# Запуск тестов
uv run pytest

# Запуск проекта в режиме разработки
uv run python app/main.py

使用 pip

# Установка зависимостей для разработки
pip install -e ".[dev]"

# Форматирование кода
black .
isort .

# Проверка типов
mypy app/

# Линтинг
flake8 app/

# Запуск тестов
pytest

🔧 配置

模型配置

您可以通过环境变量更改所使用的模型:

LOCAL_MODEL=mistral  # или codellama, llama2

添加文档

将文档文件放入相应的文件夹中:

data/documentation/
├── cisco_ios/
│   └── commands.txt
├── juniper_junos/
│   └── commands.txt
└── ...

🤝 为项目做贡献

  1. 克隆仓库
  2. 为新功能创建分支
  3. 做出修改
  4. 添加测试
  5. 创建拉取请求

📄 许可证

此项目遵循MIT许可证发布。详情请参见LICENSE文件。

🆘 支持

如果您有任何问题或遇到困难:

  1. 查阅Ollama的文档
  2. 确保模型已加载
  3. 检查服务器日志
  4. 在仓库中创建一个Issue

🔮 发展计划

  • [ ] 支持额外类型的设备
  • [ ] 与真实模拟器的集成
  • [ ] 管理网页界面
  • [ ] 用于与外部系统集成的API
  • [ ] 扩展验证系统
  • [ ] 支持配置模板