Skip to main content
Glama
akmalovaa

proxmox-mcp

Proxmox-mcp

CI Release License: MIT Python 3.14 GHCR MCP

Простой Proxmox MCP

MCP-сервер для управления Proxmox VE

38 инструментов — узлы, виртуальные машины QEMU, контейнеры LXC, хранилища, кластер, снимки.

Почему именно этот?

  • Один образ, мультиархитектурный — docker run ghcr.io/akmalovaa/proxmox-mcp:latest и готово

  • Только переменные окружения — никаких файлов конфигурации, баз данных или состояний

  • По умолчанию «только чтение» — деструктивные операции защищены явным параметром PROXMOX_RISK_LEVEL

  • Минималистичный код — чистый stdio MCP поверх Proxmoxer, без HTTP-сервера, уровня аутентификации и лишних компонентов

  • Вывод в формате Raw JSON — без форматирования и эмодзи; LLM получает «чистые» данные

Быстрый старт

Образ: ghcr.io/akmalovaa/proxmox-mcp:latest (мультиархитектурный: amd64 + arm64).

1. Экспортируйте учетные данные в профиле вашей оболочки (~/.zprofile, ~/.zshrc или ~/.bashrc):

# base environment:
export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root@pam
export PROXMOX_PASSWORD=your-password

# or use token auth (recommended):
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# optional:
export PROXMOX_RISK_LEVEL=read

Перезагрузите: source ~/.zprofile (или перезапустите оболочку).

