nandi-proxmox-mcp
NANDI Proxmox MCP
Превратите свой кластер Proxmox в платформу на базе ИИ с более чем 140 инструментами для автоматизации, мониторинга и контролируемого выполнения задач.
MCP-сервер с открытым исходным кодом для Proxmox VE, работающий на базе NANDI Services.
nandi-proxmox-mcp предоставляет доступ к инвентаризации Proxmox, жизненному циклу, хранилищам, резервному копированию, сети, брандмауэру, доступу, мониторингу, SSH-диагностике и защищенным удаленным/контейнерным операциям без снятия защитных механизмов, необходимых для производственных кластеров.
Что остается включенным
140+ инструментов для работы с узлами, кластером, QEMU, LXC, хранилищами, резервным копированием, задачами, сетью, брандмауэром, пулами, доступом, шаблонами, мониторингом и удаленными операциями.
Уровни доступа:
read-only,read-execute,full.Разделение модулей:
PVE_MODULE_MODE=core|advanced.Фильтры инструментов:
PVE_CATEGORIES,PVE_TOOL_BLACKLIST,PVE_TOOL_WHITELIST.Защита от деструктивных действий через
confirm=true.Обратно совместимые псевдонимы, такие как
listNodes,getVMStatus,startVM,stopContainer.Транспорт
stdioдля MCP-клиентов и потоковый HTTP-транспорт для контролируемых удаленных развертываний.
Необходимые разрешения
Серверу требуются два канала доверия, и оба они намеренно сохранены:
API-токен Proxmox
Используется для инвентаризации, жизненного цикла, конфигурации и конечных точек управления.
Сохраняйте списки контроля доступа (ACL) минимальными: предоставляйте только те роли, которые необходимы для инструментов, которые вы действительно используете.
SSH-доступ к хосту Proxmox
Требуется для
pct exec, пакетной SSH-диагностики и инструментов проверки Docker на уровне контейнеров.Это по-прежнему необходимо, поскольку покрытие API Proxmox не заменяет
pctна стороне хоста и диагностику на основе SSH.
Подробнее: docs/PERMISSIONS.md
Подтверждение деструктивных действий
Операции, помеченные как деструктивные, не выполняются, если вызывающая сторона не отправит confirm=true.
Примеры:
Остановка, выключение, перезагрузка, приостановка, удаление, миграция, откат снимка (snapshot) ВМ/контейнера
Запись в хранилище/сеть/брандмауэр/доступ, которая может изменить состояние кластера
Расширенное удаленное выполнение, такое как
pve_exec_in_container
Сервер возвращает структурированную ошибку CONFIRMATION_REQUIRED, если подтверждение отсутствует. Это поведение неизменно и усилено.
Уровни доступа
read-onlyИнвентаризация, статус, журналы, метрики и диагностика без внесения изменений.
read-executeТолько чтение плюс выбранные действия по выполнению/жизненному циклу.
fullСоздание, обновление, удаление, миграция, восстановление и операции административного уровня.
PVE_MODULE_MODE=core скрывает расширенные инструменты, не переименовывая и не удаляя канонические идентификаторы инструментов из кодовой базы.
Конфигурация среды выполнения
Переменные окружения
Обязательные:
PROXMOX_HOSTPROXMOX_USERPROXMOX_REALMPROXMOX_TOKEN_NAMEPROXMOX_TOKEN_SECRETPROXMOX_SSH_HOSTPROXMOX_SSH_USERPROXMOX_SSH_KEY_PATH
Опциональные:
PROXMOX_PORTпо умолчанию8006PROXMOX_SSH_PORTпо умолчанию22PROXMOX_ALLOW_INSECURE_TLSпо умолчаниюfalsePVE_ACCESS_TIER=read-only|read-execute|fullPVE_MODULE_MODE=core|advancedPVE_CATEGORIESPVE_TOOL_BLACKLISTPVE_TOOL_WHITELIST
HTTP-транспорт:
MCP_TRANSPORT=stdio|httpMCP_HOSTпо умолчанию0.0.0.0MCP_PORTпо умолчанию3000MCP_ALLOWED_HOSTSMCP_ALLOWED_ORIGINSMCP_RATE_LIMIT_WINDOW_MSMCP_RATE_LIMIT_MAXMCP_MAX_BODY_SIZE_BYTESMCP_HEADERS_TIMEOUT_MSMCP_REQUEST_TIMEOUT_MSMCP_KEEPALIVE_TIMEOUT_MSMCP_MAX_HEADERS_COUNT
Локальный файл конфигурации
Установка записывает .nandi-proxmox-mcp/config.json и .vscode/mcp.json.
Загрузчик конфигурации теперь отклоняет:
пустые или некорректные пути к конфигурации
слишком большие файлы конфигурации
управляющие символы в путях к конфигурации
Быстрый старт
Пошаговая настройка:
npx nandi-proxmox-mcp setup
npx nandi-proxmox-mcp doctor --check mcp-config,nodes,vms,cts,node-status,remote-opПрямой запуск с переменными окружения:
$env:PROXMOX_HOST="pve.local"
$env:PROXMOX_PORT="8006"
$env:PROXMOX_USER="svc_mcp"
$env:PROXMOX_REALM="pve"
$env:PROXMOX_TOKEN_NAME="nandi-mcp"
$env:PROXMOX_TOKEN_SECRET="<SECRET>"
$env:PROXMOX_SSH_HOST="pve.local"
$env:PROXMOX_SSH_USER="root"
$env:PROXMOX_SSH_KEY_PATH="$env:USERPROFILE\.ssh\id_ed25519"
npx nandi-proxmox-mcp runМодель безопасности и остаточные риски
Этот MCP-сервер работает с реальной инфраструктурой Proxmox и не является изолированной средой (песочницей).
Предположения о доверии
Сервер развернут в доверенной среде
Доступ к нему имеют только авторизованные операторы
Сетевое воздействие контролируется (не открыт для публичного доступа)
Учетные данные надежно защищены
Остаточные риски
Следующие риски присущи архитектуре системы:
Привилегированные операции Уровень полного доступа и возможности выполнения команд в контейнерах позволяют выполнять деструктивные действия или действия системного уровня.
Граница выполнения SSH Удаленное выполнение команд опирается на SSH и наследует уровень безопасности целевой системы.
Опциональный небезопасный режим TLS При включении (
PROXMOX_ALLOW_INSECURE_TLS=true) проверка TLS-сертификатов обходится, что может подвергнуть соединения атакам типа MITM. Предназначено только для лабораторного использования.Синхронизация внешних зависимостей Распространение пакетов и видимость в списках зависят от npm, реестра MCP и времени распространения на маркетплейсах.
Обязанности по обеспечению безопасности
Пользователи несут ответственность за:
Ограничение доступа только доверенными операторами
Использование API-токенов и SSH-ключей с минимальными привилегиями
Отказ от использования небезопасного TLS в производственных средах
Надлежащую защиту базовой инфраструктуры
Внедренные средства контроля безопасности
Уровни доступа (read-only, read-execute, full)
Обязательное подтверждение для деструктивных операций
Валидация входных данных и усиление команд
Ограничение частоты запросов (rate limiting) и их валидация
Усиление HTTP
Когда включен MCP_TRANSPORT=http, сервер применяет:
принудительное использование списка разрешенных хостов, включая защиту от привязки к подстановочным знакам (wildcard-bind)
проверку источника (origin) для запросов, отправляющих заголовок
Originявные ограничения размера тела запроса и очищенные ответы
413ограничение частоты запросов на
/mcpтайм-ауты запросов/заголовков/keep-alive
X-Content-Type-Options: nosniffCache-Control: no-storeочищенные полезные нагрузки ошибок без трассировки стека
Конечные точки состояния (health/readiness):
GET /healthGET /readyPOST /mcp
Усиление SSH и выполнения команд
Функциональность не изменилась, но путь выполнения стал строже:
локальное выполнение команд по-прежнему использует
spawn(..., { shell: false })значения SSH-хоста/пользователя не могут содержать скрытые CLI-опции
SSH использует
BatchMode,IdentitiesOnly, аутентификацию по открытому ключу и явный контроль активности соединениябуферы вывода ограничены для предотвращения неограниченного роста памяти
dockerLogsInContainerтеперь проверяет и экранирует имена контейнеров вместо интерполяции необработанного ввода пользователяпроизвольное выполнение команд в контейнере остается доступным только через уже деструктивный поток
pve_exec_in_containerс обязательным подтверждением
Состояние безопасности
Меры по смягчению рисков в репозитории:
закрепленные версии прямых зависимостей и
overridesв npm для критических транзитивных пакетовпроверяемые метаданные пакетов и ссылки на репозитории для сканеров npm/пакетов
проверка синхронизации дескриптора/версии для артефактов npm, реестра и маркетплейса
удаление значений, похожих на токены/заголовки/пароли, из журналов
клиентам не возвращаются трассировки стека или секреты
CI-шлюзы для линтинга, проверки типов, сборки, тестов, проверки метаданных, синхронизации дескрипторов,
npm pack --dry-runи аудита
Модель угроз и остаточные риски: docs/THREAT_MODEL.md
Процесс публикации
Порядок выпуска строгий:
npm run lintnpm run typechecknpm run buildnpm testnpm audit --include=dev --audit-level=moderatenpm ls expressnpm ls path-to-regexpnpm pack --dry-runnpm packnpm whoaminpm publish --access publicnpm view nandi-proxmox-mcp versionmcp-publisher validate .mcp/server.jsonmcp-publisher publish .mcp/server.json
Файл release.yml на основе тегов теперь сначала публикует npm и только потом дескриптор реестра MCP, предотвращая расхождение версий npm/реестра.
Ручной откат и устранение неполадок: docs/RELEASE.md
Разработка
npm ci
npm run lint
npm run typecheck
npm run build
npm test
npm run validate:release
npm pack --dry-runПолитика ведения документации
Этот репозиторий обеспечивает шлюз синхронизации документации перед коммитом.
Перед закрытием
change,fixилиrefactorоцените, нужно ли обновлятьREADME.md,AGENTS.mdиCONTRIBUTING.md.Если документ относится к поведенческому или процессуальному воздействию, он должен быть обновлен в том же наборе изменений.
Если обновление не требуется, необходимо явное обоснование
no-doc-change.Задача не считается готовой к коммиту, пока этот шлюз не пройден.
Документация
Реестр и маркетплейс
npm:
https://www.npmjs.com/package/nandi-proxmox-mcpРеестр MCP:
https://registry.modelcontextprotocol.io/Список на маркетплейсе MCP:
https://mcp-marketplace.io/server/io-github-nandi-services-nandi-proxmox-mcp
Лицензия
MIT. См. LICENSE.
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/NANDI-Services/proxmox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server