Veeam VBR v13 MCP Server
Veeam VBR v13 MCP Server
Это MCP-сервер (Model Context Protocol), который использует официальный REST API (1.3-rev1) Veeam Backup & Replication v13, позволяя ИИ-агентам (Claude Desktop, Cursor и др.) напрямую управлять инфраструктурой Veeam и контролировать её.
На основе swagger.json реализовано 328 инструментов MCP, охватывающих наиболее важные функции из 39 тегов и 404 API-операций.
📋 Содержание
🌟 Основные функции
328 инструментов MCP: охватывают практически все возможности Veeam REST API.
Двойной режим передачи:
stdio(Claude Desktop/Cursor) +streamable-http(Dify/удаленные агенты).Соответствие спецификации MCP 2025-03-26: реализация потоковой передачи HTTP (полная совместимость с Dify).
Умная аутентификация OAuth2: автоматический выпуск токенов, обновление перед истечением срока действия, повторная аутентификация при ошибке 401.
Полная модульность: разделение функций на 13 файлов для удобства обслуживания и расширения.
Выбор Stateful/Stateless: возможность сохранения состояния сессии (по умолчанию) или работы без сохранения состояния.
📦 Требования
Элемент | Версия | Примечание |
Node.js | v18 или выше | Проверить через |
npm | v9 или выше | Входит в состав Node.js |
Veeam B&R | v13 | Требуется доступ к порту REST API |
Сеть | - | Необходим TCP-доступ к порту |
📚 Зависимости пакетов
Зависимости среды выполнения (dependencies)
Пакет | Версия | Назначение |
| ^1.29.0 | Фреймворк MCP-сервера (включая уровни передачи stdio/SSE) |
| ^1.15.1 | HTTP-клиент для Veeam REST API |
| ^5.2.1 | Веб-сервер для режима SSE(HTTP) |
| ^17.4.2 | Загрузка переменных окружения из |
| ^4.3.6 | Валидация схемы параметров инструментов MCP |
| ^2.2.2 | Парсинг тела запросов Express |
Зависимости разработки (devDependencies)
Пакет | Версия | Назначение |
| ^6.0.3 | Компилятор TypeScript |
| ^4.21.0 | Прямой запуск TypeScript (режим разработки) |
| ^25.6.0 | Определения типов Node.js |
| ^5.0.6 | Определения типов Express |
| ^1.19.6 | Определения типов body-parser |
🚀 Установка и сборка
# 1. 리포지토리 클론
git clone https://github.com/<your-username>/veeam-mcp-13.git
cd veeam-mcp-13
# 2. 의존성 설치
npm install
# 3. TypeScript 빌드 (build/ 디렉토리에 JS 출력)
npm run buildРежим разработки: используйте
npm run devдля запуска TypeScript напрямую без сборки.
⚙️ Настройка переменных окружения
Создайте файл .env в корне проекта. Скопируйте и отредактируйте .env.example.
cp .env.example .env# ─── Veeam 서버 접속 정보 ─────────────────────────────────
VEEAM_SERVER=https://192.168.1.100
VEEAM_PORT=9419
VEEAM_USERNAME=Administrator
VEEAM_PASSWORD=YourPasswordHere
# ─── TLS 설정 ────────────────────────────────────────────
# Veeam 서버가 자체 서명 인증서를 사용하는 경우 0으로 설정
NODE_TLS_REJECT_UNAUTHORIZED=0
# ─── MCP 전송 모드 ───────────────────────────────────────
# stdio : Claude Desktop, Cursor 등 로컬 AI 클라이언트용
# streamable-http : Dify, 원격 AI 에이전트용 (MCP 2025-03-26 스펙)
MCP_TRANSPORT_MODE=stdio
# ─── HTTP 포트 (streamable-http 모드 전용) ───────────────
MCP_HTTP_PORT=3000
# ─── Stateless 모드 (streamable-http 전용) ───────────────
# true: 세션 없이 요청마다 독립 처리 (Dify 무상태 연동에 유리)
# false(기본): 세션 ID로 상태 유지
MCP_STATELESS=falseПеременная | Обязательно | По умолчанию | Описание |
| ✅ |
| Адрес сервера Veeam (обязательно https) |
| - |
| Порт REST API |
| ✅ | - | Учетная запись администратора Veeam |
| ✅ | - | Пароль администратора Veeam |
| - |
|
|
| - |
|
|
| - |
| Порт для HTTP-режима |
| - |
|
|
🖥️ Запуск - режим stdio
Режим stdio — это способ, при котором ИИ-клиент (Claude Desktop, Cursor и др.) запускает процесс MCP-сервера как дочерний процесс и обменивается сообщениями JSON-RPC через стандартный ввод/вывод (stdin/stdout).
Интеграция с Claude Desktop
Расположение файла claude_desktop_config.json:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"veeam-vbr": {
"command": "node",
"args": ["E:\\veeam-mcp-self\\build\\index.js"],
"env": {
"VEEAM_SERVER": "https://192.168.1.100",
"VEEAM_PORT": "9419",
"VEEAM_USERNAME": "Administrator",
"VEEAM_PASSWORD": "YourPassword",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}⚠️ Путь в
argsдолжен быть абсолютным путем к собранному файлуbuild/index.js.
Интеграция с редактором Cursor
Файл .cursor/mcp.json:
{
"mcpServers": {
"veeam-vbr": {
"command": "node",
"args": ["E:\\veeam-mcp-self\\build\\index.js"],
"env": {
"VEEAM_SERVER": "https://192.168.1.100",
"VEEAM_PORT": "9419",
"VEEAM_USERNAME": "Administrator",
"VEEAM_PASSWORD": "YourPassword",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
}
}Ручное тестирование (терминал)
В режиме stdio процесс считывает stdin в интерактивном режиме, поэтому его сложно тестировать напрямую. Используйте MCP Inspector:
# MCP Inspector 설치 및 실행
npx @modelcontextprotocol/inspector node build/index.jsПосле перехода по адресу http://localhost:5173 в браузере вы сможете увидеть 328 зарегистрированных инструментов и вызвать их напрямую.
🌐 Запуск - режим Streamable HTTP (интеграция с Dify)
⚠️ Важно: Старый метод
HTTP+SSE(раздельные эндпоинты/sse,/messages) устарел (Deprecated) с 05.11.2024. Dify и современные MCP-клиенты используют спецификацию MCP 2025-03-26 Streamable HTTP. Этот сервер предоставляет единый эндпоинт/mcp, полностью реализующий эту спецификацию.
Запуск сервера
# 방법 1: .env 파일에 MCP_TRANSPORT_MODE=streamable-http 설정 후
npm start
# 방법 2: 환경변수 인라인 지정 (Linux/Mac)
MCP_TRANSPORT_MODE=streamable-http MCP_HTTP_PORT=3000 npm start
# 방법 3: PowerShell (Windows)
$env:MCP_TRANSPORT_MODE="streamable-http"; $env:MCP_HTTP_PORT="3000"; npm start
# 방법 4: Stateless 모드로 실행 (Dify 권장)
$env:MCP_TRANSPORT_MODE="streamable-http"; $env:MCP_STATELESS="true"; npm start
# 방법 5: 개발 모드 (빌드 없이 직접 실행)
$env:MCP_TRANSPORT_MODE="streamable-http"; npm run devПример вывода при запуске сервера
[MCP] Loaded 328 tools from 328 unique names.
[MCP] Starting Streamable HTTP mode on port 3000 (stateless=false)...
[MCP] Streamable HTTP server listening on http://0.0.0.0:3000
[MCP] MCP endpoint : POST http://localhost:3000/mcp
[MCP] SSE stream : GET http://localhost:3000/mcp (with Mcp-Session-Id)
[MCP] Session end : DELETE http://localhost:3000/mcp (with Mcp-Session-Id)
[MCP] Health : GET http://localhost:3000/health
[MCP] → Configure Dify with URL: http://<your-host>:3000/mcpHTTP-эндпоинты
Метод | Путь | Заголовки | Описание |
|
|
| Основной канал JSON-RPC (инициализация + вызов инструментов) |
|
|
| Поток уведомлений SSE от сервера к клиенту |
|
|
| Явное завершение сессии |
|
| - | Проверка состояния сервера и количества активных сессий |
Интеграция в Dify
В Dify перейдите в Управление инструментами → Добавить MCP-сервер.
Введите URL MCP-сервера:
http://<your-server-ip>:3000/mcpПосле сохранения проверьте наличие инструментов Veeam в списке.
Примечание для Docker: Если и Dify, и этот сервер запущены в Docker, используйте IP-адрес хоста в сети Docker или имя контейнера вместо
localhost.
Интеграция режима Streamable HTTP в Claude Desktop
{
"mcpServers": {
"veeam-vbr-remote": {
"url": "http://192.168.1.200:3000/mcp"
}
}
}Проверка состояния сервера
curl http://localhost:3000/healthОтвет:
{
"status": "ok",
"transport": "streamable-http",
"stateless": false,
"activeSessions": 1,
"server": "veeam-vbr-mcp v2.0.0",
"mcpEndpoint": "http://localhost:3000/mcp"
}🔧 Сравнение stdio и Streamable HTTP
Элемент | Режим stdio | Режим Streamable HTTP |
Инициатор запуска | ИИ-клиент запускает как дочерний процесс | Запускается заранее как независимый сервер |
Способ связи | stdin/stdout (стандартный ввод/вывод) | HTTP POST/GET/DELETE |
Спецификация MCP | Последняя (stdio не зависит от спецификации) | MCP 2025-03-26 Streamable HTTP |
Сеть | Только локально | Возможен удаленный доступ |
Множество клиентов | 1:1 (только один клиент) | N:M (несколько клиентов одновременно) |
Интеграция с Dify | ❌ Невозможно | ✅ Возможно (через URL |
Сложность настройки | Легко (только JSON-конфиг) | Запуск сервера + указание URL |
Подходящие сценарии | Персональный ПК, Claude Desktop/Cursor | Dify, командное использование, удаленное развертывание |
Переменные окружения |
|
|
🛠️ Поддерживаемые категории инструментов (всего 328 инструментов)
# | Файл модуля | Основные функции | Кол-во инструментов |
1 |
| Время сервера, сертификаты, информация о сервере, запрос служб | 5 |
2 |
| Установка/обновление лицензии, управление сокетами/экземплярами/емкостью | 16 |
3 |
| CRUD стандартных учетных записей + облачных (AWS/Azure/GCP) | 23 |
4 |
| Пароли шифрования, управление KMS-серверами | 13 |
5 |
| Настройки email/уведомлений, правила трафика, резервное копирование конфигурации, развертывание | 22 |
6 |
| Анализатор безопасности, обнаружение вредоносного ПО, пользователи/роли, глобальные исключения | 35 |
7 |
| Инвентаризация VMware/HyperV, браузер облачных ресурсов/Entra ID | 23 |
8 |
| Серверы управления, хранилища, SOBR, прокси, серверы монтирования, WAN | 46 |
9 |
| CRUD заданий резервного копирования/репликации/копирования, запуск/остановка/повтор | 15 |
10 |
| Наборы данных резервных копий, объекты резервного копирования, точки восстановления | 17 |
11 |
| Просмотр сессий/заданий, логи, остановка | 8 |
12 |
| IR (VMware/HyperV/Azure), восстановление ВМ, FLR, Entra ID | 46 |
13 |
| Аварийное переключение/восстановление, реплики, агенты, автоматизированный импорт/экспорт | 59 |
📁 Структура проекта
veeam-mcp-self/
├── src/
│ ├── index.ts # 진입점 (stdio / Streamable HTTP 모드 분기)
│ ├── server.ts # McpServer 인스턴스 + 동적 Tool 등록
│ ├── veeamClient.ts # Axios 클라이언트 + OAuth2 자동 갱신
│ ├── types/
│ │ └── index.ts # 공통 타입 (ToolDefinition, ok/err 헬퍼)
│ └── tools/
│ ├── index.ts # 모든 모듈 통합 (328개 도구 배열)
│ ├── service.ts # Service & Services
│ ├── license.ts # License
│ ├── credentials.ts # Credentials & Cloud Credentials
│ ├── encryption.ts # Encryption & KMS
│ ├── generalOptions.ts # General Options, Traffic, Config Backup
│ ├── security.ts # Security, Malware, Users, Exclusions
│ ├── inventory.ts # Inventory Browser, Cloud Browser
│ ├── infrastructure.ts # Servers, Repos, Proxies, Mount, WAN
│ ├── jobs.ts # Jobs
│ ├── backups.ts # Backups, Objects, Restore Points
│ ├── sessions.ts # Sessions, Task Sessions
│ ├── restore.ts # All Restore Operations
│ └── operations.ts # Failover, Failback, Agents, Automation
├── build/ # TypeScript 컴파일 출력 (git 제외)
├── .env.example # 환경변수 템플릿
├── .gitignore
├── package.json
├── tsconfig.json
└── README.md💬 Примеры использования промптов
Вы можете отдавать команды на естественном языке ИИ-ассистенту, подключенному к этому MCP:
Мониторинг
"최근 24시간 내 실패한 백업 작업이 있는지 알려줘"
"저장소의 남은 용량을 확인해줘"
"현재 실행 중인 작업 상태를 알려줘"Управление заданиями
"DailyBackup 작업을 지금 즉시 실행해줘"
"Job ID xxxx-xxxx 를 비활성화해줘"Восстановление
"VM 'WebServer01'의 최신 복원 포인트를 찾아줘"
"해당 복원 포인트로 Instant Recovery를 시작해줘"Безопасность
"보안 준수 분석기를 실행해줘"
"멀웨어 감지 이벤트가 있는지 확인해줘"Управление инфраструктурой
"등록된 모든 관리 서버와 프록시 상태를 알려줘"
"새로운 VMware vCenter 서버를 추가해줘"📄 Лицензия
Этот проект распространяется под лицензией Apache License 2.0.
https://www.apache.org/licenses/LICENSE-2.0.txt
Veeam® и Veeam Backup & Replication® являются зарегистрированными товарными знаками Veeam Software Group GmbH. Данный проект официально не связан с Veeam и не поддерживается компанией Veeam.
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/juhyungrok4237-boop/veeam-mcp-13'
If you have feedback or need assistance with the MCP directory API, please join our Discord server