Veeam VBR v13 MCP Server
Veeam VBR v13 MCP Server
Veeam Backup & Replication v13の公式REST API(1.3-rev1)を活用し、AIエージェント(Claude Desktop、Cursorなど)がVeeamインフラを直接制御および監視できるようにするMCP(Model Context Protocol)サーバーです。
swagger.json基準で39個のタグ、404個のAPI Operationsのうち、意味のある328個のMCP Toolsを完全にモジュール化して実装しました。
📋 目次
🌟 主な機能
328個のMCP Tools: Veeam REST APIのほぼすべての機能を網羅
デュアル転送モード:
stdio(Claude Desktop/Cursor) +streamable-http(Dify/リモートエージェント)MCP 2025-03-26最新仕様準拠: Streamable HTTP転送方式を実装 (Dify完全互換)
スマートOAuth2認証: 自動トークン発行、期限切れ前の更新、401発生時の自動再認証
完全モジュール化: 13個のファイルに機能別に分離 → 保守および拡張が容易
Stateful/Stateless選択: セッション状態維持(デフォルト)またはステートレスモードを選択可能
📦 要件
項目 | バージョン | 備考 |
Node.js | v18以上 |
|
npm | v9以上 | Node.jsに同梱 |
Veeam B&R | v13 | REST APIポート |
ネットワーク | - | 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 Toolパラメータスキーマ検証 |
| ^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時点で非推奨(Deprecated) となりました。 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エンドポイント
Method | Path | ヘッダー | 説明 |
|
|
| メインJSON-RPCチャネル (初期化 + ツール呼び出し) |
|
|
| サーバー → クライアント SSE通知ストリーム |
|
|
| セッションの明示的終了 |
|
| - | サーバー状態およびアクティブセッション数の確認 |
Difyでの連携
Dify ツール管理 → MCPサーバーを追加 をクリック
MCPサーバーURLを入力:
http://<your-server-ip>:3000/mcp保存 後、ツールリストからVeeamツールを確認
Docker環境の注意点: Difyとこのサーバーの両方がDockerで実行されている場合、
localhostの代わりに Dockerネットワーク内のホストIP またはコンテナ名を使用してください。
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 vs Streamable HTTP 比較
項目 | stdioモード | Streamable HTTPモード |
実行主体 | AIクライアントが子プロセスとして実行 | 独立したサーバーとして事前に実行 |
通信方式 | stdin/stdout (標準入出力) | HTTP POST/GET/DELETE |
MCP仕様 | 最新 (stdioは仕様不問) | MCP 2025-03-26 Streamable HTTP |
ネットワーク | ローカル専用 | リモート接続可能 |
マルチクライアント | 1:1 (1クライアントのみ) | N:M (複数クライアント同時) |
Dify連携 | ❌ 不可 | ✅ 可能 ( |
設定難易度 | 簡単 (JSON設定のみ) | サーバー実行 + URL指定 |
適した状況 | 個人PCのClaude Desktop/Cursor | Dify、チーム共有、リモートデプロイ |
環境変数 |
|
|
🛠️ サポートされているツールカテゴリ (合計328 Tools)
# | モジュールファイル | 主な機能 | ツール数 |
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、Start/Stop/Retry | 15 |
10 |
| バックアップデータセット、バックアップオブジェクト、復元ポイント | 17 |
11 |
| セッション/タスクセッション照会、ログ、停止 | 8 |
12 |
| IR(VMware/HyperV/Azure)、VM復元、FLR、Entra ID | 46 |
13 |
| フェイルオーバー/フェイルバック、レプリカ、エージェント、自動化Import/Export | 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