A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
A Model Context Protocol (MCP) server that provides programmatic access to DigitalOcean's API. This server exposes tools
A comprehensive Model Context Protocol (MCP) server that provides programmatic access to DigitalOcean's API. This server exposes 48 tools across 7 major service categories for complete infrastructure management through the MCP interface.
git clone https://github.com/rohit-kaundal/digitalocean-mcp-server.git
cd digitalocean-mcp-server
go mod tidy
go build -o digitalocean-mcp-server
go install github.com/rohit-kaundal/digitalocean-mcp-server@latest
REQUIRED: Set your DigitalOcean API token before running the server:
export DIGITALOCEAN_ACCESS_TOKEN="your_digitalocean_api_token"
⚠️ The server will not function without this environment variable set.
First, ensure your DigitalOcean API token is set:
export DIGITALOCEAN_ACCESS_TOKEN="your_digitalocean_api_token"
Then run the server:
./digitalocean-mcp-server
Or run directly with Go:
go run main.go
The server will start and listen for MCP requests via stdio transport.
test_connection - Test API connectivity and authenticationlist_droplets - List all droplets with pagination supportget_droplet - Get detailed information about a specific dropletcreate_droplet - Create a new droplet with custom specificationsdelete_droplet - Permanently delete a dropletresize_droplet - Resize droplet to different size (CPU/RAM/disk)create_droplet_snapshot - Create a snapshot backup of a dropletlist_volumes - List all block storage volumes (optionally by region)get_volume - Get detailed volume informationcreate_volume - Create new block storage volumedelete_volume - Delete a volumeattach_volume - Attach volume to a dropletdetach_volume - Detach volume from a dropletresize_volume - Expand volume storage capacitycreate_volume_snapshot - Create snapshot backup of a volumelist_snapshots - List all snapshots (filter by droplet/volume)list_volume_snapshots - List volume-specific snapshotslist_droplet_snapshots - List droplet-specific snapshotsget_snapshot - Get detailed snapshot informationdelete_snapshot - Delete a snapshotlist_images - List available images (distribution/application/user)get_image - Get image details by ID or slugupdate_image - Update image metadata (name, description)delete_image - Delete custom imagestransfer_image - Transfer image to different regionconvert_image_to_snapshot - Convert image to snapshot formatlist_floating_ips - List all floating IP addressesget_floating_ip - Get floating IP details and assignment statuscreate_floating_ip - Create new floating IP (regional or assigned)delete_floating_ip - Release floating IPassign_floating_ip - Assign floating IP to dropletunassign_floating_ip - Unassign floating IP from dropletlist_load_balancers - List all load balancersget_load_balancer - Get load balancer configuration and statuscreate_load_balancer - Create new load balancer with forwarding rulesupdate_load_balancer - Update load balancer configurationdelete_load_balancer - Delete load balanceradd_droplets_to_load_balancer - Add droplets to load balancer poolremove_droplets_from_load_balancer - Remove droplets from pooladd_forwarding_rules_to_load_balancer - Add traffic forwarding rulesremove_forwarding_rules_from_load_balancer - Remove forwarding ruleslist_firewalls - List all firewalls in the accountget_firewall - Get detailed firewall configuration and rulescreate_firewall - Create new firewall with inbound/outbound rulesupdate_firewall - Update firewall configuration and rulesdelete_firewall - Remove firewall from accountadd_droplets_to_firewall - Assign droplets to firewall protectionremove_droplets_from_firewall - Remove droplets from firewalladd_tags_to_firewall - Add tags to firewall for organizationremove_tags_from_firewall - Remove tags from firewalladd_rules_to_firewall - Add new security rules to firewallremove_rules_from_firewall - Remove existing security ruleslist_k8s_clusters - List all Kubernetes clustersget_k8s_cluster - Get cluster details and statuscreate_k8s_cluster - Create new Kubernetes clusterdelete_k8s_cluster - Delete Kubernetes clusterlist_registries - List all container registriesget_registry - Get registry details and repositories{
"method": "tools/call",
"params": {
"name": "list_droplets",
"arguments": {
"page": 1,
"per_page": 25
}
}
}
{
"method": "tools/call",
"params": {
"name": "create_droplet",
"arguments": {
"name": "my-server",
"region": "nyc3",
"size": "s-1vcpu-1gb",
"image": "ubuntu-22-04-x64"
}
}
}
{
"method": "tools/call",
"params": {
"name": "create_volume",
"arguments": {
"name": "my-storage",
"region": "nyc3",
"size_gigabytes": 100,
"description": "Additional storage for applications"
}
}
}
{
"method": "tools/call",
"params": {
"name": "attach_volume",
"arguments": {
"volume_id": "volume-123",
"droplet_id": 456
}
}
}
{
"method": "tools/call",
"params": {
"name": "create_load_balancer",
"arguments": {
"name": "web-lb",
"algorithm": "round_robin",
"region": "nyc3",
"forwarding_rules": [
{
"entry_protocol": "http",
"entry_port": 80,
"target_protocol": "http",
"target_port": 8080
}
],
"droplet_ids": [123, 456]
}
}
}
{
"method": "tools/call",
"params": {
"name": "create_floating_ip",
"arguments": {
"region": "nyc3"
}
}
}
{
"method": "tools/call",
"params": {
"name": "assign_floating_ip",
"arguments": {
"ip": "192.168.1.100",
"droplet_id": 123
}
}
}
{
"method": "tools/call",
"params": {
"name": "create_firewall",
"arguments": {
"name": "web-firewall",
"inbound_rules": [
{
"protocol": "tcp",
"ports": "80",
"sources": {
"addresses": ["0.0.0.0/0"]
}
},
{
"protocol": "tcp",
"ports": "443",
"sources": {
"addresses": ["0.0.0.0/0"]
}
}
],
"outbound_rules": [
{
"protocol": "tcp",
"ports": "all",
"destinations": {
"addresses": ["0.0.0.0/0"]
}
}
],
"droplet_ids": [123, 456]
}
}
}
{
"method": "tools/call",
"params": {
"name": "add_droplets_to_firewall",
"arguments": {
"firewall_id": "firewall-123",
"droplet_ids": [789, 101112]
}
}
}
digitalocean-mcp-server/
├── main.go # Entry point
├── server/
│ ├── server.go # MCP server initialization
│ └── tools.go # Tool registration
├── client/
│ └── digitalocean.go # DigitalOcean API client
├── handlers/
│ ├── common.go # Shared handler functionality
│ ├── droplets.go # Droplet operations
│ ├── volumes.go # Volume operations
│ ├── snapshots.go # Snapshot operations
│ ├── images.go # Image operations
│ ├── floating_ips.go # Floating IP operations
│ ├── load_balancers.go # Load balancer operations
│ ├── firewalls.go # Firewall operations
│ ├── kubernetes.go # Kubernetes operations
│ └── registry.go # Registry operations
├── types/
│ └── args.go # Request argument types
└── CLAUDE.md # AI assistant instructions
# Run the server
go run main.go
# Run tests
go test ./...
# Build binary
go build -o digitalocean-mcp-server
# Update dependencies
go mod tidy
types/args.gohandlers/server/tools.goAll tools return standardized MCP responses:
Common error scenarios:
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
MCP server integration for DaVinci Resolve Studio
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba