# Redis MCP Server

A professional implementation of a Redis server with MCP (Model Control Protocol) integration, containerized with Docker.

## Features

- Redis server with persistence
- MCP server integration for Redis operations
- Docker and Docker Compose support
- Comprehensive error handling and logging
- Environment-based configuration
- Health checks for Redis service

## Prerequisites

- Docker
- Docker Compose

## Quick Start

1. Clone the repository:
```bash
git clone https://github.com/cbuitragoh/customRedis.git
cd customredis
```

2. Start the services:
```bash
docker-compose up -d
```

3. Check the logs:
```bash
docker-compose logs -f
```

## Available Redis Operations

The MCP server provides the following Redis operations:

- `set_redis_key(key: str, value: str)`: Set a key-value pair
- `get_redis_key(key: str)`: Retrieve a value by key
- `delete_redis_key(key: str)`: Delete a key
- `list_redis_keys(pattern: str = '*')`: List all keys matching a pattern

## Configuration

The application can be configured through environment variables:

- `REDIS_HOST`: Redis server host (default: redis)
- `REDIS_PORT`: Redis server port (default: 6379)
- `REDIS_DB`: Redis database number (default: 0)
- `LOG_LEVEL`: Logging level (default: INFO)

## Development

### Local Development

1. Create a virtual environment:
```bash
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
```

2. Install dependencies:
```bash
pip install -r requirements.txt
```

3. Run the server:
```bash
python src/server.py
```

### Docker Development

1. Build the image:
```bash
docker-compose build
```

2. Run the services:
```bash
docker-compose up
```

## Project Structure

```
.
├── src/
│   └── server.py      # Main server implementation
├── Dockerfile         # Docker configuration
├── docker-compose.yml # Docker Compose configuration
├── requirements.txt   # Python dependencies
├── .env              # Environment variables
└── README.md         # This file
```

## Error Handling

The application includes comprehensive error handling:
- Connection errors
- Redis operation errors
- Server startup/shutdown errors
- Graceful shutdown on keyboard interrupt

## Logging

The application uses Python's logging module with the following features:
- Timestamp-based log entries
- Different log levels (INFO, WARNING, ERROR)
- Detailed error messages
- Operation success/failure logging

## Using with Claude Desktop

To use this Redis MCP server with Claude Desktop, add the following configuration to your Claude Desktop settings:

```json
{
  "mcpServers": {
    "redis": {
            "command": "docker",
            "args": [
                "run", 
                "-i",
                "--rm",
                "--network",
                "customredis_redis-network",
                "customredis-mcp-server"]
    }
  }
}
```

This configuration:
- Uses Docker to run the Redis MCP server
- Connects to Redis using the host machine's Redis instance
- Runs in interactive mode (-i)
- Removes the container after use (--rm)
- Connect the MCP server to same network to Redis container

Make sure:
1. Redis is running in container from docker-compose redis service
2. The Redis port (6379) is accessible
3. Docker is running on your system

## License

MIT License
