🚀 CloudStack MCP Server
このサーバーは、MCP (Model Context Protocol) を介してApache CloudStack APIとの統合を実現し、AIアシスタントや自動化ツールとのシームレスな連携を可能にする高性能なMCPサーバーです。CloudStackインフラストラクチャの管理に必要な包括的なツールを提供します。
✨ 主な機能
- 🔧 完全なVMライフサイクル管理:仮想マシンのデプロイ、起動、停止、再起動、破棄を行うことができます。
- 🏗️ インフラストラクチャの探索:ゾーン、テンプレート、サービスオファリングを一覧表示できます。
- 🔐 安全な認証:CloudStack APIの資格情報を使用したHMAC - SHA1署名付きのリクエストをサポートします。
- ⚡ 高性能:適切なエラーハンドリングを備えた効率的なTypeScript実装です。
- 🛡️ 型安全性:包括的なインターフェースを持つ完全なTypeScriptサポートがあります。
- 📊 豊富な情報:CPU、メモリ、ネットワーク、ステータスを含む詳細なVMメタデータを提供します。
- 🖥️ コマンドラインインターフェース:CloudStackを対話的に管理するための直接的なCLIアクセスが可能です。
- 🤖 MCP統合:MCPプロトコルを介してAIアシスタントとシームレスに統合できます。
🚀 クイックスタート
📦 インストール
-
リポジトリをクローンし、依存関係をインストールする:
git clone <repository-url>
cd cloudstack-mcp-server
npm install
-
環境変数を設定する:
プロジェクトのルートに.envファイルを作成します。
CLOUDSTACK_API_URL=https://your-cloudstack-server/client/api
CLOUDSTACK_API_KEY=your-api-key
CLOUDSTACK_SECRET_KEY=your-secret-key
CLOUDSTACK_TIMEOUT=30000
-
プロジェクトをビルドする:
npm run build
-
サーバーを起動する:
npm run dev
npm start
npm run cli -- --help
MCPクライアントの統合
MCPクライアントの設定 (例: Claude Desktop) に追加します。
{
"mcpServers": {
"cloudstack": {
"command": "node",
"args": ["/path/to/cloudstack-mcp-server/build/index.js"],
"env": {
"CLOUDSTACK_API_URL": "https://your-cloudstack-server/client/api",
"CLOUDSTACK_API_KEY": "your-api-key",
"CLOUDSTACK_SECRET_KEY": "your-secret-key"
}
}
}
}
コマンドラインインターフェース
直接コマンドラインからアクセスするには、組み込みのCLIを使用します。
npm link
cloudstack-cli list-vms --state Running
cloudstack-cli deploy-vm --service-offering-id 1 --template-id 2 --zone-id 3
cloudstack-cli get-vm --id 12345-67890-abcdef
cloudstack-cli --help
詳細なCLIドキュメントはCLI.mdを参照してください。
💻 使用例
仮想マシンの一覧表示
{
"tool": "list_virtual_machines",
"arguments": {
"state": "Running",
"zoneid": "1746ef10-8fa6-40c1-9c82-c3956bf75db8"
}
}
新しい仮想マシンのデプロイ
{
"tool": "deploy_virtual_machine",
"arguments": {
"serviceofferingid": "c6f99499-7f59-4138-9427-a09db13af2bc",
"templateid": "7d4a7bb5-2409-4c8f-8537-6bbdc8a4e5c1",
"zoneid": "1746ef10-8fa6-40c1-9c82-c3956bf75db8",
"name": "my-new-vm",
"displayname": "My New VM"
}
}
📚 ドキュメント
利用可能なツール (45個のツール)
🖥️ 仮想マシン管理 (7個のツール)
| ツール |
説明 |
パラメータ |
list_virtual_machines |
オプションでフィルタリングした仮想マシンの一覧を表示 |
zoneid, state, keyword |
get_virtual_machine |
詳細な仮想マシン情報を取得 |
id (必須) |
start_virtual_machine |
停止中の仮想マシンを起動 |
id (必須) |
stop_virtual_machine |
起動中の仮想マシンを停止 |
id (必須), forced (オプション) |
reboot_virtual_machine |
仮想マシンを再起動 |
id (必須) |
destroy_virtual_machine |
適切なワークフローで仮想マシンを破棄 (すべての状態を処理) |
id (必須), confirm (必須), expunge (オプション) |
deploy_virtual_machine |
新しい仮想マシンをデプロイ (Advancedゾーンの場合は自動的にネットワークを選択) |
serviceofferingid, templateid, zoneid (必須), name, displayname, networkids (オプション) |
⚙️ VMの高度な操作 (4個のツール)
| ツール |
説明 |
パラメータ |
scale_virtual_machine |
仮想マシンをスケール (リサイズ) |
id, serviceofferingid, confirm (必須) |
migrate_virtual_machine |
仮想マシンを別のホストに移行 |
virtualmachineid, confirm (必須), hostid (オプション) |
reset_password_virtual_machine |
仮想マシンのパスワードをリセット |
id, confirm (必須) |
change_service_offering_virtual_machine |
仮想マシンのサービスオファリングを変更 |
id, serviceofferingid (必須) |
💾 ストレージ管理 (7個のツール)
| ツール |
説明 |
パラメータ |
list_volumes |
ストレージボリュームの一覧を表示 |
virtualmachineid, type, zoneid |
create_volume |
新しいストレージボリュームを作成 |
name, zoneid (必須), diskofferingid, size |
attach_volume |
仮想マシンにボリュームをアタッチ |
id, virtualmachineid (必須) |
detach_volume |
仮想マシンからボリュームをデタッチ |
id, confirm (必須) |
resize_volume |
ストレージボリュームをリサイズ |
id, size, confirm (必須) |
create_snapshot |
ボリュームのスナップショットを作成 |
volumeid (必須), name |
list_snapshots |
ボリュームのスナップショットの一覧を表示 |
volumeid, snapshottype |
🌐 ネットワーキング (7個のツール)
| ツール |
説明 |
パラメータ |
list_networks |
ネットワークの一覧を表示 |
zoneid, type |
create_network |
新しいネットワークを作成 |
name, networkofferingid, zoneid (必須), displaytext |
list_public_ip_addresses |
パブリックIPアドレスの一覧を表示 |
zoneid, associatednetworkid |
associate_ip_address |
新しいパブリックIPアドレスを取得 |
zoneid (必須), networkid |
enable_static_nat |
IPアドレスに静的NATを有効化 |
ipaddressid, virtualmachineid (必須) |
create_firewall_rule |
ファイアウォールルールを作成 |
ipaddressid, protocol (必須), startport, endport, cidrlist |
list_load_balancer_rules |
ロードバランサールールの一覧を表示 |
publicipid, zoneid |
📊 モニタリングと分析 (5個のツール)
| ツール |
説明 |
パラメータ |
list_virtual_machine_metrics |
仮想マシンのパフォーマンスメトリクスを取得 |
ids |
list_events |
CloudStackのイベントの一覧を表示 |
type, level, startdate, pagesize |
list_alerts |
システムのアラートの一覧を表示 |
type |
list_capacity |
システムの容量情報の一覧を表示 |
zoneid, type |
list_async_jobs |
非同期ジョブの一覧を表示 |
jobstatus, jobresulttype |
👥 アカウントとユーザー管理 (4個のツール)
| ツール |
説明 |
パラメータ |
list_accounts |
CloudStackのアカウントの一覧を表示 |
domainid, accounttype |
list_users |
ユーザーの一覧を表示 |
accountid, username |
list_domains |
CloudStackのドメインの一覧を表示 |
name |
list_usage_records |
リソースの使用記録の一覧を表示 |
startdate, enddate (必須), type |
🏗️ インフラストラクチャの探索 (2個のツール)
| ツール |
説明 |
パラメータ |
list_zones |
利用可能なすべてのゾーンの一覧を表示 |
available (オプション) |
list_templates |
利用可能なVMテンプレートの一覧を表示 |
templatefilter, zoneid (オプション) |
🔧 システム管理 (5個のツール)
| ツール |
説明 |
パラメータ |
list_hosts |
物理ホストの一覧を表示 |
zoneid, type, state |
list_clusters |
ホストクラスターの一覧を表示 |
zoneid |
list_storage_pools |
ストレージプールの一覧を表示 |
zoneid, clusterid |
list_system_vms |
システム仮想マシンの一覧を表示 |
zoneid, systemvmtype |
list_service_offerings |
サービスオファリングの一覧を表示 |
name, domainid |
🔐 セキュリティとコンプライアンス (4個のツール)
| ツール |
説明 |
パラメータ |
list_ssh_key_pairs |
SSHキーペアの一覧を表示 |
name |
create_ssh_key_pair |
新しいSSHキーペアを作成 |
name (必須) |
list_security_groups |
セキュリティグループの一覧を表示 |
securitygroupname |
create_security_group_rule |
セキュリティグループのイングレスルールを作成 |
securitygroupid, protocol (必須), startport, endport, cidrlist |
プロジェクト構造
├── src/
│ ├── index.ts # MCPサーバーのエントリーポイント
│ ├── server.ts # メインのMCPサーバー実装
│ ├── cli.ts # コマンドラインインターフェース
│ └── cloudstack-client.ts # CloudStack APIクライアント
├── build/ # コンパイルされたJavaScript出力
├── CLI.md # CLIドキュメント
├── package.json # 依存関係とスクリプト
├── tsconfig.json # TypeScriptの設定
└── .env # 環境変数 (リポジトリに含まれない)
アーキテクチャの概要
src/index.ts:環境変数を読み込み、サーバーを起動するMCPサーバーのエントリーポイントです。
src/server.ts:45以上のツールハンドラー、エラー管理、およびCloudStack統合を備えた包括的なMCPサーバーの実装です。
src/cli.ts:MCPサーバーとのJSON - RPC通信を介してCloudStackを直接管理するためのコマンドラインインターフェースです。
src/cloudstack-client.ts:HMAC - SHA1認証、型安全なインターフェース、および包括的なエラーハンドリングを備えた堅牢なCloudStack APIクライアントです。
設定
必須の環境変数
| 変数 |
説明 |
例 |
CLOUDSTACK_API_URL |
CloudStack APIのエンドポイント |
http://cloudstack.example.com:8080/client/api |
CLOUDSTACK_API_KEY |
CloudStack APIキー |
your-32-character-api-key |
CLOUDSTACK_SECRET_KEY |
CloudStackシークレットキー |
your-secret-key |
オプションの環境変数
| 変数 |
説明 |
デフォルト |
CLOUDSTACK_TIMEOUT |
リクエストのタイムアウト (ミリ秒) |
30000 |
開発
ビルドコマンド
npm run build
npm run dev
npm run dev:cli -- list-vms --help
npm start
npm run cli -- list-vms --help
npx tsc --noEmit
コード品質
- TypeScript:厳格モードを有効にした完全な型安全性があります。
- エラーハンドリング:MCPエラータイプを用いた包括的なエラーハンドリングが行われます。
- Async/Await:全体で最新の非同期パターンが使用されています。
- モジュール設計:関心事の明確な分離が行われています。
セキュリティ
- HMAC - SHA1署名:すべてのAPIリクエストは暗号学的に署名されます。
- 資格情報の保存なし:資格情報は環境変数からのみ読み取られます。
- リクエストの検証:すべてのツールパラメータに対する入力検証が行われます。
- エラーのサニタイズ:エラーメッセージから機密情報がフィルタリングされます。
互換性
- CloudStack:CloudStack 4.11以上と互換性があります。
- Node.js:Node.js 18以上が必要です。
- MCPプロトコル:MCP SDK 0.5.0以上を実装しています。
- TypeScript:TypeScript 5.0以上で構築されています。
📄 ライセンス
MIT - 詳細はLICENSEファイルを参照してください。