Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
e2c0e2e
feat: add load balancers tools
IshitaBadole Sep 10, 2025
4768a87
feat: enhance LoadBalancersTool with improved forwarding rules parsin…
IshitaBadole Sep 10, 2025
8c5d0f0
feat: update load balancer create tool to support Tag and DropletIDs …
IshitaBadole Sep 15, 2025
705a6f1
feat: update load balancer update tool to support Tag and DropletIDs …
IshitaBadole Sep 15, 2025
12e5320
feat: update create and update tools to to support optional args
IshitaBadole Sep 17, 2025
e023992
feat: make fields optional and remove defaults from create and update…
IshitaBadole Sep 18, 2025
3ba8929
fix: allow creation and update with no target identifier argument
IshitaBadole Sep 18, 2025
8f63309
feat: add support for global LB create and update
IshitaBadole Sep 19, 2025
3dfaa2c
fix: remove incorrect requirement from create tool description
IshitaBadole Sep 19, 2025
d679ce0
fix: update description for GLBSettings to clarify its purpose
IshitaBadole Sep 19, 2025
679bd5a
feat: add load balancer management tools to README.md
IshitaBadole Sep 19, 2025
584500c
chore: add load balancers to networking services description
IshitaBadole Sep 19, 2025
cbb5a2a
feat: add destructive hint annotation to delete tools
IshitaBadole Sep 24, 2025
c619280
fix: update parseForwardingRules to return NewToolResultError for val…
IshitaBadole Sep 25, 2025
966a2cd
fix: update TargetLoadBalancerIDs type from any to string
IshitaBadole Sep 25, 2025
16ec09d
chore: add comments for optional arguments
IshitaBadole Oct 3, 2025
089f52e
feat: add LoadBalancers tool to networking tools registry
IshitaBadole Oct 22, 2025
2f4e394
fix: update LoadBalancersTool to use a function for client initializa…
IshitaBadole Oct 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ The MCP DigitalOcean Integration supports the following services, allowing users
| apps | Manage DigitalOcean App Platform applications, including deployments and configurations. |
| droplets | Create, manage, resize, snapshot, and monitor droplets (virtual machines) on DigitalOcean. |
| accounts | Get information about your DigitalOcean account, billing, balance, invoices, and SSH keys. |
| networking | Manage domains, DNS records, certificates, firewalls, reserved IPs, BYOIP Prefixes, VPCs, and CDNs. |
| networking | Manage domains, DNS records, certificates, firewalls, load balancers, reserved IPs, BYOIP Prefixes, VPCs, and CDNs. |
| insights | Monitors your resources, endpoints and alert you when they're slow, unavailable, or SSL certificates are expiring. |
| spaces | DigitalOcean Spaces object storage and Spaces access keys for S3-compatible storage. |
| databases | Provision, manage, and monitor managed database clusters (Postgres, MySQL, Redis, etc.). |
Expand Down
97 changes: 95 additions & 2 deletions pkg/registry/networking/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Networking MCP Tools

This directory contains tools and resources for managing DigitalOcean networking features via the MCP Server. These tools enable you to create, modify, and query networking resources such as domains, certificates, firewalls, reserved IPs, VPCs, and CDNs.
This directory contains tools and resources for managing DigitalOcean networking features via the MCP Server. These tools enable you to create, modify, and query networking resources such as domains, certificates, firewalls, load balancers, reserved IPs, VPCs, and CDNs.

---

Expand Down Expand Up @@ -162,6 +162,99 @@ This directory contains tools and resources for managing DigitalOcean networking

---

### Load Balancers

- **load-balancer-create**
Create a load balancer.
- `Name` (string, required): Name of the load balancer.
- `Region` (string, required for regional load balancer types): Region slug (e.g., nyc3)
- `DropletIDs` (array of strings, optional): IDs of the Droplets assigned to the load balancer
- `Tag` (string, optional): Droplet tag corresponding to Droplets assigned to the load balancer
- `ForwardingRules` (array of objects, required for regional load balancer types): Forwarding rules to add
- `EntryProtocol` (string, required): The protocol used for traffic to the load balancer. The possible values are: http, https, http2, http3, tcp, or udp.
- `EntryPort` (number, required): The port on which the load balancer instance will listen. (e.g., 80, 443)
- `TargetProtocol` (string, required): The protocol used for traffic from the load balancer to the backend Droplets. The possible values are: http, https, http2, tcp, or udp
- `TargetPort` (number, required): The port on the backend Droplets to which the load balancer will send traffic.
- `TlsPassthrough` (bool, optional): A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets.
- `Type` (string, optional): Type of the load balancer (REGIONAL, REGIONAL_NETWORK, GLOBAL). Default is REGIONAL.
- `Network` (string, optional): Network type of the load balancer (EXTERNAL, INTERNAL). Default is EXTERNAL.
- `SizeUnit` (number, optional): Size of the load balancer in units appropriate to its type.
- `NetworkStack` (string, optional): Network stack of the load balancer (IPV4, DUALSTACK)
- `ProjectID` (string, optional): Project ID to which the load balancer will be assigned
- `TargetLoadBalancerIDs` (array of strings, optional): IDs of the target regional load balancers for a global load balancer
- `GLBSettings` (object, required for GLOBAL load balancer type): Forwarding configurations for a Global load balancer.

- **load-balancer-delete**
Delete a load balancer by ID.
- `LoadBalancerID` (string, required): ID of the load balancer.

