🌐 Сервер MCP Nornir
Сервер FastMCP , предоставляющий инструменты сетевой автоматизации на базе Nornir и NAPALM .
Этот сервер действует как мост, предоставляя сетевые операции Nornir/NAPALM в качестве инструментов MCP (Massively Concurrent Processing), что делает их легкодоступными из совместимых клиентов MCP (например, FastMCP Web UI).
✨ Основные характеристики
Использует Nornir для управления запасами и параллельного выполнения задач на сетевых устройствах.
Использует NAPALM для взаимодействия устройств разных производителей (сбор информации, выполнение команд).
Создан с использованием FastMCP для бесшовной интеграции с клиентами MCP, использующими различные транспорты (SSE в этой конфигурации).
Контейнеризация с Docker 🐳 для легкой настройки и развертывания.
Использует
uvдля быстрого управления зависимостями Python внутри контейнера ⚡.
Related MCP server: Cloudflare API MCP Server
🔧 Предварительные условия
Прежде чем начать, убедитесь, что у вас установлено следующее:
Docker Compose (обычно входит в состав Docker Desktop)
⚙️ Конфигурация
Перед запуском сервера необходимо настроить сетевой инвентарь и учетные данные устройства:
Перейдите в каталог
conf/в проекте.Редактировать : Определите свои сетевые устройства. Укажите их IP-адрес управления/имя хоста, платформу (например,
ios,junos,eos), учетные данные (если не используются значения по умолчанию) и при необходимости назначьте их группам.Редактировать : Определить группы устройств с общими свойствами (например, платформа или параметры подключения). Настройки здесь могут переопределять значения по умолчанию.
Отредактируйте : установите учетные данные по умолчанию (
username,password) и параметры подключения (например,secretNAPALM для включения паролей илиplatformпо умолчанию).⚠️ Важное примечание по безопасности: конфигурация по умолчанию использует учетные данные в виде открытого текста в файлах YAML. Это подходит для тестовых/лабораторных сред. Для производства настоятельно рекомендуется использовать встроенные функции управления секретами Nornir (например, переменные среды, плагин HashiCorp Vault), чтобы избежать хранения конфиденциальной информации непосредственно в файлах конфигурации. Измените
nornir_ops.pyи свою конфигурацию, если вы реализуете поставщика секретов.
Проверьте : убедитесь, что пути к файлам инвентаризации (
host_file,group_file,defaults_file) правильно указывают на файлы в каталогеconf/(они должны быть такими по умолчанию). При необходимости настройте параметры исполнителя (num_workers).
▶️ Запуск сервера
После настройки вы сможете легко запустить сервер с помощью Docker Compose:
Убедитесь, что вы настроили каталог
conf/как описано выше.Откройте терминал или командную строку в корневом каталоге проекта (том же каталоге, где находятся файлы
Dockerfileиdocker-compose.yml).Выполните следующую команду:
docker-compose up --build -dФлаг
--buildсообщает Docker Compose о необходимости создания образа на основеDockerfileв первый раз или в случае изменения каких-либо файлов проекта (например, файлов.pyилиpyproject.toml).Эта команда запустит сервер Nornir MCP в контейнере Docker.
Журналы сервера будут отображаться в вашем терминале. По умолчанию он должен быть доступен на порту
8000вашего хост-компьютера (localhost).Чтобы остановить сервер, нажмите
Ctrl+Cв терминале, где запущенdocker-compose. Чтобы удалить контейнер после этого, запуститеdocker-compose down.
🔌 Добавление в MCP Client
Чтобы использовать инструменты, предоставляемые этим сервером, в клиенте MCP (например, официальном веб-интерфейсе FastMCP или других совместимых клиентах):
Убедитесь, что сервер Nornir MCP запущен (с помощью
docker-compose up).Откройте клиентское приложение MCP.
Найдите возможность добавлять или управлять подключениями к серверу MCP.
Добавьте новое соединение со следующими данными:
URL-адрес сервера : поскольку этот сервер использует транспорт SSE (Server-Sent Events) и по умолчанию работает на порту 8000, URL-адрес будет следующим:
http://localhost:8000/sse(Если у вашего хоста Docker другой IP-адрес, доступный клиенту, замените
Имя подключения : дайте ему описательное имя, например,
Nornir Lab Server.
Сохраните и подключитесь к недавно добавленному серверу.
Клиент MCP должен обнаружить службу
Nornir_MCPи перечислить все доступные инструменты (например,get_facts,send_commandи т. д.). Теперь вы можете использовать эти инструменты через интерфейс клиента! 🎉
Примеры DSL Dify
Nornir MCP.yml — простой пример для общения с вашими устройствами.
Device Check.yml — пример запуска отчета об оценке устройства.
🛠️ Доступные инструменты и ресурсы
После подключения через клиент MCP обычно должны быть доступны следующие инструменты (под именем службы «Nornir_MCP»):
Инвентарь:
list_all_hosts: выводит список устройств, настроенных в вашем инвентаре Nornir (conf/hosts.yaml).
Получатели NAPALM: (Получить информацию)
get_factsget_interfacesget_interfaces_ipget_interfaces_countersget_config(с опциейretrieve: запущено, запущено, кандидат)get_arp_tableget_mac_address_tableget_usersget_vlansget_snmp_informationget_bgp_neighbors(Доступность зависит от платформы устройства и поддержки драйвера NAPALM)
Исполнение:
send_command: отправить на устройство одну команду, доступную только для чтения, и получить вывод.
Ресурс потоковой передачи:
sse://updates: предоставляет простой поток событий heartbeat. (На него могут подписываться клиенты, поддерживающие ресурсы SSE).
📄 Лицензия
Данный проект лицензирован по лицензии MIT.
🙌 Вклад
Вклады, проблемы и запросы на функции приветствуются! Пожалуйста, не стесняйтесь отправлять их через репозиторий проекта.