Skip to main content
Glama
juhyungrok4237-boop

Veeam VBR v13 MCP Server

Veeam VBR v13 MCP Server

Veeam MCP TypeScript Node.js

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以上

node -vで確認

npm

v9以上

Node.jsに同梱

Veeam B&R

v13

REST APIポート 9419 へのアクセスが必要

ネットワーク

-

Veeamサーバーの 9419 ポートにTCPアクセス可能であること


📚 パッケージ依存関係

ランタイム依存関係 (dependencies)

パッケージ

バージョン

用途

@modelcontextprotocol/sdk

^1.29.0

MCPサーバーフレームワーク (stdio/SSE転送レイヤー含む)

axios

^1.15.1

Veeam REST API HTTPクライアント

express

^5.2.1

SSE(HTTP)モード用Webサーバー

dotenv

^17.4.2

.envファイルから環境変数を読み込み

zod

^4.3.6

MCP Toolパラメータスキーマ検証

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

開発モード: ビルドせずに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_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=ステートレスモード (セッションなし)


🖥️ 実行方法 - stdioモード

stdioモードは、AIクライアント(Claude Desktop、Cursorなど)がMCPサーバープロセスを直接子プロセスとして実行し、**標準入出力(stdin/stdout)**を通じてJSON-RPCメッセージを送受信する方式です。

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 分離エンドポイント) は 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/mcp

HTTPエンドポイント

Method

Path

ヘッダー

説明

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. MCPサーバーURLを入力:

    http://<your-server-ip>:3000/mcp
  3. 保存 後、ツールリストから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

MCP仕様

最新 (stdioは仕様不問)

MCP 2025-03-26 Streamable HTTP

ネットワーク

ローカル専用

リモート接続可能

マルチクライアント

1:1 (1クライアントのみ)

N:M (複数クライアント同時)

Dify連携

❌ 不可

✅ 可能 (/mcp URL入力)

設定難易度

簡単 (JSON設定のみ)

サーバー実行 + URL指定

適した状況

個人PCのClaude Desktop/Cursor

Dify、チーム共有、リモートデプロイ

環境変数

MCP_TRANSPORT_MODE=stdio (デフォルト)

MCP_TRANSPORT_MODE=streamable-http


🛠️ サポートされているツールカテゴリ (合計328 Tools)

#

モジュールファイル

主な機能

ツール数

1

service.ts

サーバー時間、証明書、サーバー情報、サービス照会

5

2

license.ts

ライセンスインストール/更新、ソケット/インスタンス/容量管理

16

3

credentials.ts

標準アカウント + クラウド(AWS/Azure/GCP)アカウントCRUD

23

4

encryption.ts

暗号化パスワード、KMSサーバー管理

13

5

generalOptions.ts

メール/通知設定、トラフィックルール、構成バックアップ、デプロイ

22

6

security.ts

セキュリティアナライザー、マルウェア検知、ユーザー/ロール、グローバル除外

35

7

inventory.ts

VMware/HyperVインベントリ、クラウド/Entra IDブラウザ

23

8

infrastructure.ts

管理サーバー、ストレージ、SOBR、プロキシ、マウントサーバー、WAN

46

9

jobs.ts

バックアップ/レプリケーション/コピー ジョブCRUD、Start/Stop/Retry

15

10

backups.ts

バックアップデータセット、バックアップオブジェクト、復元ポイント

17

11

sessions.ts

セッション/タスクセッション照会、ログ、停止

8

12

restore.ts

IR(VMware/HyperV/Azure)、VM復元、FLR、Entra ID

46

13

operations.ts

フェイルオーバー/フェイルバック、レプリカ、エージェント、自動化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と公式に提携または保証されているものではありません。

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