network-mcp-server

Vostbur/network-mcp-server

3.1

If you are the rightful owner of network-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Network MCP Server is a system designed to generate network equipment configuration commands using local language models through the Model Context Protocol (MCP).

Network MCP Server

Система генерации команд конфигурации сетевого оборудования с использованием локальных языковых моделей через MCP (Model Context Protocol).

🎯 Описание

Этот проект представляет собой MCP сервер, который позволяет генерировать команды конфигурации для различных типов сетевого оборудования, используя естественный язык. Система использует локальные языковые модели через Ollama для обеспечения приватности и контроля над данными.

🏗️ Архитектура

Основные компоненты

  1. MCP Server (app/main.py) - Главный сервер, обрабатывающий MCP запросы
  2. Configuration Graph (app/graph.py) - LangGraph workflow для генерации конфигураций
  3. Documentation Tool (app/tools.py) - Поиск релевантной документации
  4. Models (app/models.py) - Pydantic модели данных
  5. Prompts (app/prompts.py) - Шаблоны промптов для LLM

Workflow обработки

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 (рекомендуется)

uv - быстрый менеджер пакетов Python от Astral.

Преимущества uv:

  • Скорость: В 10-100 раз быстрее pip
  • 🔒 Надежность: Детерминированные сборки
  • 🎯 Простота: Один инструмент для всех задач
  • 📦 Совместимость: Работает с 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 - Оборудование Juniper Networks
  • Huawei - Сетевые устройства Huawei
  • 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. Создайте Pull Request

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.

🆘 Поддержка

Если у вас возникли вопросы или проблемы:

  1. Проверьте документацию Ollama
  2. Убедитесь, что модели загружены
  3. Проверьте логи сервера
  4. Создайте Issue в репозитории

🔮 Планы развития

  • Поддержка дополнительных типов оборудования
  • Интеграция с реальными эмуляторами
  • Веб-интерфейс для управления
  • API для интеграции с внешними системами
  • Расширенная система валидации
  • Поддержка шаблонов конфигураций