Skip to main content
Glama
juhyungrok4237-boop

Veeam VBR v13 MCP Server

Veeam VBR v13 MCP-Server

Veeam MCP TypeScript Node.js

Dies ist ein MCP-Server (Model Context Protocol), der die offizielle REST-API (1.3-rev1) von Veeam Backup & Replication v13 nutzt, damit KI-Agenten (Claude Desktop, Cursor usw.) die Veeam-Infrastruktur direkt steuern und überwachen können.

Basierend auf der swagger.json wurden 328 MCP-Tools aus insgesamt 39 Tags und 404 API-Operationen vollständig modular implementiert.


📋 Inhaltsverzeichnis


🌟 Hauptfunktionen

  • 328 MCP-Tools: Deckt nahezu alle Funktionen der Veeam REST-API ab.

  • Dualer Übertragungsmodus: stdio (Claude Desktop/Cursor) + streamable-http (Dify/Remote-Agenten).

  • Einhaltung der neuesten MCP-Spezifikation (2025-03-26): Implementierung des Streamable HTTP-Übertragungsprotokolls (vollständig kompatibel mit Dify).

  • Smarte OAuth2-Authentifizierung: Automatische Token-Ausstellung, Erneuerung vor Ablauf und automatische Re-Authentifizierung bei 401-Fehlern.

  • Vollständig modular: Aufteilung in 13 Dateien für einfache Wartung und Erweiterbarkeit.

  • Stateful/Stateless-Option: Wahl zwischen Sitzungszustandserhaltung (Standard) oder zustandslosem Modus.


📦 Anforderungen

Element

Version

Hinweis

Node.js

v18 oder höher

Überprüfung mit node -v

npm

v9 oder höher

In Node.js enthalten

Veeam B&R

v13

Zugriff auf REST-API-Port 9419 erforderlich

Netzwerk

-

TCP-Zugriff auf Port 9419 des Veeam-Servers erforderlich


📚 Paketabhängigkeiten

Laufzeitabhängigkeiten (dependencies)

Paket

Version

Zweck

@modelcontextprotocol/sdk

^1.29.0

MCP-Server-Framework (inkl. stdio/SSE-Übertragungsschicht)

axios

^1.15.1

HTTP-Client für die Veeam REST-API

express

^5.2.1

Webserver für den SSE(HTTP)-Modus

dotenv

^17.4.2

Laden von Umgebungsvariablen aus .env

zod

^4.3.6

Validierung des MCP-Tool-Parameterschemas

body-parser

^2.2.2

Parsen von Express-Anfrage-Bodys

Entwicklungsabhängigkeiten (devDependencies)

Paket

Version

Zweck

typescript

^6.0.3

TypeScript-Compiler

tsx

^4.21.0

Direkte Ausführung von TypeScript (Entwicklungsmodus)

@types/node

^25.6.0

Node.js-Typdefinitionen

@types/express

^5.0.6

Express-Typdefinitionen

@types/body-parser

^1.19.6

body-parser-Typdefinitionen


🚀 Installation und Build

# 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

Entwicklungsmodus: Verwenden Sie npm run dev, um TypeScript ohne Build-Schritt direkt auszuführen.


⚙️ Umgebungsvariablen

Erstellen Sie eine .env-Datei im Projektstammverzeichnis. Kopieren Sie .env.example und passen Sie diese an.

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

Variable

Erforderlich

Standardwert

Beschreibung

VEEAM_SERVER

https://localhost

Veeam-Server-Adresse (https erforderlich)

VEEAM_PORT

-

9419

REST-API-Port

VEEAM_USERNAME

-

Veeam-Administratorkonto

VEEAM_PASSWORD

-

Veeam-Administratorkennwort

NODE_TLS_REJECT_UNAUTHORIZED

-

1

0 = Selbstsignierte Zertifikate zulassen

MCP_TRANSPORT_MODE

-

stdio

stdio oder streamable-http

MCP_HTTP_PORT

-

3000

Port für den HTTP-Modus

MCP_STATELESS

-

false

true = Zustandsloser Modus (keine Sitzung)


🖥️ Ausführung - stdio-Modus

Der stdio-Modus ist die Methode, bei der der KI-Client (Claude Desktop, Cursor usw.) den MCP-Server-Prozess direkt als untergeordneten Prozess startet und JSON-RPC-Nachrichten über die Standard-Ein-/Ausgabe (stdin/stdout) austauscht.

Integration in Claude Desktop

Speicherort der 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"
      }
    }
  }
}

⚠️ Der Pfad in args muss der absolute Pfad zur kompilierten build/index.js sein.

Integration in den Cursor-Editor

.cursor/mcp.json Datei:

{
  "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"
      }
    }
  }
}

Manuelle Tests (Terminal)

Im stdio-Modus ist ein direkter Test schwierig, da der Prozess interaktiv stdin liest. Verwenden Sie den MCP Inspector:

# MCP Inspector 설치 및 실행
npx @modelcontextprotocol/inspector node build/index.js

Wenn Sie im Browser auf http://localhost:5173 zugreifen, können Sie die registrierten 328 Tools einsehen und direkt aufrufen.


🌐 Ausführung - Streamable HTTP-Modus (Dify-Integration)

⚠️ Wichtig: Die alte HTTP+SSE-Methode (getrennte Endpunkte /sse, /messages) ist seit MCP 2024-11-05 veraltet. Dify und moderne MCP-Clients verwenden die MCP 2025-03-26 Streamable HTTP-Spezifikation. Dieser Server bietet einen einzelnen /mcp-Endpunkt, der diese Spezifikation vollständig implementiert.

Server starten

# 방법 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

Beispielausgabe beim Serverstart

