action-getLABSCO SUMMARY
Per-service endpoints are how you give an agent droplets without also giving it your databases.
One endpoint for a whole cloud account is a large grant. Splitting by service means the decision is made in the client config, visibly, one line per service — and a client that was never given the databases endpoint cannot reach databases whatever it is asked to do.
What it is
DigitalOcean publishes an endpoint per service rather than one for everything: the host contains the service name. You add only the ones you want a client to reach.
What you get
- App Platform, Kubernetes (DOKS), Droplets, managed databases, Spaces object storage
- Networking, AI inference and the other services in their reference
- A Documentation endpoint for searching DigitalOcean's docs, quickstarts and troubleshooting pages
Requirements
- A DigitalOcean account.
- DigitalOcean recommends OAuth: add an endpoint without an Authorization header and your client opens a browser sign-in, so no long-lived token sits in your config.
- A DigitalOcean API token sent as a Bearer header works too.
- The Documentation endpoint needs no API token, but still asks you to sign in.
Setup effort
Paste a URL, then authorize — add the servers you want to your client, then approve the OAuth consent screen
USE CASES
Shipping an app to App Platform
With only the App Platform endpoint connected, point it at a GitHub, GitLab or Bitbucket repo and branch, create the app from a spec, then check how the deployment went.
Changing a running app's configuration
Read the app's current spec, change what needs changing, such as environment variables or scaling, and send it back as an update that redeploys the app.
Answering a DigitalOcean question from its docs
Search DigitalOcean's documentation, pull the quickstart for a service, or paste an error message and get the matching troubleshooting page back.
Routine droplet upkeep
Check which sizes are available, resize a droplet that has run out of headroom, and turn on backups for one that never had them, all through the Droplets endpoint.
Putting a new service on a domain
Create the domain and its DNS records through the Networking endpoint instead of the control panel.
Picking a model to serve
Search the inference model catalog by name and open the full card for the likely candidates before you set up a dedicated inference instance.
336 tools
Listed in project docs. Your client may show a different list.
action-listbalance-getbilling-history-listinvoice-listkey-createkey-deletekey-getkey-listaccount-get-informationapps-create-app-from-specapps-updateapps-deleteapps-get-infoapps-get-deployment-statusapps-listgenai-batch-inference-create-filegenai-batch-inference-creategenai-batch-inference-getgenai-batch-inference-get-resultsgenai-batch-inference-cancelgenai-batch-inference-listdocr-getdocr-listdocr-createdocr-deletedocr-docker-credentialsdocr-optionsdocr-validate-namedocr-repository-listdocr-repository-tag-listdocr-repository-tag-deletedocr-repository-manifest-listdocr-repository-manifest-deletedocr-subscription-getdocr-subscription-updatedocr-garbage-collection-startdocr-garbage-collection-getdocr-garbage-collection-listdocr-garbage-collection-updatedb-cluster-listdb-cluster-getdb-cluster-get-cadb-cluster-createdb-cluster-deletedb-cluster-resizedb-cluster-list-backupsdb-cluster-list-optionsdb-cluster-upgrade-major-versiondb-cluster-start-online-migrationdb-cluster-stop-online-migrationdb-cluster-get-migrationdb-cluster-get-firewall-rulesdb-cluster-update-firewall-rulesdb-cluster-list-topicsdb-cluster-create-topicdb-cluster-get-topicdb-cluster-delete-topicdb-cluster-update-topicdb-cluster-get-kafka-configdb-cluster-update-kafka-configdb-cluster-get-mongodb-configdb-cluster-update-mongodb-configdb-cluster-get-mysql-configdb-cluster-update-mysql-configdb-cluster-get-sql-modedb-cluster-set-sql-modedb-cluster-get-opensearch-configdb-cluster-update-os-configdb-cluster-get-postgresql-configdb-cluster-update-psql-configdb-cluster-get-redis-configdb-cluster-update-redis-configdb-cluster-get-userdb-cluster-list-usersdb-cluster-create-userdb-cluster-update-userdb-cluster-delete-userdedicated-inference-creatededicated-inference-getdedicated-inference-listdedicated-inference-updatededicated-inference-deletedocs-searchdocs-get-pagedocs-find-for-servicedocs-get-quickstartdocs-troubleshootdocs-get-relateddroplet-createdroplet-deletedroplet-getdroplet-listdroplet-actionreboot-dropletreset-droplet-passwordrename-dropletchange-kernel-dropletenable-ipv6-dropletdroplet-enable-private-netenable-backups-dropletdisable-backups-dropletpower-cycle-droplets-tagpower-on-droplets-tagpower-off-droplets-tagshutdown-droplets-tagenable-backups-droplets-tagdisable-backups-droplets-tagsnapshot-droplets-tagenable-ipv6-droplets-tagenable-private-net-droplets-tagrebuild-droplet-by-slugpower-cycle-dropletpower-on-dropletpower-off-dropletshutdown-dropletrestore-dropletresize-dropletrebuild-dropletsnapshot-dropletimage-listimage-getimage-createimage-updateimage-deleteimage-action-transferimage-action-convertimage-action-getsize-listgenai-list-evaluation-metricsgenai-list-evaluation-test-casesgenai-create-evaluation-datasetgenai-create-evaluation-test-casegenai-update-evaluation-test-casegenai-run-evaluation-test-casegenai-get-evaluation-rungenai-run-evaluation-workflowgenai-model-eval-list-metricsgenai-model-eval-list-datasetsgenai-model-eval-create-datasetgenai-model-eval-create-rungenai-model-eval-list-runsgenai-model-eval-get-rungenai-model-eval-get-results-download-urlgenai-model-eval-delete-rungenai-model-eval-cancel-rungenai-model-eval-delete-presetgenai-model-eval-delete-datasetgenai-model-eval-create-custom-metricgenai-model-eval-update-custom-metricgenai-model-eval-delete-custom-metricgenai-model-eval-run-workflowgenai-simulation-list-scenario-setsgenai-simulation-get-scenario-setgenai-simulation-create-scenario-setgenai-simulation-generate-scenario-setgenai-simulation-list-scenariosgenai-simulation-get-scenario-set-download-urlgenai-simulation-update-scenario-setgenai-simulation-delete-scenario-setgenai-simulation-list-scenario-librarygenai-simulation-list-scenario-library-scenariosgenai-simulation-create-scenario-set-from-librarygenai-simulation-create-rungenai-simulation-list-runsgenai-simulation-get-rungenai-simulation-update-rungenai-simulation-cancel-rungenai-simulation-delete-rungenai-simulation-list-journeysgenai-simulation-get-journeygenai-simulation-get-journey-trajectorygenai-simulation-get-journey-trajectory-urlfunctions-list-namespacesfunctions-get-namespacefunctions-create-namespacefunctions-delete-namespacefunctions-list-access-keysfunctions-create-access-keyfunctions-delete-access-keyfunctions-list-actionsfunctions-get-actionfunctions-create-or-update-actionfunctions-delete-actionfunctions-invoke-actionfunctions-list-packagesfunctions-get-packagefunctions-create-or-update-packagefunctions-delete-packagefunctions-list-triggersfunctions-get-triggerfunctions-create-triggerfunctions-update-triggerfunctions-delete-triggerfunctions-list-activationsfunctions-get-activationfunctions-get-activation-logsfunctions-get-activation-resultfunctions-deployment-guidegenai-custom-models-listgenai-custom-models-importgenai-custom-models-update-metadatagenai-custom-models-deletegenai-inference-router-creategenai-inference-router-listgenai-inference-router-getgenai-inference-router-deletegenai-inference-router-task-presetsgenai-inference-router-updateuptimecheck-getuptimecheck-get-stateuptimecheck-listuptimecheck-createuptimecheck-deleteuptimecheck-updateuptimecheck-alert-getuptimecheck-alert-listuptimecheck-alert-createuptimecheck-alert-updatealert-policy-getalert-policy-listalert-policy-createalert-policy-updatealert-policy-deleteretrieve_knowledge_basedoks-get-clusterdoks-list-clustersdoks-create-clusterdoks-update-clusterdoks-delete-clusterdoks-upgrade-clusterdoks-get-cluster-upgradesdoks-get-kubeconfigdoks-get-credentialsdoks-create-nodepooldoks-get-nodepooldoks-list-nodepoolsdoks-update-nodepooldoks-delete-nodepooldoks-delete-nodedoks-recycle-nodesmarketplace-1-click-listmarketplace-1-click-kubernetes-app-installinference-model-catalog-searchinference-model-catalog-get-carddomain-createdomain-deletedomain-record-createdomain-record-deletedomain-record-editdomain-getdomain-listdomain-record-getdomain-record-listcustom-certificate-createlets-encrypt-certificate-createcertificate-deletecertificate-getcertificate-listfirewall-createfirewall-deletefirewall-add-tagsfirewall-remove-tagsfirewall-add-dropletsfirewall-remove-dropletsfirewall-add-rulesfirewall-remove-rulesfirewall-getfirewall-listlb-createlb-deletelb-delete-cachelb-getlb-listlb-add-dropletslb-remove-dropletslb-updatelb-add-fwd-ruleslb-remove-fwd-rulesreserved-ip-reservereserved-ip-releasereserved-ip-assignreserved-ip-unassignreserved-ip-listreserved-ip-getvpc-peering-createvpc-peering-deletevpc-peering-getvpc-peering-listbyoip-prefix-createbyoip-prefix-deletebyoip-prefix-getbyoip-prefix-listbyoip-prefix-resources-getvpc-createvpc-list-membersvpc-deletevpc-getvpc-listnfs-file-share-createnfs-file-share-listnfs-file-share-getnfs-file-share-deletenfs-snapshot-listnfs-snapshot-getnfs-snapshot-deletenfs-resizenfs-snapshotnfs-attachnfs-detachnfs-reassignnfs-switch-performance-tierspaces-key-createspaces-key-deletespaces-key-getspaces-key-listspaces-key-updatevector-db-createvector-db-listvector-db-getvector-db-resizevector-db-deletevector-db-get-credentialsvolume-createvolume-listvolume-getvolume-deletevolume-snapshot-createvolume-snapshot-listvolume-snapshot-getvolume-snapshot-deletevolume-attachvolume-detachvolume-action-getvolume-action-listvolume-resizeBEFORE YOU INSTALL
What to know first
Tools you get
336 tools named in the project's documentation. Spread across 22 separate endpoints, one per service; your client sees only the tools of the endpoints you add.
Requires
- an MCP client that can reach a remote endpoint
- OAuth sign-in to DigitalOcean in clients that support it (recommended by DigitalOcean), or a DigitalOcean API token as a bearer header; the documentation endpoint needs no API token (leave out the Authorization header), and your client will ask you to sign in to DigitalOcean
INSTALLATION
Connect your client
DigitalOcean hosts 22 servers, each with its own URL.
Server setup
https://apps.mcp.digitalocean.com/mcp
https://databases.mcp.digitalocean.com/mcp
https://doks.mcp.digitalocean.com/mcp
https://droplets.mcp.digitalocean.com/mcp
https://functions.mcp.digitalocean.com/mcp
https://dedicated-inference.mcp.digitalocean.com/mcp
https://inference-modelcatalog.mcp.digitalocean.com/mcp
https://kbaas.do-ai.run/v1/mcp
https://spaces.mcp.digitalocean.com/mcp
https://networking.mcp.digitalocean.com/mcp
https://nfs.mcp.digitalocean.com/mcp
https://accounts.mcp.digitalocean.com/mcp
https://insights.mcp.digitalocean.com/mcp
https://genai-evaluation.mcp.digitalocean.com/mcp
https://genai-batchinference.mcp.digitalocean.com/mcp
https://genai-custom-models.mcp.digitalocean.com/mcp
https://genai-inferencerouter.mcp.digitalocean.com/mcp
https://vector-databases.mcp.digitalocean.com/mcp
https://docr.mcp.digitalocean.com/mcp
https://docs.mcp.digitalocean.com/mcp
https://marketplace.mcp.digitalocean.com/mcp
https://volumes.mcp.digitalocean.com/mcpRequirements
- OAuth sign-in to DigitalOcean in clients that support it (recommended by DigitalOcean), or a DigitalOcean API token as a bearer header; the documentation endpoint needs no API token (leave out the Authorization header), and your client will ask you to sign in to DigitalOcean
MCP Clients
Any MCP client
{
"mcpServers": {
"apps": {
"url": "https://apps.mcp.digitalocean.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_DIGITALOCEAN_API_TOKEN>"
}
},
"databases": {
"url": "https://databases.mcp.digitalocean.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_DIGITALOCEAN_API_TOKEN>"
}
}
}
}This example connects App Platform and Databases. <YOUR_DIGITALOCEAN_API_TOKEN> is your DigitalOcean API token. Add one entry per service you want the client to reach, each with the same Authorization header:
App Platform — https://apps.mcp.digitalocean.com/mcp
Kubernetes — https://doks.mcp.digitalocean.com/mcp
Droplets — https://droplets.mcp.digitalocean.com/mcp
Functions — https://functions.mcp.digitalocean.com/mcp
Databases — https://databases.mcp.digitalocean.com/mcp
Dedicated Inference — https://dedicated-inference.mcp.digitalocean.com/mcp
Model Catalog — https://inference-modelcatalog.mcp.digitalocean.com/mcp
Knowledge Bases — https://kbaas.do-ai.run/v1/mcp
Spaces — https://spaces.mcp.digitalocean.com/mcp
Networking — https://networking.mcp.digitalocean.com/mcp
Network File Storage — https://nfs.mcp.digitalocean.com/mcp
Accounts — https://accounts.mcp.digitalocean.com/mcp
Insights — https://insights.mcp.digitalocean.com/mcp
Evaluations — https://genai-evaluation.mcp.digitalocean.com/mcp
Batch Inference — https://genai-batchinference.mcp.digitalocean.com/mcp
Custom Models — https://genai-custom-models.mcp.digitalocean.com/mcp
Inference Router — https://genai-inferencerouter.mcp.digitalocean.com/mcp
Vector Database — https://vector-databases.mcp.digitalocean.com/mcp
Container Registry — https://docr.mcp.digitalocean.com/mcp
Documentation — https://docs.mcp.digitalocean.com/mcp
Marketplace — https://marketplace.mcp.digitalocean.com/mcp
Volumes Block Storage — https://volumes.mcp.digitalocean.com/mcp
The Documentation endpoint needs no API token, so leave its headers out; your client asks you to sign in to DigitalOcean instead.
Any MCP client — OAuth
To use OAuth, add the server’s URL to your client’s configuration without an Authorization header:
{
"mcpServers": {
"apps": {
"url": "https://apps.mcp.digitalocean.com/mcp"
}
}
}Your client obtains a short-lived access token through a browser-based sign-in, so you don’t store a long-lived token in your configuration. All remote MCP servers that require authentication support OAuth.
VS Code — Remote
The VS Code MCP config file is located at .vscode/mcp.json in your workspace root.
{
"inputs": [
{
"id": "digitalocean-token",
"type": "promptString",
"description": "DigitalOcean API Token",
"password": true
}
],
"servers": {
"digitalocean-apps": {
"url": "https://apps.mcp.digitalocean.com/mcp",
"headers": {
"Authorization": "Bearer ${input:digitalocean-token}"
}
},
"digitalocean-databases": {
"url": "https://databases.mcp.digitalocean.com/mcp",
"headers": {
"Authorization": "Bearer ${input:digitalocean-token}"
}
}
}
}The inputs block defines a named input (digitalocean-token) that VS Code will prompt you to enter securely the first time you use the server.
Any MCP client — Local
To use the local MCP server, you need Node.js v18 or later and npm v8 or later. The following example configures the DigitalOcean MCP server with <YOUR_DIGITALOCEAN_API_TOKEN> and enables access to only the App Platform (apps) service.
{
"mcpServers": {
"digitalocean": {
"command": "npx",
"args": [
"-y",
"@digitalocean/mcp",
"--services",
"apps"
],
"env": {
"DIGITALOCEAN_API_TOKEN": "<YOUR_DIGITALOCEAN_API_TOKEN>"
}
}
}
}<YOUR_DIGITALOCEAN_API_TOKEN> is your DigitalOcean API token, or use the client-specific method of variable substitution (if available) to keep your token out of the configuration file.
Claude Code — Local
claude mcp add digitalocean \
--env DIGITALOCEAN_API_TOKEN=${DIGITALOCEAN_API_TOKEN} \
-- npx -y "@digitalocean/mcp"Set the DIGITALOCEAN_API_TOKEN environment variable to your DigitalOcean API token before running this command. As written it loads every service; to limit it, add --services with a comma-separated list after "@digitalocean/mcp".
Claude Desktop — Local
{
"mcpServers": {
"digitalocean": {
"command": "npx",
"args": [
"@digitalocean/mcp",
"--services",
"apps"
],
"env": {
"DIGITALOCEAN_API_TOKEN": "<YOUR_DIGITALOCEAN_API_TOKEN>"
}
}
}
}Add services to --services as a comma-separated list, then restart Claude Desktop.
Cursor — Local
{
"mcpServers": {
"digitalocean": {
"command": "npx",
"args": [
"@digitalocean/mcp",
"--services",
"apps"
],
"env": {
"DIGITALOCEAN_API_TOKEN": "${DIGITALOCEAN_API_TOKEN}"
}
}
}
}Set DIGITALOCEAN_API_TOKEN in your shell profile before starting Cursor; the block reads it from there. Add services to --services as a comma-separated list.
VS Code — Local
{
"inputs": [
{
"id": "digitalocean-token",
"type": "promptString",
"description": "DigitalOcean API Token",
"password": true
}
],
"servers": {
"mcpDigitalOcean": {
"command": "npx",
"args": [
"@digitalocean/mcp",
"--services",
"apps"
],
"env": {
"DIGITALOCEAN_API_TOKEN": "${input:digitalocean-token}"
}
}
}
}Goes in .vscode/mcp.json; VS Code asks for the token the first time the server starts.