Provides comprehensive management of DigitalOcean droplets, including power management (start, stop, reboot), status monitoring, operation history tracking, batch management, resource usage metrics, and deletion protection mechanisms.
Utilizes environment variables for configuration management, allowing secure storage of API tokens and feature flags through a .env file.
Supports management of Ubuntu-based droplets, with specific handling for Ubuntu operating system distributions on DigitalOcean.
Cloud Manage MCP Server
这是一个基于 MCP (Model Context Protocol) 的云管理服务器,支持通过公网 IP 地址获取云服务器信息。
功能特性
- 支持通过公网 IP 地址识别云服务提供商
- 使用 pydo SDK 获取 DigitalOcean droplet 详细信息
- Droplet 电源管理: 开机、关机、重启、优雅关机
- 状态监控: 获取 droplet 当前状态和资源使用情况
- 操作历史: 查看 droplet 操作历史记录
- 批量管理: 列出所有 droplets,按名称查找
- 监控数据: 获取 CPU、内存、磁盘、网络使用率(需启用监控)
- 删除保护: 多重安全机制防止意外删除重要服务器
- 支持 AWS(待实现)
安全特性
🛡️ 删除保护机制
为了防止意外删除重要的 droplet,本系统实现了严格的五层安全保护:
保护层级
- 全局开关保护: 默认禁用所有删除操作
- 确认码保护: 需要特定确认码才能尝试删除
- 状态检查保护: 禁止删除运行中的 droplet
- 标签保护: 自动识别并保护重要 droplet
- 最终安全检查: 即使通过前面检查,实际删除仍被禁用
保护标签
系统会自动保护带有以下标签的 droplet:
production
/prod
important
critical
backup
配置方法
⚠️ 重要提醒: 即使启用删除功能,所有实际删除操作仍会被最终安全检查阻止。建议始终通过 DigitalOcean 控制面板手动删除 droplet。
可用的 MCP 工具函数
基础查询功能
get_dg_info(ipv4_address: str)
根据公网 IP 地址获取对应的 DigitalOcean droplet 信息。
参数:
ipv4_address
(str): 要查询的公网 IP 地址
list_droplets()
列出账户下所有的 DigitalOcean droplets。
find_droplet_by_name(name: str)
根据名称查找 DigitalOcean droplet(支持模糊匹配)。
参数:
name
(str): droplet 名称或部分名称
get_droplet_status(droplet_id: int)
获取指定 droplet 的当前状态和详细信息。
参数:
droplet_id
(int): droplet ID
电源管理功能
power_on_droplet(droplet_id: int)
开启指定的 droplet。
power_off_droplet(droplet_id: int)
强制关闭指定的 droplet(类似拔电源)。
shutdown_droplet(droplet_id: int)
优雅关闭指定的 droplet(类似系统关机命令)。
reboot_droplet(droplet_id: int)
重启指定的 droplet。
参数:
droplet_id
(int): 要操作的 droplet ID
监控和历史功能
get_droplet_monitoring(droplet_id: int)
获取 droplet 的监控数据,包括 CPU、内存、磁盘、网络使用率。
注意: 需要在 droplet 上启用监控功能。
get_droplet_actions(droplet_id: int)
获取指定 droplet 的操作历史记录。
get_action_status(action_id: int)
查询特定操作的状态(在执行电源操作后可用于跟踪进度)。
参数:
droplet_id
(int): droplet IDaction_id
(int): 操作 ID
删除保护功能
delete_droplet_with_protection(droplet_id: int, confirmation_code: str = "")
删除 DigitalOcean droplet(带严格安全保护)。
注意: 此功能具有多重安全限制,实际上被设计为阻止删除操作。
参数:
droplet_id
(int): 要删除的 droplet IDconfirmation_code
(str): 确认码(必须为 "CONFIRM_DELETE_DROPLET")
get_droplet_deletion_policy()
获取当前的删除策略和安全配置信息。
check_droplet_deletion_safety(droplet_id: int)
检查指定 droplet 的删除安全性(不实际删除)。
参数:
droplet_id
(int): 要检查的 droplet ID
使用示例
基本操作示例
删除安全性检查示例
监控数据获取示例
返回值说明
成功响应示例
删除安全性检查
删除策略信息
droplet 操作成功
droplet 状态查询
监控数据响应
错误响应示例
删除操作被阻止
一般错误
测试功能
项目包含一个完整的测试脚本 test_dg_info.py
,可以测试所有功能:
测试脚本包含以下测试模块:
- 基本功能测试: 列出 droplets、API 连接测试
- Droplet 操作测试: 状态查询、电源管理、操作历史
- 监控功能测试: 监控数据获取和可用性检查
- 删除保护测试: 安全策略检查、删除安全性评估
- IP 查找测试: 根据 IP 地址查找对应的 droplet
注意事项
安全相关
- 删除保护:
- 默认禁用所有删除操作以防止意外删除
- 多重安全检查机制保护重要服务器
- 即使配置允许删除,实际删除仍被最终安全检查阻止
- 强烈建议通过 DigitalOcean 控制面板手动删除
- API 权限: 确保您的 DigitalOcean API token 具有适当的权限:
- 读取 droplets 的权限
- 执行 droplet 操作的权限(开关机、重启等)
- 访问监控数据的权限
- 监控功能限制:
- 需要在 droplet 上启用监控功能(在创建时或后续在控制面板中启用)
- 监控数据可能需要几分钟才能显示
- 免费 monitoring 功能每 5 分钟收集一次数据点
- API 调用限制:
- DigitalOcean API 有频率限制(每小时 5,000 次请求)
- 电源操作是异步的,需要查询操作状态来确认完成
- 安全考虑:
- 请妥善保管您的 API token
- 建议使用环境变量存储敏感信息
- 在生产环境中限制 API token 的权限范围
- 避免在自动化脚本中启用删除功能
操作状态说明
droplet 可能的状态包括:
new
: 新创建,正在初始化active
: 运行中off
: 已关机archive
: 已归档(长期关闭)
操作状态包括:
in-progress
: 执行中completed
: 已完成errored
: 执行失败
删除安全等级:
BLOCKED
: 删除被阻止(有严重安全问题)WARNING
: 需要谨慎考虑(有潜在风险)CAUTION
: 可以删除但需确认(仍有限制)
最佳实践
- 安全操作:
- 避免启用删除功能,始终通过控制面板手动删除
- 定期使用
check_droplet_deletion_safety()
评估服务器安全性 - 为重要服务器添加保护标签
- 批量操作: 使用
list_droplets()
获取所有 droplets,然后根据需要过滤和操作 - 状态检查: 在执行电源操作前,先检查 droplet 当前状态
- 操作跟踪: 保存操作 ID,用于后续状态查询
- 错误处理: 始终检查返回结果中的
error
字段 - 监控启用: 在创建 droplet 时启用监控功能,以便后续获取使用数据
依赖安装
环境变量配置
创建 .env
文件并设置以下环境变量:
使用方法
启动服务器
API 说明
pydo SDK 集成
本项目使用官方的 pydo SDK 来与 DigitalOcean API 交互:
- 安装 pydo:
pip install pydo
- 配置 API Token: 设置
DIGITALOCEAN_TOKEN
环境变量 - 调用 API: 使用
client.droplets.list()
获取所有 droplets
工作原理
- 初始化 pydo 客户端,使用配置的 API token
- 调用
client.droplets.list()
获取账户下所有 droplets - 遍历每个 droplet 的网络配置
- 查找匹配指定公网 IP 地址的 droplet
- 返回找到的 droplet 的详细信息
错误处理
- 自动检测 pydo SDK 是否已安装
- 验证 DIGITALOCEAN_TOKEN 环境变量是否配置
- 捕获 API 调用异常并返回友好的错误信息
- 提供详细的调试信息
注意事项
- 确保您的 DigitalOcean API token 具有读取 droplets 的权限
- API 有调用频率限制,请合理使用
- 该功能会列出账户下所有 droplets,请确保 token 的安全性
扩展功能
- 支持按标签过滤 droplets
- 支持分页查询大量 droplets
- 缓存查询结果以提高性能
- 支持其他云服务提供商(AWS、GCP 等)
This server cannot be installed
A Model Context Protocol server for managing cloud servers, particularly DigitalOcean droplets, allowing users to identify providers via IP addresses and perform operations like power management, status monitoring, and resource usage tracking.
Related MCP Servers
- -securityFlicense-qualityA Model Context Protocol server that enables Claude and other LLMs to interact with Notion workspaces, providing capabilities like searching, retrieving, creating and updating pages, as well as managing databases.Last updated -2752TypeScript
- -securityFlicense-qualityA Model Context Protocol server that connects to Google Cloud services, allowing users to query logs, interact with Spanner databases, and analyze Cloud Monitoring metrics through natural language interaction.Last updated -162TypeScript
- -securityFlicense-qualityA Model Context Protocol server that provides tools for interacting with databases, including PostgreSQL, DuckDB, and Google Cloud Storage Parquet files.Last updated -2TypeScript
- AsecurityAlicenseAqualityA Model Context Protocol server that exposes Cloudinary Upload & Admin API methods as tools by AI assistants. This integration allows AI systems to trigger and interact with your Cloudinary cloud.Last updated -5506JavaScriptMIT License