Skip to main content
Glama
truecallerabreham

mcp-server-digitalocean

README.md
<!-- mcp-name: io.github.truecallerabreham/mcp-server-digitalocean -->

# DigitalOcean MCP Server

[![PyPI version](https://img.shields.io/pypi/v/mcp-server-digitalocean.svg)](https://pypi.org/project/mcp-server-digitalocean/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

A [Model Context Protocol](https://modelcontextprotocol.io) server for [DigitalOcean](https://www.digitalocean.com/) cloud infrastructure. Manage Droplets, databases, domains, and more — all through your AI assistant.

## What Can You Do With It?

- **Manage Droplets** — list, create, get details, and delete Droplets
- **Query Databases** — list and inspect managed database clusters
- **Handle Domains** — list, create, and delete domain records
- **Explore Infrastructure** — browse available regions and Droplet sizes with pricing
- **Check Account** — view account info and usage limits

## Table of Contents

- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Setup](#setup)
  - [Generate Your API Token](#1-generate-your-api-token)
  - [Add the Server to Your MCP Client](#2-add-the-server-to-your-mcp-client)
    - [Claude Desktop](#claude-desktop)
    - [Cursor](#cursor)
    - [Windsurf](#windsurf)
    - [Claude Code](#claude-code)
- [Available Tools](#available-tools)
- [Example Prompts](#example-prompts)
- [Development](#development)
- [Troubleshooting](#troubleshooting)
- [Contributing](#contributing)
- [License](#license)

---

## Prerequisites

- **Python** >= 3.10
- A [DigitalOcean Personal Access Token](https://cloud.digitalocean.com/account/api/tokens)
- A supported MCP client:
  - [Claude Desktop](https://claude.ai/download)
  - [Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview)
  - [Cursor](https://docs.cursor.com/context/model-context-protocol)
  - [Windsurf](https://windsurf.com)

---

## Installation

### Using uv (recommended)

```bash
uv tool install mcp-server-digitalocean
```

### Using pip

```bash
pip install mcp-server-digitalocean
```

---

## Setup

### 1. Generate Your API Token

Go to [DigitalOcean API Tokens](https://cloud.digitalocean.com/account/api/tokens) and create a new **Personal Access Token**.

### 2. Add the Server to Your MCP Client

Add this JSON snippet to your client's MCP config file:

```json
{
  "mcpServers": {
    "digitalocean": {
      "command": "uvx",
      "args": ["mcp-server-digitalocean"],
      "env": {
        "DIGITALOCEAN_TOKEN": "YOUR_DO_TOKEN"
      }
    }
  }
}
```

Then follow the instructions for your specific client:

### Claude Desktop

1. Go to **Settings > Developer > Edit Config**
2. Add the snippet above to `claude_desktop_config.json`
3. Replace `YOUR_DO_TOKEN` with your token
4. Save and **restart Claude Desktop**
5. You'll see "digitalocean" listed as an available server

### Cursor

1. Go to **Settings > Cursor Settings > MCP > Add a new global MCP server**
2. Cursor will open `~/.cursor/mcp.json`
3. Add the snippet above to this JSON file
4. Replace `YOUR_DO_TOKEN` with your token
5. Save and return to MCP Settings

### Windsurf

1. Go to **Settings > Windsurf Settings > Cascade > MCP > Add Server > Add custom server**
2. Windsurf will open `~/.codeium/windsurf/mcp_config.json`
3. Add the snippet above to this JSON file
4. Replace `YOUR_DO_TOKEN` with your token
5. Save and return to MCP Settings

### Claude Code

1. Run in your terminal:

```bash
claude mcp add digitalocean -- uvx mcp-server-digitalocean
```

2. Set the environment variable:

```bash
export DIGITALOCEAN_TOKEN="your-token-here"
```

---

## Available Tools

| Category | Tools |
|----------|-------|
| **Account** | `get_account_info` |
| **Droplets** | `list_droplets`, `get_droplet`, `create_droplet`, `delete_droplet` |
| **Databases** | `list_database_clusters`, `get_database_cluster` |
| **Domains** | `list_domains`, `create_domain`, `delete_domain` |
| **Infrastructure** | `list_regions`, `list_sizes` |

---

## Example Prompts

Once configured, try asking your assistant:

```
"List all my Droplets"
"Create a new 1GB Droplet in NYC1 running Ubuntu 24.04"
"Show me all available regions"
"List my database clusters"
"Delete droplet 42"
"What Droplet sizes are available and how much do they cost?"
```

---

## Development

```bash
# Clone the repo
git clone https://github.com/truecallerabreham/mcp-server-digitalocean.git
cd mcp-server-digitalocean

# Install dependencies
uv sync

# Run tests
uv run pytest

# Run linter
uv run ruff check src/ tests/

# Type check
uv run pyright
```

---

## Troubleshooting

### The server doesn't appear in your client?

- Make sure your JSON config is saved and valid (no trailing commas)
- Restart your MCP client (Claude, Cursor, Windsurf)
- Check that `uvx` is in your PATH

### Token not working?

- Verify the token has the correct scopes
- Try generating a fresh one at [DigitalOcean API Tokens](https://cloud.digitalocean.com/account/api/tokens)

### Still having issues?

Test the server directly:

```bash
DIGITALOCEAN_TOKEN="your-token" uvx mcp-server-digitalocean
```

---

## Contributing

Contributions are welcome! Bug reports, new features, and docs improvements are all appreciated.

1. Fork this repo
2. Create a branch (`git checkout -b feature/my-feature`)
3. Make your changes
4. Run tests (`uv run pytest`)
5. Open a PR

---

## License

This project is licensed under the [MIT License](LICENSE).

TDQS

A3.8/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct resource and action: create, delete, get, list for droplets and domains; get/list for databases; list for regions and sizes; and get_account for account info. No overlap.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., create_droplet, list_domains). No mixing of conventions.

Tool Count5/5

12 tools is well-scoped for a DigitalOcean API server, covering key resources without being excessive or too few.

Completeness3/5

Basic CRUD for droplets and domains is covered, but missing update operations, database creation/deletion, and droplet actions (e.g., power on/off). Notable gaps exist.

Maintenance

ActivityStale
ResponsivenessNo issues