MCP DigitalOcean Integration

Manage DigitalOcean droplets, apps, databases, Kubernetes, networking and storage from an MCP client

Official · DigitalOcean Labs Go Remote (hosted) · Streamable HTTPLocal · stdio Cloud platformsDevOps and monitoringDatabases

65 popularity score ★ 138 ↓ 4.7k/wk

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude Codeterminal
claude mcp add --transport http digitalocean-apps https://apps.mcp.digitalocean.com/mcp
Claude (desktop and web)Settings → Connectors → Add custom connector
https://apps.mcp.digitalocean.com/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "digitalocean-integration": {
      "url": "https://apps.mcp.digitalocean.com/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "digitalocean-integration": {
      "type": "http",
      "url": "https://apps.mcp.digitalocean.com/mcp"
    }
  }
}
Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs DIGITALOCEAN_API_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add digitalocean-integration -e DIGITALOCEAN_API_TOKEN=<DIGITALOCEAN_API_TOKEN> -- npx @digitalocean/mcp --services apps
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "digitalocean-integration": {
      "command": "npx",
      "args": [
        "@digitalocean/mcp",
        "--services",
        "apps"
      ],
      "env": {
        "DIGITALOCEAN_API_TOKEN": "<DIGITALOCEAN_API_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "digitalocean-integration": {
      "command": "npx",
      "args": [
        "@digitalocean/mcp",
        "--services",
        "apps"
      ],
      "env": {
        "DIGITALOCEAN_API_TOKEN": "<DIGITALOCEAN_API_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "digitalocean-integration": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "@digitalocean/mcp",
        "--services",
        "apps"
      ],
      "env": {
        "DIGITALOCEAN_API_TOKEN": "<DIGITALOCEAN_API_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.digitalocean-integration]
command = "npx"
args = ["@digitalocean/mcp", "--services", "apps"]

[mcp_servers.digitalocean-integration.env]
DIGITALOCEAN_API_TOKEN = "<DIGITALOCEAN_API_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e DIGITALOCEAN_API_TOKEN=<DIGITALOCEAN_API_TOKEN> digitalocean-integration npx -- @digitalocean/mcp --services apps

Settings 8

DIGITALOCEAN_API_TOKEN secret Required: DigitalOcean personal access token. The stdio server exits without it.
SERVICES Optional: Comma-separated services to load, same as --services. All services load when empty.
DIGITALOCEAN_API_ENDPOINT Optional: API base URL. Default https://api.digitalocean.com.
LOG_LEVEL Optional: debug, info, warn or error. Default info.
TRANSPORT Optional: stdio or http. Default stdio.
Set together: http
BIND_ADDR Optional: Listen address when TRANSPORT is http. Default 127.0.0.1:8080.
ALLOW_ANONYMOUS Optional: Drops the bearer check and OAuth metadata on http transport. Needs SERVICES=docs alone and does nothing on stdio. Default false. For docs.
MCP_RESOURCE_URL Optional: Public base URL named in the OAuth resource metadata on http transport, taken from each request when unset.

What it does

This is DigitalOcean's own MCP server for its cloud. It calls the DigitalOcean public API through the godo Go client, so an assistant can list, create, change and delete resources in your account. That covers droplets and images, App Platform apps, managed databases, Kubernetes (DOKS) clusters, the container registry, domains and DNS, firewalls, load balancers, VPCs and CDNs, Spaces object storage, volumes, NFS shares, serverless functions, Marketplace apps, Insights monitoring and uptime checks, account and billing details, and several GenAI and inference products. A docs service searches DigitalOcean's public documentation.

Tools come in 24 services. Locally, the npm package @digitalocean/mcp starts a Go binary over stdio, and --services picks which groups load (apps,droplets for example). Leave it out and every service loads, which makes for a very long tool list. An unknown service name stops it at start. DigitalOcean also hosts each service at its own HTTPS address, such as https://apps.mcp.digitalocean.com/mcp, which takes OAuth sign-in or a personal access token as a bearer header.

The same binary can serve HTTP itself with --transport http. It binds to 127.0.0.1:8080 unless --bind-addr is set, and reads the token from each request's Authorization header. Since 1.6.5 there is an --allow-anonymous switch (or ALLOW_ANONYMOUS) for running the docs service over HTTP with no token check and no OAuth metadata. main.go refuses to start with it unless --services names docs alone, and on stdio it is ignored.

What it needs

To run it yourselfNode.js 18+
Runs onmacOS, Windows, Linux
DigitalOceanPaid planResources you create through the tools are billed to the account

For the local npm way you need npm 8 or later and a personal access token in DIGITALOCEAN_API_TOKEN, created in the DigitalOcean control panel. The token's scopes decide what the tools can do. On stdio the binary exits without a token even when only the docs service is loaded, though the docs tools themselves never use it. The hosted endpoints need no local runtime: a client with OAuth support signs in through the browser, and others send the token as a bearer header.

Limits

  • Limit On stdio the server exits at start without DIGITALOCEAN_API_TOKEN or --digitalocean-api-token, whatever services are chosen
  • Limit --allow-anonymous works only over HTTP with --services set to docs alone, and the server refuses to start otherwise
  • Not covered Hosted endpoints are one address per service, so each product you want is a separate client entry
  • Size cap With no --services every service loads, a long tool list. The README advises loading only what you need
  • Limit The README's example names droplet-resize and droplet-enable-backups differ from the droplet service's own names (resize-droplet, enable-backups-droplet)
  • Early release The v1 alert-policy tools are marked deprecated in favour of the insights-alert-rule tools
  • Size cap insights-logs-search, insights-spans-search and insights-traces-search take a From/To window of at most 7 days
  • Cost Creating droplets, databases, clusters and other resources bills your DigitalOcean account

The hosted endpoints are one URL per service, so you add one entry for each product you want. In stdio mode the server exits at start if it has no token (set by DIGITALOCEAN_API_TOKEN or --digitalocean-api-token). The README advises enabling only the services you need, to keep context small and answers accurate. Its example tool names for droplets (droplet-resize, droplet-enable-backups) differ from the names in the droplet service's own README (resize-droplet, enable-backups-droplet). The makers link a warning that using MCP with a DigitalOcean account carries risks. Actions such as creating droplets or databases bill your account.

Who it suits

Suits DigitalOcean users who want an assistant to inspect and run their infrastructure and prefer the vendor's own server. The hosted OAuth endpoints suit people who would rather not handle a token. The local npm way suits clients without OAuth, or anyone who wants one process carrying several services picked with --services. Teams self-hosting a public docs lookup can run the docs service over HTTP with --allow-anonymous. It is a poor fit for read-only use: delete tools for droplets, apps and VPC peerings load with their service, so limit what the token can do. Teams on AWS, Google Cloud or Azure need a different server.

Tools 37

21 only read, 13 change things, 3 can delete or overwrite.

droplet-create changes
Create a droplet from an image, size and region
droplet-delete deletes
Delete a droplet
droplet-get
Fetch one droplet by ID
droplet-list
List droplets in the account
droplet-reboot changes
Reboot a droplet
resize-droplet changes
Change a droplet's size
snapshot-droplet changes
Take a snapshot of a droplet
power-off-droplets-tag changes
Power off every droplet carrying a tag
image-list
List images, snapshots and backups, filterable by type
size-list
List available droplet sizes
apps-list
List App Platform apps
apps-get-info
Show details of one app
create-app-from-spec changes
Create an app from an app spec, such as a GitHub repo
apps-update changes
Change an existing app
apps-delete deletes
Delete an app
apps-get-deployment-status
Check the state of an app's deployment
apps-usage
Report an app's usage
key-create changes
Add an SSH key to the account
domain-create changes
Create a domain in DigitalOcean DNS
cdn-flush-cache changes
Purge files from a CDN endpoint's cache
vpc-peering-create changes
Peer two VPCs
vpc-peering-delete deletes
Remove a VPC peering
microvm-exec changes
Run a command inside a MicroVM
inference-model-catalog-search
Search the inference model catalog by name
inference-model-catalog-get-card
Show the full metadata card of one catalog model
insights-resource-list
List resources and their metrics, logs and traces settings
insights-resource-get
Show which signals are switched on for one resource
insights-resource-update-signals changes
Turn metrics, logs or traces collection on or off for a resource
insights-logs-search
Search logs in a region over a window of up to 7 days
insights-trace-get
Fetch one trace and its spans
uptimecheck-get
Fetch one uptime check by ID
docs-search
Search DigitalOcean's public documentation
docs-get-page
Fetch one documentation page
docs-find-for-service
Find documentation for a named product
docs-get-quickstart
Fetch the quickstart guide for a product
docs-troubleshoot
Find documentation for an error message
docs-get-related
List pages related to a docs page

Similar servers