使用文档.md 18 KB

mcp-server使用文档

  • 使用市面上的主流mcp-server客户端,如cline、cursor等均可
  • 这里以cline为例

配置mcp-server

可以选择使用stdio模式或者是sse模式,源码中默认使用sse模式

  • sse模式:

    {
    "mcpServers": {
    "cloudpods-sse": {
      "url": "http://localhost:12001/sse"
    }
    }
    }
    
  • stdio模式:

    {
    "mcpServers": {
    "mcp-server": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "D:/ospp/cloudpods/cmd/mcp-server/mcp-server.exe",
      "args": [
        "config",
        "D:/ospp/cloudpods/pkg/mcp-server/config/mcp-server.yaml"
      ]
    }
    }
    }
    

mcp-server-tools

通过大模型和mcp-server交互

  1. 登录cloudpods前端界面
  2. 获取accessKey和secretKey

这里通过命令行和climc工具创建ak和sk

climc credential-create-aksk
  1. 在和AI对话时提供accessKey和secretKey

使用用例示例

目前mcp-server总共提供了15个功能:

资源查询:

  • cloudpods_list_images: 查询镜像列表
  • cloudpods_list_networks: 查询网络列表
  • cloudpods_list_regions:查询区域列表
  • cloudpods_list_servers:查询虚拟机实例列表
  • cloudpods_list_serverskus:查询服务器规格列表
  • cloudpods_list_storages:查询存储列表
  • cloudpods_list_vpcs:查询 VPC 列表

资源操作:

  • cloudpods_create_server:创建虚拟机实例
  • cloudpods_delete_server:删除虚拟机实例
  • cloudpods_start_server:启动虚拟机实例
  • cloudpods_stop_server:停止虚拟机实例
  • cloudpods_reset_server_password:重置虚拟机密码
  • cloudpods_get_server_monitor:获取Cloudpods虚拟机监控信息
  • cloudpods_get_server_stats:获取Cloudpods虚拟机实时统计信息

测试环境信息

  • 认证信息:
    • Access Key: 73e97540cabe4a7580fc469760df5e80
    • Secret Key: enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=
  • Cloudpods 实例: https://10.21.76.40

1. cloudpods_list_images - 查询镜像列表

用户提示词示例

  • "帮我查询云平台的镜像列表,要求显示前10条(从第1条开始),筛选条件为操作系统类型是Linux或Windows,关键词包含'centos'。"
  • "列出当前账号下可用的镜像,最多返回5条,跳过前3条(即从第4条开始),只显示类型为Ubuntu的镜像。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "limit": "10",
  "offset": "0",
  "search": "",
  "os_types": "Linux,Windows"
}

返回结果

{
  "images": [],
  "query_info": {
    "count": 0,
    "limit": 10,
    "offset": 0,
    "os_types": ["Linux", "Windows"],
    "search": "",
    "total": 0
  },
  "summary": {
    "has_more": false,
    "next_offset": 0,
    "returned_count": 0,
    "total_images": 0
  }
}

2. cloudpods_list_networks - 查询网络列表

用户提示词示例

  • "查询VPC(ID: vpc-default)下的网络列表,显示前5条(从第1条开始),筛选名称包含'生产环境'的网络。"
  • "列出当前区域默认VPC中的网络,最多返回8条,跳过前2条,关键词为'测试'。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "limit": "10",
  "offset": "0",
  "search": "",
  "vpc_id": "default"
}

返回结果

{
  "networks": [],
  "query_info": {
    "count": 0,
    "limit": 10,
    "offset": 0,
    "search": "",
    "total": 0,
    "vpc_id": "default"
  },
  "summary": {
    "has_more": false,
    "next_offset": 0,
    "returned_count": 0,
    "total_networks": 0
  }
}

3. cloudpods_list_regions - 查询区域列表

用户提示词示例

  • "查询云服务商OneCloud支持的所有区域,显示前10条(从第1条开始),筛选名称包含'华北'的区域。"
  • "列出提供商为OneCloud的区域列表,最多返回3条,跳过前0条(即从第1条开始),关键词为空。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "limit": "10",
  "offset": "0",
  "search": "",
  "provider": "OneCloud"
}

返回结果

