Veeam VBR v13 MCP Server
Veeam VBR v13 MCP 服务器
这是一个 MCP (Model Context Protocol) 服务器,利用 Veeam Backup & Replication v13 的官方 REST API (1.3-rev1),使 AI 代理(如 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 访问 Veeam 服务器的 |
📚 包依赖
运行时依赖 (dependencies)
包 | 版本 | 用途 |
| ^1.29.0 | MCP 服务器框架(包含 stdio/SSE 传输层) |
| ^1.15.1 | Veeam REST API HTTP 客户端 |
| ^5.2.1 | SSE (HTTP) 模式 Web 服务器 |
| ^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开发模式:若要无需构建直接运行 TypeScript,请使用
npm run dev。
⚙️ 环境变量设置
在项目根目录创建 .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 模式是指 AI 客户端(Claude Desktop、Cursor 等)直接将 MCP 服务器进程作为子进程运行,并通过 标准输入输出 (stdin/stdout) 交换 JSON-RPC 消息的方式。
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分离端点)在 MCP 2024-11-05 规范中已被弃用。 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 服务器
输入 MCP 服务器 URL:
http://<your-server-ip>:3000/mcp保存后,在工具列表中确认 Veeam 工具
Docker 环境注意事项:如果 Dify 和本服务器都在 Docker 中运行,请使用 Docker 网络内的宿主机 IP 或容器名称,而不是
localhost。
在 Claude Desktop 中集成 Streamable HTTP 模式
{
"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 模式 |
执行主体 | AI 客户端作为子进程运行 | 作为独立服务器预先运行 |
通信方式 | stdin/stdout (标准输入输出) | HTTP POST/GET/DELETE |
MCP 规范 | 最新 (stdio 与规范无关) | MCP 2025-03-26 Streamable HTTP |
网络 | 仅限本地 | 支持远程访问 |
多客户端 | 1:1 (仅限一个客户端) | N:M (多个客户端同时连接) |
Dify 集成 | ❌ 不支持 | ✅ 支持 (输入 |
配置难度 | 简单 (仅需 JSON 配置) | 服务器运行 + 指定 URL |
适用场景 | 个人 PC Claude Desktop/Cursor | Dify、团队共享、远程部署 |
环境变量 |
|
|
🛠️ 支持的工具类别 (共 328 个工具)
# | 模块文件 | 主要功能 | 工具数 |
1 |
| 服务器时间、证书、服务器信息、服务查询 | 5 |
2 |
| 许可证安装/更新、套接字/实例/容量管理 | 16 |
3 |
| 标准账号 + 云 (AWS/Azure/GCP) 账号 CRUD | 23 |
4 |
| 加密密码、KMS 服务器管理 | 13 |
5 |
| 邮件/通知设置、流量规则、配置备份、部署 | 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)、VM 恢复、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 的 AI 助手发送自然语言指令:
监控
"최근 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 官方建立关联或获得其认可。
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