Skip to main content
Glama
juhyungrok4237-boop

Veeam VBR v13 MCP Server

Servidor MCP Veeam VBR v13

Veeam MCP TypeScript Node.js

Este es un servidor MCP (Model Context Protocol) que utiliza la API REST oficial (1.3-rev1) de Veeam Backup & Replication v13 para permitir que los agentes de IA (Claude Desktop, Cursor, etc.) controlen y supervisen directamente la infraestructura de Veeam.

Se han implementado de forma totalmente modular 328 herramientas MCP significativas, seleccionadas de entre 39 etiquetas y 404 operaciones de API según el archivo swagger.json.


📋 Índice


🌟 Funciones principales

  • 328 herramientas MCP: Cubre casi todas las funciones de la API REST de Veeam.

  • Modo de transporte dual: stdio (Claude Desktop/Cursor) + streamable-http (Dify/agentes remotos).

  • Cumplimiento con la especificación MCP 2025-03-26: Implementación del modo de transporte HTTP transmitible (totalmente compatible con Dify).

  • Autenticación OAuth2 inteligente: Emisión automática de tokens, renovación antes de la expiración y reautenticación automática ante errores 401.

  • Totalmente modular: Funciones separadas en 13 archivos para facilitar el mantenimiento y la expansión.

  • Selección Stateful/Stateless: Posibilidad de mantener el estado de la sesión (predeterminado) o elegir el modo sin estado.


📦 Requisitos

Elemento

Versión

Notas

Node.js

v18 o superior

Verificar con node -v

npm

v9 o superior

Incluido en Node.js

Veeam B&R

v13

Requiere acceso al puerto REST API 9419

Red

-

Debe tener acceso TCP al puerto 9419 del servidor Veeam


📚 Dependencias del paquete

Dependencias de tiempo de ejecución (dependencies)

Paquete

Versión

Propósito

@modelcontextprotocol/sdk

^1.29.0

Framework del servidor MCP (incluye capas de transporte stdio/SSE)

axios

^1.15.1

Cliente HTTP para la API REST de Veeam

express

^5.2.1

Servidor web para el modo SSE (HTTP)

dotenv

^17.4.2

Carga de variables de entorno desde .env

zod

^4.3.6

Validación de esquemas de parámetros de herramientas MCP

body-parser

^2.2.2

Análisis del cuerpo de las solicitudes Express

Dependencias de desarrollo (devDependencies)

Paquete

Versión

Propósito

typescript

^6.0.3

Compilador de TypeScript

tsx

^4.21.0

Ejecución directa de TypeScript (modo desarrollo)

@types/node

^25.6.0

Definiciones de tipos de Node.js

@types/express

^5.0.6

Definiciones de tipos de Express

@types/body-parser

^1.19.6

Definiciones de tipos de body-parser


🚀 Instalación y compilación

# 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

Modo desarrollo: Para ejecutar TypeScript directamente sin compilar, utilice npm run dev.


⚙️ Configuración de variables de entorno

Cree un archivo .env en la raíz del proyecto. Copie y modifique .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

Variable

Obligatorio

Predeterminado

Descripción

VEEAM_SERVER

https://localhost

Dirección del servidor Veeam (https obligatorio)

VEEAM_PORT

-

9419

Puerto de la API REST

VEEAM_USERNAME

-

Cuenta de administrador de Veeam

VEEAM_PASSWORD

-

Contraseña de administrador de Veeam

NODE_TLS_REJECT_UNAUTHORIZED

-

1

0=Permitir certificados autofirmados

MCP_TRANSPORT_MODE

-

stdio

stdio o streamable-http

MCP_HTTP_PORT

-

3000

Puerto para el modo HTTP

MCP_STATELESS

-

false

true=Modo sin estado (sin sesiones)


🖥️ Método de ejecución - modo stdio

El modo stdio es aquel en el que el cliente de IA (Claude Desktop, Cursor, etc.) ejecuta el proceso del servidor MCP directamente como un proceso hijo e intercambia mensajes JSON-RPC a través de la entrada/salida estándar (stdin/stdout).

Integración con Claude Desktop

Ubicación del archivo 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"
      }
    }
  }
}

⚠️ La ruta en args debe ser la ruta absoluta al archivo build/index.js compilado.

Integración con el editor Cursor

Archivo .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"
      }
    }
  }
}

Prueba manual (terminal)

En el modo stdio, el proceso lee stdin de forma interactiva, por lo que es difícil probarlo directamente. Utilice el Inspector MCP:

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

Al acceder a http://localhost:5173 desde el navegador, podrá ver las 328 herramientas registradas e invocarlas directamente.