{
  "cloudregions": [
    {
      "can_delete": false,
      "can_update": true,
      "city": "",
      "cloud_env": "",
      "country_code": "",
      "created_at": "2025-08-27T08:52:17Z",
      "description": "Default Region",
      "enabled": true,
      "environment": "",
      "external_id": "",
      "guest_count": 0,
      "guest_increment_count": 0,
      "id": "default",
      "imported_at": "2025-08-27T08:52:17Z",
      "is_emulated": false,
      "latitude": 0,
      "longitude": 0,
      "metadata": null,
      "name": "Default",
      "network_count": 0,
      "progress": 100,
      "provider": "OneCloud",
      "source": "local",
      "status": "inservice",
      "updated_at": "2025-08-27T08:52:17Z",
      "vpc_count": 1,
      "zone_count": 1
    }
  ],
  "query_info": {
    "count": 1,
    "limit": 10,
    "offset": 0,
    "provider": "OneCloud",
    "search": "",
    "total": 1
  },
  "summary": {
    "has_more": false,
    "next_offset": 1,
    "returned_count": 1,
    "total_cloudregions": 1
  }
}

4. cloudpods_list_servers - 查询虚拟机实例列表

用户提示词示例

  • "查询当前账号下状态为'运行中'的虚拟机,显示前5条(从第1条开始),筛选名称包含'web-server'的实例。"
  • "列出状态为'stopped'的虚拟机实例,最多返回8条,跳过前3条(即从第4条开始),关键词为'test'。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "limit": "5",
  "offset": "0",
  "search": "",
  "status": ""
}

返回结果

{
  "query_info": {
    "count": 0,
    "limit": 5,
    "offset": 0,
    "search": "",
    "status": "",
    "total": 0
  },
  "servers": [],
  "summary": {
    "returned_count": 0,
    "total_servers": 0
  }
}

5. cloudpods_list_serverskus - 查询服务器规格列表

用户提示词示例

  • "查询默认区域(default)下,CPU核心数为2或4,内存大小为4096MB或8192MB的x86架构服务器规格,显示前10条(从第1条开始)。"
  • "列出云区域(ID: cn-north-1)中,CPU架构为ARM,核心数8,内存16384MB的服务器规格,最多返回5条,跳过前0条。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "limit": "10",
  "offset": "0",
  "search": "",
  "cloudregion_ids": "default",
  "zone_ids": "",
  "cpu_core_count": "1,2,4,8",
  "memory_size_mb": "1024,2048,4096,8192",
  "providers": "OneCloud",
  "cpu_arch": "x86"
}

返回结果

{
  "query_info": {
    "cloudregion_ids": ["default"],
    "count": 9,
    "cpu_arch": ["x86"],
    "cpu_core_count": ["1", "2", "4", "8"],
    "limit": 10,
    "memory_size_mb": ["1024", "2048", "4096", "8192"],
    "offset": 0,
    "providers": ["OneCloud"],
    "search": "",
    "total": 9,
    "zone_ids": null
  },
  "serverskus": [
    {
      "attached_disk_count": 0,
      "attached_disk_size_gb": 0,
      "attached_disk_type": "",
      "can_delete": true,
      "can_update": true,
      "cloud_env": "",
      "cloudregion": "Default",
      "cloudregion_id": "default",
      "cpu_arch": "",
      "cpu_core_count": 8,
      "created_at": "2025-08-27T08:52:17Z",
      "data_disk_max_count": 0,
      "data_disk_types": "",
      "description": "",
      "enabled": true,
      "external_id": "",
      "gpu_attachable": true,
      "gpu_count": "",
      "gpu_max_count": 0,
      "gpu_spec": "",
      "id": "a30758a9-457c-4fe1-8939-b50a4df31ebf",
      "imported_at": "2025-08-27T08:52:17Z",
      "instance_type_category": "general_purpose",
      "instance_type_family": "g1",
      "is_emulated": false,
      "local_category": "general_purpose",
      "md5": "",
      "memory_size_mb": 8192,
      "metadata": null,
      "name": "ecs.g1.c8m8",
      "nic_max_count": 1,
      "nic_type": "",
      "os_name": "Any",
      "postpaid_status": "available",
      "prepaid_status": "available",
      "progress": 100,
      "provider": "OneCloud",
      "region": "Default",
      "region_ext_id": "",
      "region_external_id": "",
      "region_id": "default",
      "source": "local",
      "status": "init",
      "sys_disk_max_size_gb": 0,
      "sys_disk_min_size_gb": 0,
      "sys_disk_resizable": true,
      "sys_disk_type": "",
      "total_guest_count": 0,
      "update_version": 0,
      "updated_at": "2025-08-27T08:52:17Z",
      "zone": "",
      "zone_ext_id": "",
      "zone_id": ""
    }
    // ... 更多服务器规格数据(共9条记录)
  ],
  "summary": {
    "has_more": false,
    "next_offset": 9,
    "returned_count": 9,
    "total_serverskus": 9
  }
}

