Redis MCP Server
A Model Context Protocol (MCP) server that provides access to Redis database operations.
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
Tool | Type | Description | Input Schema |
---|---|---|---|
hmset | Hash Command | Set multiple hash fields to multiple values | key : string (Hash key)fields : object (Field-value pairs to set) |
hget | Hash Command | Get the value of a hash field | key : string (Hash key)field : string (Field to get) |
hgetall | Hash Command | Get all fields and values in a hash | key : string (Hash key) |
scan | Key Command | Scan Redis keys matching a pattern | pattern : string (Pattern to match, e.g., βuser:*β)count : number, optional (Number of keys to return) |
set | String Command | Set string value with optional NX and PX options | key : string (Key to set)value : string (Value to set)nx : boolean, optional (Only set if not exists)px : number, optional (Expiry in milliseconds) |
get | String Command | Get string value | key : string (Key to get) |
del | Key Command | Delete a key | key : string (Key to delete) |
zadd | Sorted Set Command | Add one or more members to a sorted set | key : string (Sorted set key)members : array of objects with score : number and value : string |
zrange | Sorted Set Command | Return a range of members from a sorted set by index | key : string (Sorted set key)start : number (Start index)stop : number (Stop index)withScores : boolean, optional (Include scores in output) |
zrangebyscore | Sorted Set Command | Return members from a sorted set with scores between min and max | key : string (Sorted set key)min : number (Minimum score)max : number (Maximum score)withScores : boolean, optional (Include scores in output) |
zrem | Sorted Set Command | Remove one or more members from a sorted set | key : string (Sorted set key)members : array of strings (Members to remove) |
sadd | Set Command | Add one or more members to a set | key : string (Set key)members : array of strings (Members to add to the set) |
smembers | Set Command | Get all members in a set | key : string (Set key) |
Usage
Configure in your MCP client (e.g., Claude Desktop, Cline):
{
"mcpServers": {
"redis": {
"command": "npx",
"args": ["redis-mcp", "--redis-host", "localhost", "--redis-port", "6379"],
"disabled": false
}
}
}
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:
- Create a new tool class in
src/tools/
extendingRedisTool
- Define the toolβs interface in
src/interfaces/types.ts
- 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
}
}
License
Last updated on