Skip to main content
Glama
juhyungrok4237-boop

Veeam VBR v13 MCP Server

Veeam VBR v13 MCP Server

Veeam MCP TypeScript Node.js

Это 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 или выше

Проверить через node -v

npm

v9 или выше

Входит в состав Node.js

Veeam B&R

v13

Требуется доступ к порту REST API 9419

Сеть

-

Необходим TCP-доступ к порту 9419 сервера Veeam


📚 Зависимости пакетов

Зависимости среды выполнения (dependencies)

Пакет

Версия

Назначение

@modelcontextprotocol/sdk

^1.29.0

Фреймворк MCP-сервера (включая уровни передачи stdio/SSE)

axios

^1.15.1

HTTP-клиент для Veeam REST API

express

^5.2.1

Веб-сервер для режима SSE(HTTP)

dotenv

^17.4.2

Загрузка переменных окружения из .env

zod

^4.3.6

Валидация схемы параметров инструментов MCP

body-parser

^2.2.2

Парсинг тела запросов Express

Зависимости разработки (devDependencies)

Пакет

Версия

Назначение

typescript

^6.0.3

Компилятор TypeScript

tsx

^4.21.0

Прямой запуск TypeScript (режим разработки)

@types/node

^25.6.0

Определения типов Node.js

@types/express

^5.0.6

Определения типов Express

@types/body-parser

^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_SERVER

https://localhost

Адрес сервера Veeam (обязательно https)

VEEAM_PORT

-

9419

Порт REST API

VEEAM_USERNAME

-

Учетная запись администратора Veeam

VEEAM_PASSWORD

-

Пароль администратора Veeam

NODE_TLS_REJECT_UNAUTHORIZED

-

1

0 = разрешить самоподписанные сертификаты

MCP_TRANSPORT_MODE

-

stdio

stdio или streamable-http

MCP_HTTP_PORT

-

3000

Порт для HTTP-режима

MCP_STATELESS

-

false

true = режим Stateless (без сессий)


🖥️ Запуск - режим stdio

Режим stdio — это способ, при котором ИИ-клиент (Claude Desktop, Cursor и др.) запускает процесс MCP-сервера как дочерний процесс и обменивается сообщениями JSON-RPC через стандартный ввод/вывод (stdin/stdout).

Интеграция с Claude Desktop

Расположение файла claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/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/mcp

HTTP-эндпоинты

Метод

Путь

Заголовки

Описание

POST

/mcp

Content-Type: application/json

Основной канал JSON-RPC (инициализация + вызов инструментов)

GET

/mcp

Mcp-Session-Id: <id>

Поток уведомлений SSE от сервера к клиенту

DELETE

/mcp

Mcp-Session-Id: <id>

Явное завершение сессии

GET

/health

-

Проверка состояния сервера и количества активных сессий

Интеграция в Dify

  1. В Dify перейдите в Управление инструментамиДобавить MCP-сервер.

  2. Введите URL MCP-сервера:

    http://<your-server-ip>:3000/mcp
  3. После сохранения проверьте наличие инструментов 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

Спецификация MCP

Последняя (stdio не зависит от спецификации)

MCP 2025-03-26 Streamable HTTP

Сеть

Только локально

Возможен удаленный доступ

Множество клиентов

1:1 (только один клиент)

N:M (несколько клиентов одновременно)

Интеграция с Dify

❌ Невозможно

✅ Возможно (через URL /mcp)

Сложность настройки

Легко (только JSON-конфиг)

Запуск сервера + указание URL

Подходящие сценарии

Персональный ПК, Claude Desktop/Cursor

Dify, командное использование, удаленное развертывание

Переменные окружения

MCP_TRANSPORT_MODE=stdio (по умолчанию)

MCP_TRANSPORT_MODE=streamable-http


🛠️ Поддерживаемые категории инструментов (всего 328 инструментов)

#

Файл модуля

Основные функции

Кол-во инструментов

1

service.ts

Время сервера, сертификаты, информация о сервере, запрос служб

5

2

license.ts

Установка/обновление лицензии, управление сокетами/экземплярами/емкостью

16

3

credentials.ts

CRUD стандартных учетных записей + облачных (AWS/Azure/GCP)

23

4

encryption.ts

Пароли шифрования, управление KMS-серверами

13

5

generalOptions.ts

Настройки email/уведомлений, правила трафика, резервное копирование конфигурации, развертывание

22

6

security.ts

Анализатор безопасности, обнаружение вредоносного ПО, пользователи/роли, глобальные исключения

35

7

inventory.ts

Инвентаризация VMware/HyperV, браузер облачных ресурсов/Entra ID

23

8

infrastructure.ts

Серверы управления, хранилища, SOBR, прокси, серверы монтирования, WAN

46

9

jobs.ts

CRUD заданий резервного копирования/репликации/копирования, запуск/остановка/повтор

15

10

backups.ts

Наборы данных резервных копий, объекты резервного копирования, точки восстановления

17

11

sessions.ts

Просмотр сессий/заданий, логи, остановка

8

12

restore.ts

IR (VMware/HyperV/Azure), восстановление ВМ, FLR, Entra ID

46

13

operations.ts

Аварийное переключение/восстановление, реплики, агенты, автоматизированный импорт/экспорт

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.

Install Server
A
security – no known vulnerabilities
F
license - not found
C
quality - C tier

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