A Model Context Protocol (MCP) server that provides access to Redis database operations.
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
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) |
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
}
}
}
-
--redis-host
: Redis server host (default: localhost) -
--redis-port
: Redis server port (default: 6379)
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
}
}