Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 184 additions & 0 deletions GEMINI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
# Redis MCP Server Extension

This extension provides a natural language interface for managing and searching data in Redis through the Model Context Protocol (MCP).

## What this extension provides

The Redis MCP Server enables AI agents to efficiently interact with Redis databases using natural language commands. You can:

- **Store and retrieve data**: Cache items, store session data, manage configuration values
- **Work with data structures**: Manage hashes, lists, sets, sorted sets, and streams
- **Search and filter**: Perform efficient data retrieval and searching operations
- **Pub/Sub messaging**: Publish and subscribe to real-time message channels
- **JSON operations**: Store, retrieve, and manipulate JSON documents
- **Vector search**: Manage vector indexes and perform similarity searches

## Available Tools

### String Operations
- Set, get, and manage string values with optional expiration
- Useful for caching, session data, and simple configuration

### Hash Operations
- Store field-value pairs within a single key
- Support for vector embeddings storage
- Ideal for user profiles, product information, and structured objects

### List Operations
- Append, pop, and manage list items
- Perfect for queues, message brokers, and activity logs

### Set Operations
- Add, remove, and list unique set members
- Perform set operations like intersection and union
- Great for tracking unique values and tags

### Sorted Set Operations
- Manage score-based ordered data
- Ideal for leaderboards, priority queues, and time-based analytics

### Pub/Sub Operations
- Publish messages to channels and subscribe to receive them
- Real-time notifications and chat applications

### Stream Operations
- Add, read, and delete from data streams
- Event sourcing, activity feeds, and sensor data logging

### JSON Operations
- Store, retrieve, and manipulate JSON documents
- Complex nested data structures with path-based access

### Vector Search
- Manage vector indexes and perform similarity searches
- AI/ML applications and semantic search

### Server Management
- Retrieve database information and statistics
- Monitor Redis server status and performance

## Usage Examples

You can interact with Redis using natural language:

- "Store this user session data with a 1-hour expiration"
- "Add this item to the shopping cart list"
- "Search for similar vectors in the product embeddings"
- "Publish a notification to the alerts channel"
- "Get the top 10 scores from the leaderboard"
- "Cache this API response for 5 minutes"

## Configuration

The extension connects to Redis using a Redis URL. Default configuration connects to `redis://127.0.0.1:6379/0`.

### Primary Configuration: Redis URL

Set the `REDIS_URL` environment variable to configure your Redis connection:

```bash
export REDIS_URL=redis://[username:password@]host:port/database
```

### Configuration Examples

**Local Redis (no authentication):**
```bash
export REDIS_URL=redis://127.0.0.1:6379/0
# or
export REDIS_URL=redis://localhost:6379/0
```

**Redis with password:**
```bash
export REDIS_URL=redis://:mypassword@localhost:6379/0
```

**Redis with username and password:**
```bash
export REDIS_URL=redis://myuser:mypassword@localhost:6379/0
```

**Redis Cloud:**
```bash
export REDIS_URL=redis://default:[email protected]:12345/0
```

**Redis with SSL:**
```bash
export REDIS_URL=rediss://user:[email protected]:6380/0
```

**Redis with SSL and certificates:**
```bash
export REDIS_URL=rediss://user:pass@host:6380/0?ssl_cert_reqs=required&ssl_ca_certs=/path/to/ca.pem
```

**AWS ElastiCache:**
```bash
export REDIS_URL=redis://my-cluster.abc123.cache.amazonaws.com:6379/0
```

**Azure Cache for Redis:**
```bash
export REDIS_URL=rediss://mycache.redis.cache.windows.net:6380/0?ssl_cert_reqs=required
```

### Backward Compatibility: Individual Environment Variables

If `REDIS_URL` is not set, the extension will fall back to individual environment variables:

- `REDIS_HOST` - Redis hostname (default: 127.0.0.1)
- `REDIS_PORT` - Redis port (default: 6379)
- `REDIS_DB` - Database number (default: 0)
- `REDIS_USERNAME` - Redis username (optional)
- `REDIS_PWD` - Redis password (optional)
- `REDIS_SSL` - Enable SSL: "true" or "false" (default: false)
- `REDIS_SSL_CA_PATH` - Path to CA certificate file
- `REDIS_SSL_KEYFILE` - Path to SSL key file
- `REDIS_SSL_CERTFILE` - Path to SSL certificate file
- `REDIS_SSL_CERT_REQS` - SSL certificate requirements (default: "required")
- `REDIS_SSL_CA_CERTS` - Path to CA certificates file
- `REDIS_CLUSTER_MODE` - Enable cluster mode: "true" or "false" (default: false)

**Example using individual variables:**
```bash
export REDIS_HOST=my-redis-server.com
export REDIS_PORT=6379
export REDIS_PWD=mypassword
export REDIS_SSL=true
```

### Configuration Priority

1. **`REDIS_URL`** (highest priority) - If set, this will be used exclusively
2. **Individual environment variables** - Used as fallback when `REDIS_URL` is not set
3. **Built-in defaults** - Used when no configuration is provided

### Configuration Methods

1. **Environment Variables**: Set variables in your shell or system
2. **`.env` File**: Create a `.env` file in your project directory
3. **System Environment**: Set variables at the system level
4. **Shell Profile**: Add exports to your `.bashrc`, `.zshrc`, etc.

### No Configuration Required

If you don't set any configuration, the extension will automatically connect to a local Redis instance at `redis://127.0.0.1:6379/0`.

### Advanced SSL Configuration

For production environments with custom SSL certificates, you can use query parameters in the Redis URL:

```bash
export REDIS_URL=rediss://user:pass@host:6380/0?ssl_cert_reqs=required&ssl_ca_path=/path/to/ca.pem&ssl_keyfile=/path/to/key.pem&ssl_certfile=/path/to/cert.pem
```

Supported SSL query parameters:
- `ssl_cert_reqs` - Certificate requirements: "required", "optional", "none"
- `ssl_ca_certs` - Path to CA certificates file
- `ssl_ca_path` - Path to CA certificate file
- `ssl_keyfile` - Path to SSL private key file
- `ssl_certfile` - Path to SSL certificate file

For detailed configuration options and Redis URL format, see the main Redis MCP Server documentation.
15 changes: 15 additions & 0 deletions gemini-extension.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "mcp-redis",
"version": "0.1.0",
"mcpServers": {
"redis": {
"command": "uvx",
"args": [
"--from",
"redis-mcp-server@latest",
"redis-mcp-server",
"--url", "${REDIS_URL}"
]
}
}
}
Loading