6. cloudpods_list_storages - 查询存储列表

用户提示词示例

  • "查询默认区域(default)下类型为'local'的存储资源,显示前10条(从第1条开始),筛选名称包含'system'的存储。"
  • "列出云区域(ID: cn-north-1)中,提供商为OneCloud,类型为'block'的存储,最多返回5条,跳过前2条(即从第3条开始)。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "limit": "10",
  "offset": "0",
  "search": "",
  "cloudregion_ids": "default",
  "zone_ids": "",
  "providers": "OneCloud",
  "storage_types": "local",
  "host_id": ""
}

返回结果

{
  "query_info": {
    "cloudregion_ids": ["default"],
    "count": 0,
    "host_id": "",
    "limit": 10,
    "offset": 0,
    "providers": ["OneCloud"],
    "search": "",
    "storage_types": ["local"],
    "total": 0,
    "zone_ids": null
  },
  "storages": [],
  "summary": {
    "has_more": false,
    "next_offset": 0,
    "returned_count": 0,
    "total_storages": 0
  }
}

7. cloudpods_list_vpcs - 查询 VPC 列表

用户提示词示例

  • "查询默认区域(default)下的VPC列表,显示前10条(从第1条开始),筛选名称包含'生产'的VPC。"
  • "列出云区域(ID: cn-north-2)中的VPC,最多返回3条,跳过前0条(即从第1条开始),关键词为空。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "limit": "10",
  "offset": "0",
  "search": "",
  "cloudregion_id": "default"
}

返回结果

{
  "query_info": {
    "cloudregion_id": "default",
    "count": 1,
    "limit": 10,
    "offset": 0,
    "search": "",
    "total": 1
  },
  "summary": {
    "has_more": false,
    "next_offset": 1,
    "returned_count": 1,
    "total_vpcs": 1
  },
  "vpcs": [
    {
      "accept_vpc_peer_count": 0,
      "account": "",
      "account_health_status": "",
      "account_id": "",
      "account_status": "",
      "brand": "OneCloud",
      "can_delete": false,
      "can_update": true,
      "cidr_block": "",
      "cidr_block6": "",
      "cloud_env": "onpremise",
      "cloudregion": "Default",
      "cloudregion_id": "default",
      "created_at": "2025-08-27T08:52:17Z",
      "description": "Default VPC",
      "direct": false,
      "dns_zone_count": 0,
      "domain_id": "default",
      "domain_src": "",
      "enabled": false,
      "environment": "",
      "external_access_mode": "eip-distgw",
      "external_id": "",
      "globalvpc": "",
      "globalvpc_id": "",
      "id": "default",
      "imported_at": "2025-08-27T08:52:17Z",
      "is_default": true,
      "is_emulated": false,
      "is_public": true,
      "manager": "",
      "manager_domain": "",
      "manager_domain_id": "",
      "manager_id": "",
      "manager_project": "",
      "manager_project_id": "",
      "metadata": null,
      "name": "Default",
      "natgateway_count": 0,
      "network_count": 0,
      "progress": 100,
      "project_domain": "Default",
      "provider": "OneCloud",
      "public_scope": "system",
      "public_src": "",
      "region": "Default",
      "region_ext_id": "",
      "region_external_id": "",
      "region_id": "default",
      "request_vpc_peer_count": 0,
      "routetable_count": 0,
      "shared_domains": null,
      "shared_projects": null,
      "source": "local",
      "status": "available",
      "updated_at": "2025-08-27T08:52:27Z",
      "wire_count": 1
    }
  ]
}

8. cloudpods_create_server - 创建虚拟机实例

