Labsco
farhankaz logo

Redis

โ˜… 6

from farhankaz

A server for interacting with Redis databases.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup

Redis MCP Server

smithery badge

A Model Context Protocol (MCP) server that provides access to Redis database operations.

Redis Server MCP server

Project Structure

src/
โ”œโ”€โ”€ interfaces/
โ”‚   โ””โ”€โ”€ types.ts           # Shared TypeScript interfaces and types
โ”œโ”€โ”€ tools/
โ”‚   โ”œโ”€โ”€ base_tool.ts       # Abstract base class for Redis tools
โ”‚   โ”œโ”€โ”€ tool_registry.ts   # Registry managing all available Redis tools
โ”‚   โ”œโ”€โ”€ hmset_tool.ts      # HMSET Redis operation
โ”‚   โ”œโ”€โ”€ hget_tool.ts       # HGET Redis operation
โ”‚   โ”œโ”€โ”€ hgetall_tool.ts    # HGETALL Redis operation
โ”‚   โ”œโ”€โ”€ scan_tool.ts       # SCAN Redis operation
โ”‚   โ”œโ”€โ”€ set_tool.ts        # SET Redis operation
โ”‚   โ”œโ”€โ”€ get_tool.ts        # GET Redis operation
โ”‚   โ”œโ”€โ”€ del_tool.ts        # DEL Redis operation
โ”‚   โ”œโ”€โ”€ zadd_tool.ts       # ZADD Redis operation
โ”‚   โ”œโ”€โ”€ zrange_tool.ts     # ZRANGE Redis operation
โ”‚   โ”œโ”€โ”€ zrangebyscore_tool.ts # ZRANGEBYSCORE Redis operation
โ”‚   โ””โ”€โ”€ zrem_tool.ts       # ZREM Redis operation
โ””โ”€โ”€ redis_server.ts        # Main server implementation

Available Tools

ToolTypeDescriptionInput Schema
hmsetHash CommandSet multiple hash fields to multiple valueskey: string (Hash key)
fields: object (Field-value pairs to set)
hgetHash CommandGet the value of a hash fieldkey: string (Hash key)
field: string (Field to get)
hgetallHash CommandGet all fields and values in a hashkey: string (Hash key)
scanKey CommandScan Redis keys matching a patternpattern: string (Pattern to match, e.g., "user:*")
count: number, optional (Number of keys to return)
setString CommandSet string value with optional NX and PX optionskey: string (Key to set)
value: string (Value to set)
nx: boolean, optional (Only set if not exists)
px: number, optional (Expiry in milliseconds)
getString CommandGet string valuekey: string (Key to get)
delKey CommandDelete a keykey: string (Key to delete)
zaddSorted Set CommandAdd one or more members to a sorted setkey: string (Sorted set key)
members: array of objects with score: number and value: string
zrangeSorted Set CommandReturn a range of members from a sorted set by indexkey: string (Sorted set key)
start: number (Start index)
stop: number (Stop index)
withScores: boolean, optional (Include scores in output)
zrangebyscoreSorted Set CommandReturn members from a sorted set with scores between min and maxkey: string (Sorted set key)
min: number (Minimum score)
max: number (Maximum score)
withScores: boolean, optional (Include scores in output)
zremSorted Set CommandRemove one or more members from a sorted setkey: string (Sorted set key)
members: array of strings (Members to remove)
saddSet CommandAdd one or more members to a setkey: string (Set key)
members: array of strings (Members to add to the set)
smembersSet CommandGet all members in a setkey: string (Set key)

Command Line Arguments

  • --redis-host: Redis server host (default: localhost)
  • --redis-port: Redis server port (default: 6379)

Installing via Smithery

To install Redis Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install redis-mcp --client claude

Development

To add a new Redis tool:

  1. Create a new tool class in src/tools/ extending RedisTool
  2. Define the tool's interface in src/interfaces/types.ts
  3. Register the tool in src/tools/tool_registry.ts

Example tool implementation:

export class MyTool extends RedisTool {
  name = 'mytool';
  description = 'Description of what the tool does';
  inputSchema = {
    type: 'object',
    properties: {
      // Define input parameters
    },
    required: ['requiredParam']
  };

  validateArgs(args: unknown): args is MyToolArgs {
    // Implement argument validation
  }

  async execute(args: unknown, client: RedisClientType): Promise<ToolResponse> {
    // Implement tool logic
  }
}