Skip to main content
Glama
rohit-kaundal

DigitalOcean MCP Server

images.go3.6 kB
package handlers import ( "context" "fmt" "strconv" "github.com/digitalocean/godo" mcp_golang "github.com/metoro-io/mcp-golang" ) func (h *Handler) ListImages(imageType string, isPublic bool) (*mcp_golang.ToolResponse, error) { client := h.doClient.GetClient() listOptions := &godo.ListOptions{} var images []godo.Image var err error switch imageType { case "distribution": images, _, err = client.Images.ListDistribution(context.Background(), listOptions) case "application": images, _, err = client.Images.ListApplication(context.Background(), listOptions) case "user": images, _, err = client.Images.ListUser(context.Background(), listOptions) default: // List all images images, _, err = client.Images.List(context.Background(), listOptions) } if err != nil { return h.HandleError(err, "list_images") } return h.HandleSuccess(images, "list_images") } func (h *Handler) GetImage(imageID string) (*mcp_golang.ToolResponse, error) { client := h.doClient.GetClient() // Try to parse as int ID first, then by slug if parsing fails if id, err := strconv.Atoi(imageID); err == nil { image, _, err := client.Images.GetByID(context.Background(), id) if err == nil { return h.HandleSuccess(image, "get_image") } } // Try by slug image, _, err := client.Images.GetBySlug(context.Background(), imageID) if err != nil { return h.HandleError(err, "get_image") } return h.HandleSuccess(image, "get_image") } func (h *Handler) UpdateImage(imageID, name string) (*mcp_golang.ToolResponse, error) { client := h.doClient.GetClient() id, err := strconv.Atoi(imageID) if err != nil { return h.HandleError(fmt.Errorf("invalid image ID: %s", imageID), "update_image") } updateRequest := &godo.ImageUpdateRequest{ Name: name, } image, _, err := client.Images.Update(context.Background(), id, updateRequest) if err != nil { return h.HandleError(err, "update_image") } return h.HandleSuccess(image, "update_image") } func (h *Handler) DeleteImage(imageID string) (*mcp_golang.ToolResponse, error) { client := h.doClient.GetClient() id, err := strconv.Atoi(imageID) if err != nil { return h.HandleError(fmt.Errorf("invalid image ID: %s", imageID), "delete_image") } _, err = client.Images.Delete(context.Background(), id) if err != nil { return h.HandleError(err, "delete_image") } return h.HandleSuccess(map[string]string{ "status": "success", "message": fmt.Sprintf("Image %s deleted successfully", imageID), }, "delete_image") } func (h *Handler) TransferImage(imageID, regionSlug string) (*mcp_golang.ToolResponse, error) { client := h.doClient.GetClient() id, err := strconv.Atoi(imageID) if err != nil { return h.HandleError(fmt.Errorf("invalid image ID: %s", imageID), "transfer_image") } transferRequest := &godo.ActionRequest{ "type": "transfer", "region": regionSlug, } action, _, err := client.ImageActions.Transfer(context.Background(), id, transferRequest) if err != nil { return h.HandleError(err, "transfer_image") } return h.HandleSuccess(action, "transfer_image") } func (h *Handler) ConvertImageToSnapshot(imageID string) (*mcp_golang.ToolResponse, error) { client := h.doClient.GetClient() id, err := strconv.Atoi(imageID) if err != nil { return h.HandleError(fmt.Errorf("invalid image ID: %s", imageID), "convert_image_to_snapshot") } action, _, err := client.ImageActions.Convert(context.Background(), id) if err != nil { return h.HandleError(err, "convert_image_to_snapshot") } return h.HandleSuccess(action, "convert_image_to_snapshot") }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rohit-kaundal/digitalocean-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server