用户提示词示例

  • "创建一个名为'web-server-01'的虚拟机,配置2核CPU、4GB内存,使用镜像ID'img-centos7',网络ID'net-prod',自动启动,密码设置为'SecurePass123!',备注为'生产环境Web服务器'。"
  • "创建一台虚拟机实例,名称为'db-server-01',CPU核心数4,内存8GB,使用镜像ID'img-ubuntu20',网络ID'net-db',不自动启动,密码'Admin@2025',项目ID'proj-123'。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "name": "test-vm",
  "vcpu_count": "2",
  "vmem_size": "4096",
  "image_id": "example-image-id",
  "network_id": "example-network-id",
  "count": "1",
  "auto_start": "true",
  "password": "TestPassword123",
  "billing_type": "postpaid",
  "duration": "",
  "description": "Test VM created via MCP",
  "hostname": "test-vm",
  "hypervisor": "kvm",
  "user_data": "",
  "keypair_id": "",
  "project_id": "",
  "zone_id": "",
  "region_id": "default",
  "disable_delete": "false",
  "boot_order": "cdn",
  "metadata": "{\"environment\": \"test\", \"owner\": \"admin\"}",
  "data_disks": "[{\"size\": 50, \"disk_type\": \"data\"}]",
  "secgroup_id": "",
  "secgroups": "",
  "serversku_id": ""
}

9. cloudpods_delete_server - 删除虚拟机实例

用户提示词示例

  • "删除ID为'vm-001'的虚拟机实例,不删除关联的磁盘和弹性IP。"
  • "彻底删除ID为'vm-002'的虚拟机实例(包括所有关联磁盘、快照和弹性IP)。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "server_id": "example-server-id",
  "delete_disks": "false",
  "delete_eip": "false",
  "delete_snapshots": "false",
  "override_pending_delete": "false",
  "purge": "false"
}

10. cloudpods_start_server - 启动虚拟机实例

用户提示词示例

  • "启动ID为'vm-003'的虚拟机实例,使用默认QEMU版本。"
  • "强制启动ID为'vm-004'的虚拟机实例(忽略预检查警告)。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "server_id": "example-server-id",
  "auto_prepaid": "false",
  "qemu_version": ""
}

11. cloudpods_stop_server - 停止虚拟机实例

用户提示词示例

  • "停止ID为'vm-005'的虚拟机实例(正常关机,不强制),停止计费。"
  • "强制停止ID为'vm-006'的虚拟机实例(立即断电),超时时间设置为60秒。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "server_id": "example-server-id",
  "is_force": "false",
  "stop_charging": "false",
  "timeout_secs": "30"
}

12. cloudpods_restart_server - 重启虚拟机实例

用户提示词示例

  • "重启ID为'vm-007'的虚拟机实例(正常重启,不强制)。
  • "强制重启ID为'vm-008'的虚拟机实例(立即中断进程)。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "server_id": "example-server-id",
  "is_force": "false"
}

13. cloudpods_reset_server_password - 重置虚拟机密码

用户提示词示例

  • "重置ID为'vm-009'的虚拟机密码为'NewSecurePass456!',并自动启动实例。"
  • "重置ID为'vm-010'的虚拟机(用户名为'admin')的密码为'Admin@2025New',不自动启动。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "server_id": "example-server-id",
  "password": "TestPassword123!",
  "reset_password": "true",
  "auto_start": "true",
  "username": ""
}

14.cloudpods_get_server_monitor - 获取Cloudpods虚拟机监控信息

获取Cloudpods虚拟机监控信息,包括CPU、内存、磁盘、网络等指标

用户提示词示例

  • "获取ID为'vm-011'的虚拟机在2025-08-27 00:00到2025-08-27 23:59期间的CPU使用率、内存使用率和网络流入/流出流量监控数据。"
  • "查询ID为'vm-012'的虚拟机最近1小时的CPU使用率(每5分钟采样一次)和磁盘读写速率。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "server_id": "example-server-id",
  "metrics": "cpu_usage,mem_usage,disk_usage,net_bps_rx,net_bps_tx",
  "start_time": "1724760000",
  "end_time": "1724763600"
}

15.cloudpods_get_server_stats - 获取Cloudpods虚拟机实时统计信息

获取Cloudpods虚拟机实时统计信息,包括CPU使用率、内存使用率、磁盘使用率和网络流量

用户提示词示例

  • "获取ID为'vm-013'的虚拟机当前的CPU使用率、内存使用率、磁盘总空间/已用空间和网络上下行流量统计信息。"
  • "查询ID为'vm-014'的虚拟机实时监控数据,包括CPU负载、内存空闲量、磁盘IO和网络连接数。"

MCP实际接收参数

{
  "ak": "73e97540cabe4a7580fc469760df5e80",
  "sk": "enh2ZXRYZUhWdHpjeHJENVdoQmQyUGNnbXhFS2dneUQ=",
  "server_id": "example-server-id"
}