list_digitalocean_droplets
Retrieve a list of all DigitalOcean droplets to monitor status, manage resources, and perform operations on cloud servers.
Instructions
列出所有DigitalOcean Droplets
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- main.py:460-460 (registration)Registration of the list_digitalocean_droplets tool using @mcp.tool() decorator@mcp.tool()
- main.py:460-466 (handler)Handler function for the MCP tool 'list_digitalocean_droplets', which delegates to the DigitalOcean provider's list_droplets method.@mcp.tool() def list_digitalocean_droplets() -> Dict: """ 列出所有DigitalOcean Droplets """ return digitalocean_provider.list_droplets()
- Core helper method in DigitalOceanProvider class that lists all droplets using the pydo Client API, formats them, and handles errors.def list_droplets(self) -> Dict: """ 列出所有Droplets Returns: Dict: Droplets列表或错误信息 """ if not self.available: return { 'error': f'DigitalOcean服务不可用: {getattr(self, "error", "未知错误")}', 'provider': 'digitalocean' } try: response = self.client.droplets.list() droplets = response.get("droplets", []) droplet_list = [] for droplet in droplets: droplet_info = self._format_droplet_summary(droplet) droplet_list.append(droplet_info) return { 'provider': 'digitalocean', 'total_droplets': len(droplet_list), 'droplets': droplet_list } except Exception as e: return { 'error': f'获取Droplets列表时发生错误: {str(e)}', 'provider': 'digitalocean' }
- Supporting helper function that formats individual droplet data into a summary for the list output.def _format_droplet_summary(self, droplet: Dict) -> Dict: """格式化Droplet摘要信息""" networks = droplet.get("networks", {}) public_ip = None private_ip = None for net in networks.get("v4", []): if net.get("type") == "public": public_ip = net.get("ip_address") elif net.get("type") == "private": private_ip = net.get("ip_address") return { 'id': droplet.get("id"), 'name': droplet.get("name"), 'status': droplet.get("status"), 'size_slug': droplet.get("size_slug"), 'memory': droplet.get("memory"), 'vcpus': droplet.get("vcpus"), 'disk': droplet.get("disk"), 'region': droplet.get("region", {}).get("name"), 'public_ipv4': public_ip, 'private_ipv4': private_ip, 'created_at': droplet.get("created_at"), 'tags': droplet.get("tags", []) }