云栈MCP服务器

一个高性能的MCP服务器,用于Apache CloudStack API集成,提供全面的工具来管理CloudStack基础设施,并与AI助手和自动化工具无缝集成。

  • by phantosmax
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 phantosmax/cloudstack-mcp-server

使用说明

CloudStack MCP服务器

用于Apache CloudStack API集成的高性能MCP(模型上下文协议)服务器。该服务器提供了通过MCP协议管理CloudStack基础设施的全面工具,实现了与AI助手和自动化工具的无缝集成。

特性

  • 🔧 完整的VM生命周期管理:部署、启动、停止、重新启动和销毁虚拟机
  • 🏗️ 基础设施发现:列出区域、模板和服务选项
  • 🔐 安全认证:使用CloudStack API凭据的HMAC-SHA1签名请求
  • ⚡ 高性能:高效的TypeScript实现,具有适当的错误处理
  • 🛡️ 类型安全:完全支持TypeScript,具有全面的接口
  • 📊 丰富的信息:详细的VM元数据,包括CPU、内存、网络和状态
  • 🖥️ 命令行接口:用于交互式CloudStack管理的直接CLI访问
  • 🤖 MCP集成:通过MCP协议与AI助手无缝集成

快速开始

安装

  1. 克隆和安装依赖关系:

    git clone <repository-url>
    cd cloudstack-mcp-server
    npm install
    
  2. 配置环境变量: 创建一个 .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
    
  3. 构建项目:

    npm run build
    
  4. 运行服务器:

    # Development mode (MCP server)
    npm run dev
    
    # Production mode (MCP server)
    npm start
    
    # CLI mode
    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:

# Install globally (optional)
npm link

# Use the CLI
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

# See all available commands
cloudstack-cli --help

有关详细的CLI文档,请参阅 CLI.md.

可用工具(45个工具)

🖥️ 虚拟机管理(7个工具)

工具 说明 参数
list_virtual_machines 列出具有可选筛选功能的虚拟机 zoneid, state, keyword
get_virtual_machine 获取详细的VM信息 id (必填)
start_virtual_machine 启动已停止的虚拟机 id (必填)
stop_virtual_machine 停止正在运行的虚拟机 id (必填), forced (可选)
reboot_virtual_machine 重新启动虚拟机 id (必填)
destroy_virtual_machine 使用适当的工作流销毁VM(处理所有状态) id (必填), confirm (必填), expunge (可选)
deploy_virtual_machine 部署新的虚拟机(自动为高级区域选择网络) serviceofferingid, templateid, zoneid (必填), name, displayname, networkids (可选)

⚙️ VM高级操作(4个工具)

工具 说明 参数
scale_virtual_machine 缩放(调整大小)虚拟机 id, serviceofferingid, confirm (必填)
migrate_virtual_machine 将VM迁移到另一台主机 virtualmachineid, confirm (必填), hostid (可选)
reset_password_virtual_machine 重置虚拟机的密码 id, confirm (必填)
change_service_offering_virtual_machine 更改VM的服务选项 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

示例用法

列出虚拟机

{
  "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"
  }
}

项目结构

├── src/
│   ├── index.ts              # MCP server entry point
│   ├── server.ts             # Main MCP server implementation
│   ├── cli.ts                # Command-line interface
│   └── cloudstack-client.ts  # CloudStack API client
├── build/                    # Compiled JavaScript output
├── CLI.md                   # CLI documentation
├── package.json             # Dependencies and scripts
├── tsconfig.json            # TypeScript configuration
└── .env                     # Environment variables (not in repo)

架构概述

  • src/index.ts:加载环境变量并启动服务器的MCP服务器入口点
  • src/server.ts:全面的MCP服务器实施,包括45个以上的工具处理程序、错误管理和CloudStack集成
  • src/cli.ts:通过与MCP服务器的JSON-RPC通信进行直接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

发展

构建命令

# Build TypeScript to JavaScript
npm run build

# Run MCP server in development mode with hot reload
npm run dev

# Run CLI in development mode
npm run dev:cli -- list-vms --help

# Run compiled MCP server
npm start

# Run compiled CLI
npm run cli -- list-vms --help

# Type checking only
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构建+

许可证

MIT-有关详细信息,请参阅许可证文件