Summary
Let your AI keep an eye on DigitalOcean: Droplets with CPU and bandwidth metrics, App Platform deployments and logs, managed databases, Kubernetes clusters, volumes, DNS, firewalls, load balancers, balance and invoices. It can power Droplets on or off, take snapshots, redeploy apps and edit DNS records after confirming with you.
Guided setup
Connect DigitalOcean to Microsoft Copilot in 2 minutes
Start a free trial on AnythingMCP Cloud, connect DigitalOcean in the guided setup, then add your MCP URL to Microsoft Copilot. No code and no server to run.
No credit card · 7-day trial · Self-host alternative available
Try asking
Example prompts for DigitalOcean
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → DigitalOcean, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
DigitalOcean + Microsoft Copilot
Let your AI keep an eye on DigitalOcean: Droplets with CPU and bandwidth metrics, App Platform deployments and logs, managed databases, Kubernetes clusters, volumes, DNS, firewalls, load balancers, balance and invoices. It can power Droplets on or off, take snapshots, redeploy apps and edit DNS records after confirming with you.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
DIGITALOCEAN_TOKEN
Step 1 — Get credentials
- In the DigitalOcean control panel open API → Tokens (
https://cloud.digitalocean.com/account/api/tokens) and click Generate New Token. The token belongs to the team selected at the top of the control panel. - Pick an expiry and the scopes. Custom Scopes is the safest choice: read access for account, billing, droplet, app, database, kubernetes, block_storage, domain, firewall, load_balancer, monitoring, snapshot and actions; add droplet update for power actions and snapshots, app update for redeploys, and domain create and update for DNS changes. Read Only covers every read and refuses all changes. Avoid Full Access: it could also destroy resources.
- Copy the token (it starts with
dop_v1_and is shown once) intoDIGITALOCEAN_TOKENwithout the word Bearer and install the connector. - Check the setup with
digitalocean_get_account.
What it does: account, balance and invoices; Droplets with their snapshots and CPU and bandwidth metrics; App Platform apps with their deployments, the steps that failed and links to the logs; managed databases and their replicas; Kubernetes clusters with their node pools; volumes; DNS domains and records; firewalls and load balancers.
Changes ask first: powering a Droplet on or off or rebooting it (digitalocean_power_droplet), taking a snapshot (digitalocean_snapshot_droplet, billed per GB per month), redeploying an app (digitalocean_create_app_deployment) and adding or changing DNS records (digitalocean_create_domain_record, digitalocean_update_domain_record) all touch things people rely on. Before each one the AI shows you the resource and the change and waits for your yes, then follows the action with digitalocean_get_action until it is done.
Nothing destroys resources: deleting Droplets, apps, databases, clusters or volumes is not offered at all. digitalocean_delete_domain_record is switched off at install; an admin turns it on deliberately.
Secrets stay in DigitalOcean: database tools return host and port but never passwords, connection strings or certificates; app tools leave out environment variables; Kubernetes tools return no kubeconfig. The log links from digitalocean_get_app_logs_url are temporary, but anyone who has them can read the logs.
Metrics: CPU and bandwidth metrics need the monitoring agent on the Droplet. CPU values are cumulative seconds per mode, so the AI works out how busy the Droplet was from the change between two points.
Common errors: 401 Unable to authenticate you: the token is wrong, expired or revoked. 403: the token lacks the scope for this call (for example billing:read for the balance, or an update scope for a change); generate a token with that scope. 404: no such resource in this team. 422: a value is invalid, for example a Droplet that is already off or a DNS record that clashes with another. 429: more than 5,000 requests per hour or 250 per minute; wait.
The connector does not create, resize or destroy Droplets, apps, databases, clusters, volumes, firewalls or load balancers, does not change app settings, environment variables or database users, and does not cover Spaces, the container registry, Functions, GenAI or reserved IPs.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
DigitalOceantools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
digitalocean_get_account | Read the DigitalOcean account behind the token: email, name, uuid, status, whether the email is verified, the Droplet and reserved IP… |
digitalocean_get_balance | Read the billing balance: the balance at the start of the month, usage so far this month, month-to-date balance (what is owed now) and when… |
digitalocean_list_invoices | List past invoices, newest first, with uuid, amount in US dollars, billing period (YYYY-MM) and date, plus a preview of the current month |
digitalocean_list_droplets | List Droplets (virtual machines): id, name, status (new, active, off, archive), region, size, vCPUs, memory, disk, image, public and… |
digitalocean_get_droplet | Read one Droplet: status, region, size, vCPUs, memory, disk, image, IP addresses, tags, attached volumes, enabled features (backups… |
digitalocean_power_droplet | Change a Droplet's power state. power_on starts it; shutdown asks the operating system to shut down cleanly; power_off cuts the power at… |
digitalocean_snapshot_droplet | Take a snapshot (a full disk image) of a Droplet |
digitalocean_get_action | Read the progress of an action (power change, snapshot and so on): status (in-progress, completed, errored), type, start and end time and… |
digitalocean_list_droplet_snapshots | List the snapshots of a Droplet: id, name, size in GB, minimum disk size, regions and creation date |
digitalocean_list_apps | List App Platform apps: id, name, region, live URL, tier, project, the active deployment (id, phase, cause) and any deployment in progress |
digitalocean_get_app | Read one App Platform app: name, region, live URL and domains, the active, in-progress and pending deployments, and its components… |
digitalocean_list_app_deployments | List the deployments of an app, newest first: id, phase (PENDING_BUILD, BUILDING, PENDING_DEPLOY, DEPLOYING, ACTIVE, SUPERSEDED, ERROR… |
digitalocean_get_app_deployment | Read one app deployment: phase, cause, progress and each step with its status and the reason it failed, for finding out why a build or… |
digitalocean_create_app_deployment | Deploy an app again from its current settings and source: App Platform builds (with force_build even when nothing changed) and replaces the… |
digitalocean_get_app_logs_url | Get links to the logs of an app's active deployment: historic_urls are files with past log lines, live_url streams new lines |
digitalocean_get_app_deployment_logs_url | Get links to the build, deploy or run logs of one deployment of an app (for example a failed one): historic_urls are files with the log… |
digitalocean_list_databases | List managed database clusters: id, name, engine (pg, mysql, valkey, mongodb, kafka, opensearch), version, status, region, size, nodes… |
digitalocean_get_database | Read one managed database cluster: engine, version, status, region, size, nodes, storage, database names, host and port, the database users… |
digitalocean_list_database_replicas | List the read-only replicas of a database cluster: id, name, region, size, status, storage, host and creation date |
digitalocean_list_kubernetes_clusters | List Kubernetes (DOKS) clusters: id, name, region, Kubernetes version, state (running, provisioning, degraded, error...), API endpoint… |
digitalocean_get_kubernetes_cluster | Read one Kubernetes cluster: version, state and message, endpoint, node pools with each node's name and status, maintenance window, high… |
digitalocean_list_volumes | List block storage volumes: id, name, size in GB, region, the Droplets they are attached to, filesystem, tags and creation date |
digitalocean_list_domains | List the domains managed in DigitalOcean DNS: name and default TTL |
digitalocean_list_domain_records | List the DNS records of a domain: id, type (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA), name (@ for the domain itself), data, priority, port… |
digitalocean_create_domain_record | Add a DNS record to a domain |
digitalocean_update_domain_record | Change an existing DNS record: only the fields you pass change, and the record type must be given and stay the same |
digitalocean_delete_domain_record | Delete a DNS record |
digitalocean_list_firewalls | List cloud firewalls: id, name, status, inbound rules (protocol, ports, allowed sources), outbound rules, the Droplets and tags they apply… |
digitalocean_get_firewall | Read one cloud firewall: its inbound and outbound rules, the Droplets and tags it applies to, status and pending changes |
digitalocean_list_load_balancers | List load balancers: id, name, public IP, status, region, size, forwarding rules (ports and protocols), health check, target Droplets or… |
digitalocean_get_load_balancer | Read one load balancer: IP, status, region, size, forwarding rules, health check, sticky sessions, target Droplets or tag and HTTPS redirect |
digitalocean_get_droplet_cpu_metrics | Read CPU metrics of a Droplet for a time window: one series per CPU mode (user, system, idle, iowait...) with [unix time, value] pairs |
digitalocean_get_droplet_bandwidth_metrics | Read network bandwidth of a Droplet for a time window, in megabits per second, as [unix time, value] pairs, for the public or private… |
Example prompts
- "List my Droplets with region, size and status, and tell me which ones are switched off but still billed."
- "Why did the last deployment of my App Platform app fail? Show me the failed step and the reason."
- "How busy was the CPU of web-01 over the last 24 hours, and how much bandwidth did it send out?"
- "What is my DigitalOcean balance this month, and how do the last three invoices compare?"
- "Point the A record of staging.example.com to 203.0.113.10. Show me the record now and the new value before you change it."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?