Vostbur/network-mcp-server
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 для обеспечения приватности и контроля над данными.
🏗️ Архитектура
Основные компоненты
- MCP Server (
app/main.py) - Главный сервер, обрабатывающий MCP запросы - Configuration Graph (
app/graph.py) - LangGraph workflow для генерации конфигураций - Documentation Tool (
app/tools.py) - Поиск релевантной документации - Models (
app/models.py) - Pydantic модели данных - 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
- Установите Ollama: https://ollama.ai/
- Скачайте модели:
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 устройства
🛡️ Безопасность
Система включает многоуровневую проверку безопасности:
- Валидация команд - Проверка на потенциально опасные операции
- Режим симуляции - По умолчанию все команды выполняются в режиме симуляции
- Команды отката - Автоматическая генерация команд для отмены изменений
- Предупреждения - Уведомления о потенциальных рисках
📁 Структура проекта
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
└── ...
🤝 Вклад в проект
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Добавьте тесты
- Создайте Pull Request
📄 Лицензия
Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.
🆘 Поддержка
Если у вас возникли вопросы или проблемы:
- Проверьте документацию Ollama
- Убедитесь, что модели загружены
- Проверьте логи сервера
- Создайте Issue в репозитории
🔮 Планы развития
- Поддержка дополнительных типов оборудования
- Интеграция с реальными эмуляторами
- Веб-интерфейс для управления
- API для интеграции с внешними системами
- Расширенная система валидации
- Поддержка шаблонов конфигураций