- **load-balancer-delete-cache**
Delete the CDN cache of a global load balancer by ID.
- `LoadBalancerID` (string, required): ID of the load balancer.

- **load-balancer-get**
Get a load balancer by ID.
- `LoadBalancerID` (string, required): ID of the load balancer.

- **load-balancer-list**
List load balancers with pagination.
- `Page` (number, default: 1): Page number
- `PerPage` (number, default: 20): Items per page

- **load-balancer-add-droplets**
Add droplets to a load balancer.
- `LoadBalancerID` (string, required): ID of the load balancer
- `DropletIDs` (array of numbers, required): Droplet IDs to assign to the load balancer

- **load-balancer-remove-droplets**
Remove droplets from a load balancer.
- `LoadBalancerID` (string, required): ID of the load balancer
- `DropletIDs` (array of numbers, required): Droplet IDs to remove

- **load-balancer-update**
Update a load balancer.
- `LoadBalancerID` (string, required): ID of the load balancer.
- - `Name` (string, required): Name of the load balancer.
- `Region` (string, required for regional load balancer types): Region slug (e.g., nyc3)
- `DropletIDs` (array of strings, optional): IDs of the Droplets assigned to the load balancer
- `Tag` (string, optional): Droplet tag corresponding to Droplets assigned to the load balancer
- `ForwardingRules` (array of objects, optional): Forwarding rules to add
- `EntryProtocol` (string, required): The protocol used for traffic to the load balancer. The possible values are: http, https, http2, http3, tcp, or udp.
- `EntryPort` (number, required): The port on which the load balancer instance will listen. (e.g., 80, 443)
- `TargetProtocol` (string, required): The protocol used for traffic from the load balancer to the backend Droplets. The possible values are: http, https, http2, tcp, or udp
- `TargetPort` (number, required): The port on the backend Droplets to which the load balancer will send traffic.
- `TlsPassthrough` (bool, optional): A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets.
- `Type` (string, optional): Type of the load balancer (REGIONAL, REGIONAL_NETWORK, GLOBAL). Default is REGIONAL.
- `Network` (string, optional): Network type of the load balancer (EXTERNAL, INTERNAL). Default is EXTERNAL.
- `SizeUnit` (number, optional): Size of the load balancer in units appropriate to its type.
- `NetworkStack` (string, optional): Network stack of the load balancer (IPV4, DUALSTACK)
- `ProjectID` (string, optional): Project ID to which the load balancer will be assigned
- `TargetLoadBalancerIDs` (array of strings, optional): IDs of the target regional load balancers for a global load balancer
- `GLBSettings` (object, required for GLOBAL load balancer type): Forwarding configurations for a Global load balancer.


- **load-balancer-add-forwarding-rules**
Add forwarding rules to a load balancer.
- `LoadBalancerID` (string, required): ID of the load balancer
- `ForwardingRules` (array of objects, required): Forwarding rules to add
- `EntryProtocol` (string, required): The protocol used for traffic to the load balancer. The possible values are: http, https, http2, http3, tcp, or udp.
- `EntryPort` (number, required): The port on which the load balancer instance will listen. (e.g., 80, 443)
- `TargetProtocol` (string, required): The protocol used for traffic from the load balancer to the backend Droplets. The possible values are: http, https, http2, tcp, or udp
- `TargetPort` (number, required): The port on the backend Droplets to which the load balancer will send traffic.
- `TlsPassthrough` (bool, optional): A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets.

- **load-balancer-remove-forwarding-rules**
Remove forwarding rules from a load balancer.
- `LoadBalancerID` (string, required): ID of the load balancer
- `ForwardingRules` (array of objects, required): Forwarding rules to add
- `EntryProtocol` (string, required): The protocol used for traffic to the load balancer. The possible values are: http, https, http2, http3, tcp, or udp.
- `EntryPort` (number, required): The port on which the load balancer instance will listen. (e.g., 80, 443)
- `TargetProtocol` (string, required): The protocol used for traffic from the load balancer to the backend Droplets. The possible values are: http, https, http2, tcp, or udp
- `TargetPort` (number, required): The port on the backend Droplets to which the load balancer will send traffic.
- `TlsPassthrough` (bool, optional): A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets.

---


### Reserved IPs

Expand Down Expand Up @@ -273,6 +366,6 @@ This directory contains tools and resources for managing DigitalOcean networking
- All resource identifiers (IDs, names, IPs) must be replaced with actual values in your queries.
- All responses are returned in JSON format for easy parsing and integration.
- For endpoints that require an ID, name, or IP, replace the placeholder with the appropriate value.
- Use the tools to automate and manage all aspects of networking from domains and DNS to VPCs, firewalls, and advanced partner connectivity.
- Use the tools to automate and manage all aspects of networking from domains and DNS to VPCs, firewalls, load balancers, and advanced partner connectivity.

---
2 changes: 1 addition & 1 deletion pkg/registry/networking/generate.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
package networking

//go:generate mockgen -destination=./mocks.go -package networking github.com/digitalocean/godo CertificatesService,DomainsService,FirewallsService,PartnerAttachmentService,ReservedIPsService,ReservedIPV6sService,ReservedIPActionsService,ReservedIPV6ActionsService,VPCsService
//go:generate mockgen -destination=./mocks.go -package networking github.com/digitalocean/godo CertificatesService,DomainsService,FirewallsService,LoadBalancersService,PartnerAttachmentService,ReservedIPsService,ReservedIPV6sService,ReservedIPActionsService,ReservedIPV6ActionsService,VPCsService,BYOIPPrefixesService
Loading