Redis

Um servidor para interagir com bancos de dados Redis.

Documentação

Servidor MCP Redis

smithery badge

Um servidor Model Context Protocol (MCP) que fornece acesso a operações de banco de dados Redis.

Redis Server MCP server

Estrutura do Projeto

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

Ferramentas Disponíveis

FerramentaTipoDescriçãoEsquema de Entrada
hmsetComando de HashDefine múltiplos campos de hash com múltiplos valoreskey: string (chave do hash)
fields: objeto (pares campo-valor a definir)
hgetComando de HashObtém o valor de um campo de hashkey: string (chave do hash)
field: string (campo a obter)
hgetallComando de HashObtém todos os campos e valores de um hashkey: string (chave do hash)
scanComando de ChaveEscaneia chaves Redis que correspondem a um padrãopattern: string (padrão a corresponder, ex.: "user:*")
count: número, opcional (quantidade de chaves a retornar)
setComando de StringDefine valor de string com opções opcionais NX e PXkey: string (chave a definir)
value: string (valor a definir)
nx: booleano, opcional (definir apenas se não existir)
px: número, opcional (expiração em milissegundos)
getComando de StringObtém valor de stringkey: string (chave a obter)
delComando de ChaveExclui uma chavekey: string (chave a excluir)
zaddComando de Conjunto OrdenadoAdiciona um ou mais membros a um conjunto ordenadokey: string (chave do conjunto ordenado)
members: array de objetos com score: número e value: string
zrangeComando de Conjunto OrdenadoRetorna um intervalo de membros de um conjunto ordenado por índicekey: string (chave do conjunto ordenado)
start: número (índice inicial)
stop: número (índice final)
withScores: booleano, opcional (incluir pontuações na saída)
zrangebyscoreComando de Conjunto OrdenadoRetorna membros de um conjunto ordenado com pontuações entre mínimo e máximokey: string (chave do conjunto ordenado)
min: número (pontuação mínima)
max: número (pontuação máxima)
withScores: booleano, opcional (incluir pontuações na saída)
zremComando de Conjunto OrdenadoRemove um ou mais membros de um conjunto ordenadokey: string (chave do conjunto ordenado)
members: array de strings (membros a remover)
saddComando de ConjuntoAdiciona um ou mais membros a um conjuntokey: string (chave do conjunto)
members: array de strings (membros a adicionar ao conjunto)
smembersComando de ConjuntoObtém todos os membros de um conjuntokey: string (chave do conjunto)

Uso

Configure no seu cliente MCP (ex.: Claude Desktop, Cline):

{
  "mcpServers": {
    "redis": {
      "command": "npx",
      "args": ["redis-mcp", "--redis-host", "localhost", "--redis-port", "6379"],
      "disabled": false
    }
  }
}

Argumentos de Linha de Comando

  • --redis-host: host do servidor Redis (padrão: localhost)
  • --redis-port: porta do servidor Redis (padrão: 6379)

Instalação via Smithery

Para instalar o Redis Server para Claude Desktop automaticamente via Smithery:

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

Desenvolvimento

Para adicionar uma nova ferramenta Redis:

  1. Crie uma nova classe de ferramenta em src/tools/ estendendo RedisTool
  2. Defina a interface da ferramenta em src/interfaces/types.ts
  3. Registre a ferramenta em src/tools/tool_registry.ts

Exemplo de implementação de ferramenta:

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
  }
}

Executando avaliações

O pacote de avaliações carrega um cliente mcp que então executa o arquivo index.ts, portanto não há necessidade de recompilar entre testes. Você pode carregar variáveis de ambiente prefixando o comando npx. Documentação completa pode ser encontrada aqui.

OPENAI_API_KEY=your-key  npx mcp-eval src/evals/evals.ts src/tools/zrangebyscore_tool.ts

Licença

MIT: https://opensource.org/license/mit