🌐 Método de ejecución - modo HTTP transmitible (integración con Dify)

⚠️ Importante: El método antiguo HTTP+SSE (endpoints separados /sse, /messages) ha quedado obsoleto desde MCP 2024-11-05. Dify y los clientes MCP modernos utilizan la especificación MCP 2025-03-26 Streamable HTTP. Este servidor proporciona un endpoint único /mcp que implementa completamente la especificación más reciente.

Ejecución del servidor

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

Ejemplo de salida al ejecutar el servidor

[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

Endpoints HTTP

Método

Ruta

Cabecera

Descripción

POST

/mcp

Content-Type: application/json

Canal JSON-RPC principal (inicialización + llamada a herramientas)

GET

/mcp

Mcp-Session-Id: <id>

Flujo de notificaciones SSE del servidor al cliente

DELETE

/mcp

Mcp-Session-Id: <id>

Cierre explícito de sesión

GET

/health

-

Verificación del estado del servidor y número de sesiones activas

Integración en Dify

  1. En Dify, vaya a Gestión de herramientas → haga clic en Añadir servidor MCP.

  2. Introduzca la URL del servidor MCP:

    http://<your-server-ip>:3000/mcp
  3. Tras guardar, verifique las herramientas de Veeam en la lista de herramientas.

Nota sobre el entorno Docker: Si tanto Dify como este servidor se ejecutan en Docker, utilice la IP del host dentro de la red Docker o el nombre del contenedor en lugar de localhost.

Integración del modo HTTP transmitible en Claude Desktop

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

Verificación del estado del servidor

curl http://localhost:3000/health

Respuesta:

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

🔧 Comparación: stdio vs HTTP transmitible

Elemento

Modo stdio

Modo HTTP transmitible

Ejecutor

El cliente de IA lo ejecuta como proceso hijo

Se ejecuta previamente como servidor independiente

Comunicación

stdin/stdout (E/S estándar)

HTTP POST/GET/DELETE /mcp

Especificación MCP

Reciente (stdio es independiente de la especificación)

MCP 2025-03-26 Streamable HTTP

Red

Solo local

Acceso remoto posible

Multicliente

1:1 (solo un cliente)

N:M (varios clientes simultáneos)

Integración Dify

❌ No posible

✅ Posible (introduciendo URL /mcp)

Dificultad de configuración

Fácil (solo configuración JSON)

Ejecución del servidor + especificación de URL

Situación adecuada

PC personal, Claude Desktop/Cursor

Dify, uso compartido en equipo, despliegue remoto

Variables de entorno

MCP_TRANSPORT_MODE=stdio (predeterminado)

MCP_TRANSPORT_MODE=streamable-http


🛠️ Categorías de herramientas compatibles (Total 328 herramientas)

#

Archivo de módulo

Funciones principales

Cantidad de herramientas

1

service.ts

Hora del servidor, certificados, información del servidor, consulta de servicios

5

2

license.ts

Instalación/renovación de licencias, gestión de sockets/instancias/capacidad

16

3

credentials.ts

CRUD de cuentas estándar + cuentas en la nube (AWS/Azure/GCP)

23

4

encryption.ts

Contraseñas de cifrado, gestión de servidores KMS

13

5

generalOptions.ts

Configuración de correo/notificaciones, reglas de tráfico, copia de seguridad de configuración, despliegue

22

6

security.ts

Analizador de seguridad, detección de malware, usuarios/roles, exclusiones globales

35

7

inventory.ts

Inventario VMware/HyperV, navegador de nube/Entra ID

23

8

infrastructure.ts

Servidores de gestión, repositorios, SOBR, proxies, servidores de montaje, WAN

46

9

jobs.ts

CRUD de trabajos de backup/replicación/copia, Start/Stop/Retry

15

10

backups.ts

Conjuntos de datos de backup, objetos de backup, puntos de restauración

17

11

sessions.ts

Consulta de sesiones/sesiones de tareas, registros, detención

8

12

restore.ts

IR (VMware/HyperV/Azure), restauración de VM, FLR, Entra ID

46

13

operations.ts

Failover/Failback, réplicas, agentes, importación/exportación automatizada

59


📁 Estructura del proyecto

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

💬 Ejemplos de uso de prompts

Puede dar instrucciones en lenguaje natural a su asistente de IA conectado a este MCP:

Supervisión

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

Control de trabajos

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

Restauración

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

Seguridad

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

Gestión de infraestructura

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

📄 Licencia

Este proyecto sigue la Apache License 2.0

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

Veeam® y Veeam Backup & Replication® son marcas registradas de Veeam Software Group GmbH. Este proyecto no está afiliado ni respaldado oficialmente por 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