# 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).