2. Добавьте в ~/.claude/settings.json (Claude Code) или claude_desktop_config.json (Claude Desktop)`:

{
  "mcpServers": {
    "proxmox": {
      "command": "docker",
      "args": ["run", "-i", "--rm",
        "-e", "PROXMOX_HOST",
        "-e", "PROXMOX_USER",
        "-e", "PROXMOX_PASSWORD",
        "ghcr.io/akmalovaa/proxmox-mcp:latest"]
    }
  }
}

или аутентификация по токену:

{
  "mcpServers": {
    "proxmox": {
      "command": "docker",
      "args": ["run", "-i", "--rm",
        "-e", "PROXMOX_HOST",
        "-e", "PROXMOX_USER",
        "-e", "PROXMOX_TOKEN_NAME",
        "-e", "PROXMOX_TOKEN_VALUE",
        "ghcr.io/akmalovaa/proxmox-mcp:latest"]
    }
  }
}

Команда docker run -e VAR без значения передает переменную хоста — никаких секретов в файле конфигурации. Перезапустите клиент — и 38 инструментов Proxmox станут доступны.

Для аутентификации по паролю замените переменные токена на PROXMOX_PASSWORD.

Примечание: Claude Desktop на macOS запускается через launchd и не наследует ~/.zprofile/~/.zshrc. Либо добавьте экспорт в ~/.zshenv, либо используйте встроенный блок "env": { ... } в конфигурации.

Конфигурация

Все настройки задаются через переменные окружения — укажите их в профиле оболочки, передайте встроенно в docker run -e или объявите в блоке env вашего MCP-клиента.

Переменная

По умолчанию

Описание

PROXMOX_HOST

Хост Proxmox (IP или имя)

PROXMOX_USER

root@pam

Пользователь API

Auth

PROXMOX_PORT

8006

Порт API

PROXMOX_VERIFY_SSL

false

Проверка TLS-сертификата

PROXMOX_RISK_LEVEL

read

read / lifecycle / all

Аутентификация: токен или пароль

Выберите один вариант. Если заданы оба, приоритет у токена.

Токен (рекомендуется) — создайте в интерфейсе Proxmox: Datacenter → Permissions → API Tokens → Add (снимите галочку Privilege Separation). Затем:

export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Пароль (резервный вариант):

export PROXMOX_PASSWORD=your-password

Уровни риска

PROXMOX_RISK_LEVEL ограничивает деструктивные операции:

Уровень

Добавляет

read (по умолчанию)

инструменты только для чтения

lifecycle

+ запуск / остановка / перезагрузка / приостановка / клонирование / создание снимка

all

+ удаление снимка / откат к снимку

Каждый вызов с повышенными правами записывается в stderr (ALLOW / DENY + инструмент + уровень).

Инструменты

Узлы (7)

Инструмент

Описание

list_nodes

Список всех узлов кластера со статусом, CPU, памятью, временем работы

get_node_status

Подробные метрики узла (CPU, память, диск, нагрузка, ядро)

get_node_networks

Сетевые интерфейсы на узле

get_node_disks

Физические диски на узле

get_node_tasks

Недавние задачи на узле

get_task_status

Статус конкретной задачи по UPID

get_task_log

Лог выполнения задачи

Виртуальные машины QEMU (14)

Инструмент

Уровень

Описание

list_vms

read

Список всех ВМ, опционально фильтрация по узлу

get_vm_status

read

Текущий статус ВМ (запущена/остановлена, CPU, память)

get_vm_config

read

Конфигурация ВМ (оборудование, диски, сеть)

list_vm_snapshots

read

Список всех снимков ВМ

start_vm

lifecycle

Запуск ВМ

stop_vm

lifecycle

Принудительная остановка ВМ

shutdown_vm

lifecycle

Корректное выключение ACPI с таймаутом

reboot_vm

lifecycle

Перезагрузка через ACPI

suspend_vm

lifecycle

Приостановка ВМ

resume_vm

lifecycle

Возобновление работы приостановленной ВМ

clone_vm

lifecycle

Полное или связанное клонирование

create_vm_snapshot

lifecycle

Создание снимка

delete_vm_snapshot

all

Удаление снимка

rollback_vm_snapshot

all

Откат к снимку

Контейнеры LXC (11)

Инструмент

Уровень

Описание

list_containers

read

Список всех контейнеров LXC, опционально фильтрация по узлу

get_container_status

read

Текущий статус контейнера

get_container_config

read

Конфигурация контейнера

list_container_snapshots

read

Список всех снимков

start_container

lifecycle

Запуск контейнера

stop_container

lifecycle

Принудительная остановка контейнера

shutdown_container

lifecycle

Корректное выключение с таймаутом

reboot_container

lifecycle

Перезагрузка контейнера

create_container_snapshot

lifecycle

Создание снимка

delete_container_snapshot

all

Удаление снимка

rollback_container_snapshot

all

Откат к снимку

Хранилища (2)

Инструмент

Описание

list_storage

Пулы хранилищ с использованием, опционально фильтрация по узлу

get_storage_content

Содержимое пула хранилища (ISO, бэкапы, образы, шаблоны)

Кластер (4)

Инструмент

Описание

get_cluster_status

Состояние кластера, кворум, членство узлов

get_cluster_resources

Все ресурсы (ВМ, контейнеры, хранилища, узлы)

get_cluster_backups

Настроенные задачи резервного копирования

get_next_vmid

Следующий доступный ID для ВМ/контейнера

Архитектура

src/proxmox_mcp/
├── server.py    # FastMCP instance + entry point
├── config.py    # Pydantic Settings (PROXMOX_ prefix)
├── client.py    # Proxmoxer connection via lifespan
└── tools/       # nodes, vms, containers, storage, cluster
  • По умолчанию «только чтение» — инструменты с повышенными правами защищены PROXMOX_RISK_LEVEL

  • Единое соединение — клиент Proxmoxer создается один раз при запуске и используется совместно в течение жизненного цикла

  • Вывод в формате Raw JSON — без форматирования; LLM получает данные напрямую

Разработка

Запуск в автономном режиме (тестирование)

export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root@pam
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

docker run -i --rm \
  -e PROXMOX_HOST -e PROXMOX_USER \
  -e PROXMOX_TOKEN_NAME -e PROXMOX_TOKEN_VALUE \
  ghcr.io/akmalovaa/proxmox-mcp:latest

Без Docker (UV)

git clone https://github.com/akmalovaa/proxmox-mcp.git && cd proxmox-mcp && uv sync

Конфигурация MCP-клиента:

{
  "mcpServers": {
    "proxmox": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/proxmox-mcp", "proxmox-mcp"],
      "env": {
        "PROXMOX_HOST": "192.168.1.100",
        "PROXMOX_TOKEN_NAME": "mcp",
        "PROXMOX_TOKEN_VALUE": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      }
    }
  }
}

Сборка из исходного кода

git clone https://github.com/akmalovaa/proxmox-mcp.git
cd proxmox-mcp
docker build -t proxmox-mcp .

Лицензия

MIT

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
6Releases (12mo)

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/akmalovaa/proxmox-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server