A FastMCP-based server with SSE support for Redis operations
Project description
Redis MCP Server
A Model Context Protocol (MCP) server for Redis operations built with FastMCP.
Features
- Core Redis operations: get, set, delete, list
- Bulk operations: mget, mset
- Pattern-based key scanning
- Connection pooling for efficient Redis access
- Multiple transport support (stdio, SSE, streamable-http)
- Environment-based configuration
- Type hints and comprehensive error handling
Installation
From PyPI
pip install redis-mcp
Or using uv:
uv tool install redis-mcp
From Source
# Clone the repository
git clone https://github.com/yourusername/redis-mcp.git
cd redis-mcp
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install the package
pip install -e .
Configuration
The server can be configured via environment variables:
REDIS_HOST: Redis server hostname (default: localhost)REDIS_PORT: Redis server port (default: 6379)REDIS_DB: Redis database number (default: 0)REDIS_PASSWORD: Redis password (optional)REDIS_USERNAME: Redis username (optional)
Usage
As a CLI Tool
# Using stdio transport (default)
redis-mcp
# Using SSE transport
redis-mcp --transport sse
# With custom Redis connection
redis-mcp --host redis.example.com --port 6380 --db 1
In Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"redis": {
"command": "uvx",
"args": ["redis-mcp"],
"env": {
"REDIS_HOST": "localhost",
"REDIS_PORT": "6379"
}
}
}
}
Available Tools
- get: Retrieve a value by key
- set: Store a key-value pair with optional expiry and conditions
- delete: Remove one or more keys
- list: List keys matching a pattern
- mget: Get multiple values in one operation
- mset: Set multiple key-value pairs in one operation
- scan: Iterate through keys matching a pattern without blocking
Example Usage
from fastmcp import Client
async def main():
async with Client("http://localhost:8000/sse") as client:
# Set a value
await client.call_tool("set", {"key": "user:123", "value": "John Doe"})
# Get a value
result = await client.call_tool("get", {"key": "user:123"})
print(result) # "John Doe"
# List keys
keys = await client.call_tool("list", {"pattern": "user:*"})
print(keys) # ["user:123"]
Development
Setup
# Install development dependencies
pip install -e ".[dev]"
Running Tests
pytest
Code Quality
# Format code
black .
isort .
# Type checking
mypy .
# Linting
ruff check .
Requirements
- Python 3.10+
- Redis server
- FastMCP 2.3.3+
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
redis_mcp-0.1.2.tar.gz
(41.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file redis_mcp-0.1.2.tar.gz.
File metadata
- Download URL: redis_mcp-0.1.2.tar.gz
- Upload date:
- Size: 41.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
553be2ef24f83d36d2272b1c8183e758777c81b57957c68387e3e7ec5d713765
|
|
| MD5 |
51c31f9c94ca599e09dd1a882a1d1418
|
|
| BLAKE2b-256 |
adfe1e813211d00de46d490cf09be5d42270c761ce7e6481975e140ae3efa719
|
File details
Details for the file redis_mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: redis_mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cd9040bce218b8ef923908a769dea41229eeb03919651c3aaa7653f6c683ccd
|
|
| MD5 |
13fd9e652e7418a8a4a8d005916100de
|
|
| BLAKE2b-256 |
366ce8dc1733167df5a06874a0893d255d16b445006c7505d41d6bbca2681af7
|