[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-Endpunkte

Methode

Pfad

Header

Beschreibung

POST

/mcp

Content-Type: application/json

Haupt-JSON-RPC-Kanal (Initialisierung + Tool-Aufruf)

GET

/mcp

Mcp-Session-Id: <id>

SSE-Benachrichtigungsstream vom Server zum Client

DELETE

/mcp

Mcp-Session-Id: <id>

Explizite Beendigung der Sitzung

GET

/health

-

Überprüfung des Serverstatus und der aktiven Sitzungen

Integration in Dify

  1. Klicken Sie in Dify auf Tool-VerwaltungMCP-Server hinzufügen.

  2. Geben Sie die MCP-Server-URL ein:

    http://<your-server-ip>:3000/mcp
  3. Nach dem Speichern können Sie die Veeam-Tools in der Tool-Liste sehen.

Hinweis zur Docker-Umgebung: Wenn sowohl Dify als auch dieser Server in Docker laufen, verwenden Sie anstelle von localhost die Host-IP innerhalb des Docker-Netzwerks oder den Containernamen.

Integration des Streamable HTTP-Modus in Claude Desktop

{
  "mcpServers": {
    "veeam-vbr-remote": {
      "url": "http://192.168.1.200:3000/mcp"
    }
  }
}

Serverstatus prüfen

curl http://localhost:3000/health

Antwort:

{
  "status": "ok",
  "transport": "streamable-http",
  "stateless": false,
  "activeSessions": 1,
  "server": "veeam-vbr-mcp v2.0.0",
  "mcpEndpoint": "http://localhost:3000/mcp"
}

🔧 Vergleich: stdio vs. Streamable HTTP

Element

stdio-Modus

Streamable HTTP-Modus

Ausführung

KI-Client startet als Kindprozess

Läuft als eigenständiger Server

Kommunikation

stdin/stdout (Standard-E/A)

HTTP POST/GET/DELETE /mcp

MCP-Spezifikation

Aktuell (stdio ist spezifikationsunabhängig)

MCP 2025-03-26 Streamable HTTP

Netzwerk

Nur lokal

Remote-Zugriff möglich

Mehrere Clients

1:1 (nur ein Client)

N:M (mehrere Clients gleichzeitig)

Dify-Integration

❌ Nicht möglich

✅ Möglich (Eingabe der /mcp-URL)

Einrichtung

Einfach (nur JSON-Konfiguration)

Serverstart + URL-Angabe

Geeignet für

Persönlicher PC, Claude Desktop/Cursor

Dify, Team-Sharing, Remote-Deployment

Umgebungsvariable

MCP_TRANSPORT_MODE=stdio (Standard)

MCP_TRANSPORT_MODE=streamable-http


🛠️ Unterstützte Tool-Kategorien (insgesamt 328 Tools)

#

Moduldatei

Hauptfunktionen

Anzahl Tools

1

service.ts

Serverzeit, Zertifikate, Serverinfo, Dienstabfrage

5

2

license.ts

Lizenzinstallation/-erneuerung, Socket/Instanz/Kapazitätsverwaltung

16

3

credentials.ts

Standardkonten + Cloud-Konten (AWS/Azure/GCP) CRUD

23

4

encryption.ts

Verschlüsselungskennwörter, KMS-Serververwaltung

13

5

generalOptions.ts

E-Mail/Benachrichtigungen, Verkehrsregeln, Konfigurations-Backup, Deployment

22

6

security.ts

Sicherheitsanalysator, Malware-Erkennung, Benutzer/Rollen, globale Ausschlüsse

35

7

inventory.ts

VMware/HyperV-Inventar, Cloud/Entra ID-Browser

23

8

infrastructure.ts

Verwaltungsserver, Speicher, SOBR, Proxy, Mount-Server, WAN

46

9

jobs.ts

Backup/Replikation/Kopier-Jobs CRUD, Start/Stop/Retry

15

10

backups.ts

Backup-Datensätze, Backup-Objekte, Wiederherstellungspunkte

17

11

sessions.ts

Sitzungs-/Aufgabensitzungsabfrage, Protokolle, Stopp

8

12

restore.ts

IR (VMware/HyperV/Azure), VM-Wiederherstellung, FLR, Entra ID

46

13

operations.ts

Failover/Failback, Replikate, Agenten, automatisierter Import/Export

59


📁 Projektstruktur

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

💬 Beispiele für die Verwendung von Prompts

Sie können dem KI-Assistenten, der mit diesem MCP verbunden ist, Anweisungen in natürlicher Sprache geben:

Überwachung

"최근 24시간 내 실패한 백업 작업이 있는지 알려줘"
"저장소의 남은 용량을 확인해줘"
"현재 실행 중인 작업 상태를 알려줘"

Job-Steuerung

"DailyBackup 작업을 지금 즉시 실행해줘"
"Job ID xxxx-xxxx 를 비활성화해줘"

Wiederherstellung

"VM 'WebServer01'의 최신 복원 포인트를 찾아줘"
"해당 복원 포인트로 Instant Recovery를 시작해줘"

Sicherheit

"보안 준수 분석기를 실행해줘"
"멀웨어 감지 이벤트가 있는지 확인해줘"

Infrastrukturverwaltung

"등록된 모든 관리 서버와 프록시 상태를 알려줘"
"새로운 VMware vCenter 서버를 추가해줘"

📄 Lizenz

Dieses Projekt unterliegt der Apache License 2.0.

https://www.apache.org/licenses/LICENSE-2.0.txt

Veeam® und Veeam Backup & Replication® sind eingetragene Marken der Veeam Software Group GmbH. Dieses Projekt ist nicht offiziell mit Veeam verbunden oder von Veeam unterstützt.

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