Skip to main content
Glama

DiceDB MCP

by pottekkat
MIT License
5
  • Linux
  • Apple
del.go1.66 kB
package tools import ( "context" "fmt" "strconv" "github.com/dicedb/dicedb-go/wire" "github.com/mark3labs/mcp-go/mcp" "github.com/pottekkat/dicedb-mcp/internal/utils" ) // NewDelTool creates a new DEL tool for DiceDB func NewDelTool() mcp.Tool { return mcp.NewTool("del", mcp.WithDescription("Delete one or more keys from DiceDB"), utils.CommonURLParam(), mcp.WithArray("keys", mcp.Items(map[string]any{"type": "string"}), mcp.Required(), mcp.Description("The keys to delete from DiceDB"), ), ) } // HandleDelTool handles the DEL tool request func HandleDelTool(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { keys, ok := request.Params.Arguments["keys"].([]any) if !ok || len(keys) == 0 { return nil, fmt.Errorf("missing or empty keys parameter") } // Convert the keys to strings stringKeys := make([]string, len(keys)) for i, key := range keys { stringKeys[i] = fmt.Sprintf("%v", key) } client, err := utils.GetClientFromRequest(request) if err != nil { return nil, err } resp := client.Fire(&wire.Command{ Cmd: "DEL", Args: stringKeys, }) if resp.Err != "" { return nil, fmt.Errorf("DiceDB error: %s", resp.Err) } value := utils.FormatDiceDBResponse(resp) // The response is the number of keys deleted count, err := strconv.Atoi(value) if err != nil { return nil, fmt.Errorf("unexpected response format: %s", value) } if count == 0 { return mcp.NewToolResultText("No keys were deleted"), nil } else if count == 1 { return mcp.NewToolResultText("Deleted 1 key"), nil } return mcp.NewToolResultText(fmt.Sprintf("Deleted %d keys", count)), nil }

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/pottekkat/dicedb-mcp'

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