Network MCP Server
Network MCP Server
Сервер протокола контекста модели (MCP), который позволяет агенту ИИ взаимодействовать с сетевым устройством Cisco IOS-XE через SSH. Написан на Python с использованием FastMCP и Netmiko.
Сервер предоставляет 7 инструментов (5 для чтения + 2 для записи), каждый из которых имеет строгую проверку входных данных и четкие описания, чтобы агент LLM мог обнаруживать и использовать их автономно.
Курс: Agent AI & Automation — Sheridan College Автор: Ahmed Инструктор: Sebastian
Содержание
Лабораторная среда
Этот проект ориентирован на Always-On IOS-XE DevNet Sandbox от Cisco. Он бесплатный, общедоступный, не требует бронирования и всегда работает.
Настройка | Значение |
Хост |
|
Порт |
|
Имя пользователя |
|
Пароль |
|
Тип устройства | Cisco IOS-XE (Catalyst 8000v) |
Справочная информация: Cisco DevNet — Always-On Sandboxes.
Быстрая проверка подключения с вашего компьютера:
ssh admin@sandbox-iosxe-latest-1.cisco.com
# password: C1sco12345Вы должны увидеть приглашение Router# (или аналогичное). Если это работает, MCP-сервер тоже будет работать.
Песочница является общей. Пожалуйста, вносите небольшие и неразрушающие изменения (например, редактируйте только описания интерфейсов, не отключайте интерфейсы и не меняйте IP-адреса).
Установка
Требуется Python 3.10+.
# 1. Clone / copy the project
cd network-mcp-server
# 2. Create and activate a virtual environment (recommended)
python -m venv .venv
source .venv/bin/activate # on Windows: .venv\Scripts\activate
# 3. Install dependencies
pip install -r requirements.txtЗависимости:
mcp[cli]— MCP Python SDK (предоставляетFastMCP)netmiko— библиотека SSH/CLI для различных вендоровpython-dotenv— загружает.envдля локальной разработки
Запуск сервера
Вариант А — автономный (для локального тестирования)
cp .env.example .env
# edit .env if your lab uses different credentials
python server.pyСервер работает через stdio, поэтому он ожидает сообщения MCP JSON-RPC на stdin. На практике вы не будете вызывать его вручную — вы подключите Claude Desktop (см. ниже) или CLI разработчика mcp.
Вариант Б — интерактивный инспектор разработки
mcp dev server.pyЭто открывает инспектор MCP в вашем браузере, где вы можете просматривать список инструментов и вызывать их вручную.
Инструменты
Инструменты чтения
Инструмент | Описание |
| Имя хоста, модель, версия ПО, время работы, серийный номер. Парсит |
| Все интерфейсы со статусом, IP, описанием. Парсит |
| Таблица маршрутизации IPv4. Парсит |
| Соответствия IP-MAC. Парсит |
| Полная текущая конфигурация или отдельный раздел (например, |
Инструменты записи
Инструмент | Описание |
| Устанавливает описание на интерфейсе и проверяет, что изменение было применено, считывая его обратно. Аргументы: |
| Выполняет |
Все выходные данные инструментов представляют собой строки JSON, чтобы LLM могла анализировать структурированные данные. Когда парсеры TextFSM библиотеки Netmiko не могут обработать вывод, сервер возвращает необработанный текст CLI внутри обертки {"raw": "..."}.
Подключение к Claude Desktop
Найдите файл конфигурации Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Объедините блок ниже с файлом (используйте полный абсолютный путь к вашему
server.py):
{
"mcpServers": {
"network-mcp-server": {
"command": "python",
"args": ["/ABSOLUTE/PATH/TO/network-mcp-server/server.py"],
"env": {
"DEVICE_HOST": "sandbox-iosxe-latest-1.cisco.com",
"DEVICE_PORT": "22",
"DEVICE_USERNAME": "admin",
"DEVICE_PASSWORD": "C1sco12345",
"DEVICE_TYPE": "cisco_xe"
}
}
}
}Версия, готовая к копированию, находится в claude_desktop_config.example.json.
Полностью закройте и перезапустите Claude Desktop. (Простого закрытия окна недостаточно — процесс MCP остается активным.)
В новом чате нажмите на значок 🛠️ / инструментов. Вы должны увидеть
network-mcp-serverв списке с 7 инструментами.
Примеры взаимодействия
После подключения попробуйте следующие запросы:
"К какому устройству я подключен? Назови его имя хоста, модель и версию IOS." Агент вызовет
get_device_info.
"Перечисли все интерфейсы, у которых в данный момент назначен IP-адрес." Агент вызовет
get_interfacesи отфильтрует результаты.
"Покажи мне маршрут по умолчанию." Агент вызовет
get_routesи выберет запись с сетью0.0.0.0.
"Установи описание на GigabitEthernet2 'managed by MCP demo', затем подтверди, что изменение было применено." Агент вызовет
configure_interface_description, затем (опционально)get_running_configсsection='interface GigabitEthernet2'для проверки.
"Сохрани текущую конфигурацию в startup." Агент вызовет
save_config.
Необходимые разрешения
MCP-серверу требуется:
Исходящий сетевой доступ с хост-машины к SSH-порту устройства (по умолчанию TCP/22). В корпоративных сетях может потребоваться VPN или прокси.
Учетная запись устройства с правами privileged exec — учетная запись
adminв песочнице DevNet уже имеет этот уровень. Если вы используете собственное устройство, учетная запись должна иметь возможность входить вconfig tи выполнятьwrite memory.Локальный доступ на чтение к файлу
.envили эквивалентным переменным окружения, установленным Claude Desktop.
Серверу не требуются права root/администратора на вашей рабочей станции.
Заметки по безопасности
Учетные данные никогда не прописываются жестко. Они берутся из переменных окружения (
DEVICE_USERNAME,DEVICE_PASSWORD). Если какая-либо обязательная переменная отсутствует, сервер отказывается подключаться и возвращает понятную ошибку..envигнорируется git. Вместо него предоставляется.env.example(с безопасными значениями песочницы DevNet).Проверка входных данных для каждого инструмента. Имена интерфейсов, описания и фильтры разделов конфигурации проверяются регулярными выражениями перед отправкой в CLI устройства. Метасимволы оболочки (
;,|, обратная кавычка, новая строка, нулевой байт) отклоняются.Учетные данные никогда не передаются как аргументы инструментов. LLM не может прочитать, записать в лог или украсть их — она видит только выходные данные инструментов.
Инструменты записи включают проверку.
configure_interface_descriptionсчитывает конфигурацию после применения изменений и сообщаетapplied: true/false.Область действия ограничена. Два инструмента записи могут только изменять описания интерфейсов и сохранять конфигурацию. Деструктивные операции (shutdown, изменение IP-адреса, удаление VLAN,
erase startup-config) намеренно не представлены.
Устранение неполадок
"Missing required environment variable(s)"
Вы забыли установить DEVICE_HOST / DEVICE_USERNAME / DEVICE_PASSWORD. Скопируйте .env.example в .env или установите их в блоке env в Claude Desktop.
"Authentication to failed" Проверьте пароль. Если вы изменили песочницу или используете другое устройство, убедитесь, что SSH включен и учетная запись имеет права privileged-exec.
"Connection to timed out"
Исходящий сетевой доступ заблокирован. Попробуйте ssh admin@sandbox-iosxe-latest-1.cisco.com с той же машины. Если это тоже зависает, проблема в вашем брандмауэре/VPN.
Claude Desktop не показывает сервер после редактирования конфигурации
Полностью закройте Claude Desktop (не просто закройте окно) и перезапустите его. На macOS: Cmd+Q. На Windows: щелкните правой кнопкой мыши по значку в трее → Quit.
Вызов инструмента возвращает необработанный текст вместо структурированного JSON
Это означает, что шаблон TextFSM библиотеки Netmiko не совпал с выводом устройства (другая версия IOS, другая платформа). Сервер возвращает необработанный текст CLI в {"raw": "..."}. Агент все еще может анализировать его; просто он не структурирован.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/i-Nihal/network-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server