🚀 CloudStack MCP 服務器
CloudStack MCP 服務器是一個高性能的 MCP(模型上下文協議)服務器,專為 Apache CloudStack API 集成而設計。該服務器提供了一套全面的工具,可通過 MCP 協議管理 CloudStack 基礎設施,實現與 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。
✨ 主要特性
- 🔧 完整的虛擬機生命週期管理:可部署、啟動、停止、重啟和銷燬虛擬機。
- 🏗️ 基礎設施發現:可列出區域、模板和服務套餐。
- 🔐 安全認證:使用 CloudStack API 憑證對 HMAC - SHA1 簽名的請求進行認證。
- ⚡ 高性能:採用高效的 TypeScript 實現,並具備完善的錯誤處理機制。
- 🛡️ 類型安全:全面支持 TypeScript,擁有完善的接口。
- 📊 豐富信息:提供詳細的虛擬機元數據,包括 CPU、內存、網絡和狀態等。
- 🖥️ 命令行界面:可直接通過 CLI 對 CloudStack 進行交互式管理。
- 🤖 MCP 集成:通過 MCP 協議與 AI 助手實現無縫集成。
📦 安裝指南
安裝步驟已在快速開始部分的“安裝”小節中詳細介紹,此處不再贅述。
💻 使用示例
基礎用法
列出虛擬機
{
"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 |
部署新的虛擬機(自動為高級區域選擇網絡) |
serviceofferingid, templateid, zoneid(必需), name, displayname, networkids(可選) |
⚙️ 虛擬機高級操作(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 |
列出可用的虛擬機模板 |
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:全面的 MCP 服務器實現,包含 45 個以上的工具處理程序、錯誤管理和 CloudStack 集成。
src/cli.ts:命令行界面,通過 JSON - RPC 與 MCP 服務器通信,實現對 CloudStack 的直接管理。
src/cloudstack-client.ts:強大的 CloudStack API 客戶端,具備 HMAC - SHA1 認證、類型安全的接口和完善的錯誤處理。
配置
必需的環境變量
| 變量 |
描述 |
示例 |
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 錯誤類型。
- 異步/等待:全程採用現代異步模式。
- 模塊化設計:清晰的關注點分離。
安全
- HMAC - SHA1 簽名:所有 API 請求均經過加密簽名處理。
- 無憑證存儲:僅從環境變量中讀取憑證。
- 請求驗證:對所有工具參數進行輸入驗證。
- 錯誤清理:從錯誤消息中過濾敏感信息。
兼容性
- CloudStack:與 CloudStack 4.11 及以上版本兼容。
- Node.js:需要 Node.js 18 及以上版本。
- MCP 協議:實現了 MCP SDK 0.5.0 及以上版本。
- TypeScript:基於 TypeScript 5.0 及以上版本構建。
🔧 技術細節
本項目採用高效的 TypeScript 實現,具備完善的錯誤處理機制和類型安全保障。通過 HMAC - SHA1 簽名對 API 請求進行安全認證,確保通信的安全性。在架構上,各個模塊職責明確,如 src/index.ts 作為入口點負責啟動服務器,src/server.ts 實現核心的 MCP 服務器功能,src/cli.ts 提供命令行操作的接口,src/cloudstack-client.ts 則負責與 CloudStack API 進行交互。
📄 許可證
本項目採用 MIT 許可證,詳細信息請參閱 LICENSE 文件。