Redis MCP Server
Use with GitHub Copilot in VS Code for natural language interaction with Redis.
Use with OpenAI Agents SDK for natural language interaction with Redis.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Redis MCP Server Store the user session with a TTL of 1 hour"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Redis MCP Server
Overview
The Redis MCP Server is a natural language interface designed for agentic applications to efficiently manage and search data in Redis. It integrates seamlessly with MCP (Model Content Protocol) clients, enabling AI-driven workflows to interact with structured and unstructured data in Redis. Using this MCP Server, you can ask questions like:
"Store the entire conversation in a stream"
"Cache this item"
"Store the session with an expiration time"
"Index and search this vector"
Related MCP server: Redis MCP
Table of Contents
Features
Natural Language Queries: Enables AI agents to query and update Redis using natural language.
Seamless MCP Integration: Works with any MCP client for smooth communication.
Full Redis Support: Handles hashes, lists, sets, sorted sets, streams, and more.
Search & Filtering: Supports efficient data retrieval and searching in Redis.
Lite Mode: Lightweight mode for maximum flexibility with generic Redis command execution.
Scalable & Lightweight: Designed for high-performance data operations.
The Redis MCP Server supports the
stdiotransport. Support to thestremable-httptransport will be added in the future.
Tools
This MCP Server provides tools to manage the data stored in Redis.
stringtools to set, get strings with expiration. Useful for storing simple configuration values, session data, or caching responses.hashtools to store field-value pairs within a single key. The hash can store vector embeddings. Useful for representing objects with multiple attributes, user profiles, or product information where fields can be accessed individually.listtools with common operations to append and pop items. Useful for queues, message brokers, or maintaining a list of most recent actions.settools to add, remove and list set members. Useful for tracking unique values like user IDs or tags, and for performing set operations like intersection.sorted settools to manage data for e.g. leaderboards, priority queues, or time-based analytics with score-based ordering.pub/subfunctionality to publish messages to channels and subscribe to receive them. Useful for real-time notifications, chat applications, or distributing updates to multiple clients.streamstools to add, read, and delete from data streams. Useful for event sourcing, activity feeds, or sensor data logging with consumer groups support.JSONtools to store, retrieve, and manipulate JSON documents in Redis. Useful for complex nested data structures, document databases, or configuration management with path-based access.
Additional tools.
query enginetools to manage vector indexes and perform vector searchserver managementtool to retrieve information about the databaseredis executetools for generic Redis command execution (available in Lite Mode)
Lite Mode
Lite Mode is a lightweight operating mode that provides maximum flexibility by offering only generic Redis command execution tools. When enabled, all specialized data-type tools are disabled, and you get access to universal Redis command tools that can execute any Redis command.
Features
Disabled by Default: Lite Mode is disabled by default (
LITE_MODE=false)Minimal Tool Set: Only 2 generic command execution tools instead of 11+ specialized tools
Maximum Flexibility: Execute any Redis command without being limited to predefined tools
Environment Controlled: Simply set an environment variable to enable/disable
Restart Required: Changes take effect after server restart
Available Tools in Lite Mode
When Lite Mode is enabled, you get access to these two powerful tools:
redis_execute_command: Execute Redis commands with structured arguments{ "command": "SET", "args": ["mykey", "myvalue"] }redis_execute_raw_command: Execute Redis commands from string format{ "command_str": "SET mykey myvalue" }
Enabling Lite Mode
Using Environment Variables
# Enable Lite Mode
export LITE_MODE=true
# Disable Lite Mode (default)
export LITE_MODE=falseWith uvx
# Enable Lite Mode with uvx
LITE_MODE=true uvx redis-mcp-server --url redis://localhost:6379/0
# Or with environment file
echo "LITE_MODE=true" > .env
uvx --env-file .env redis-mcp-server --url redis://localhost:6379/0In MCP Client Configuration
{
"mcpServers": {
"redis": {
"command": "uvx",
"args": [
"--from",
"redis-mcp-server@latest",
"redis-mcp-server",
"--url",
"redis://localhost:6379/0"
],
"env": {
"LITE_MODE": "true"
}
}
}
}Usage Examples
Basic Operations
# String operations
redis_execute_command("SET", ["key", "value"])
redis_execute_command("GET", ["key"])
# Hash operations
redis_execute_command("HSET", ["myhash", "field", "value"])
redis_execute_command("HGETALL", ["myhash"])
# List operations
redis_execute_command("LPUSH", ["mylist", "item1", "item2"])
redis_execute_command("LRANGE", ["mylist", 0, -1])
# Set operations
redis_execute_command("SADD", ["myset", "member1", "member2"])
redis_execute_command("SMEMBERS", ["myset"])Advanced Operations
# Sorted sets
redis_execute_command("ZADD", ["myscores", 100, "player1", 200, "player2"])
redis_execute_command("ZRANGE", ["myscores", 0, -1, "WITHSCORES"])
# JSON operations (requires RedisJSON module)
redis_execute_command("JSON.SET", ["mydoc", ".", "{\"name\": \"test\"}"])
redis_execute_command("JSON.GET", ["mydoc", "."])
# Stream operations
redis_execute_command("XADD", ["mystream", "*", "field1", "value1", "field2", "value2"])
redis_execute_command("XRANGE", ["mystream", "-", "+"])Tool Comparison
Mode | Available Tools | Tool Type | Use Case |
Normal Mode | 11+ | Specialized data-type tools | User-friendly, guided operations |
Lite Mode | 2 | Generic command execution | Maximum flexibility, any Redis command |
When to Use Lite Mode
Advanced Users: When you need access to specific Redis commands not covered by standard tools
Complex Operations: For multi-step operations that require exact command control
Testing & Development: When testing new Redis features or commands
Minimal Setup: When you want a simpler, more lightweight toolset
Custom Workflows: When building custom automation that needs precise Redis command control
Valid Environment Variable Values
True Values: true, t, 1, TRUE, T
False Values: false, f, 0, FALSE, F, or any other value
Performance Considerations
Faster Startup: Lite Mode loads fewer tools, resulting in faster server startup
Lower Memory Usage: Reduced tool footprint means lower memory consumption
Simplified Interface: Fewer tools mean simpler tool discovery and selection
Installation
The Redis MCP Server is available as a PyPI package and as direct installation from the GitHub repository.
From PyPI (recommended)
Configuring the latest Redis MCP Server version from PyPI, as an example, can be done importing the following JSON configuration in the desired framework or tool.
The uvx command will download the server on the fly (if not cached already), create a temporary environment, and then run it.
{
"mcpServers": {
"RedisMCPServer": {
"command": "uvx",
"args": [
"--from",
"redis-mcp-server@latest",
"redis-mcp-server",
"--url",
"\"redis://localhost:6379/0\""
]
}
}
}URL specification
The format to specify the --url argument follows the redis and rediss schemes:
redis://user:secret@localhost:6379/0?foo=bar&qux=bazAs an example, you can easily connect to a localhost server with:
redis://localhost:6379/0Where 0 is the logical database you'd like to connect to.
For an encrypted connection to the database (e.g., connecting to a Redis Cloud database), you'd use the rediss scheme.
rediss://user:secret@localhost:6379/0?foo=bar&qux=bazTo verify the server's identity, specify ssl_ca_certs.
rediss://user:secret@hostname:port?ssl_cert_reqs=required&ssl_ca_certs=path_to_the_certificateFor an unverified connection, set ssl_cert_reqs to none
rediss://user:secret@hostname:port?ssl_cert_reqs=noneConfigure your connection using the available options in the section "Available CLI Options".
Testing the PyPI package
You can install the package as follows:
pip install redis-mcp-serverAnd start it using uv the package in your environment.
uv python install 3.13
uv sync
uv run redis-mcp-server --url redis://localhost:6379/0However, starting the MCP Server is most useful when delegate to the framework or tool where this MCP Server is configured.
From GitHub
You can configure the desired Redis MCP Server version with uvx, which allows you to run it directly from GitHub (from a branch, or use a tagged release).
It is recommended to use a tagged release, the
mainbranch is under active development and may contain breaking changes.
As an example, you can execute the following command to run the 0.2.0 release:
uvx --from git+https://github.com/redis/mcp-redis.git@0.2.0 redis-mcp-server --url redis://localhost:6379/0Check the release notes for the latest version in the Releases section. Additional examples are provided below.
# Run with Redis URI
uvx --from git+https://github.com/redis/mcp-redis.git redis-mcp-server --url redis://localhost:6379/0
# Run with Redis URI and SSL
uvx --from git+https://github.com/redis/mcp-redis.git redis-mcp-server --url "rediss://<USERNAME>:<PASSWORD>@<HOST>:<PORT>?ssl_cert_reqs=required&ssl_ca_certs=<PATH_TO_CERT>"
# Run with individual parameters
uvx --from git+https://github.com/redis/mcp-redis.git redis-mcp-server --host localhost --port 6379 --password mypassword
# See all options
uvx --from git+https://github.com/redis/mcp-redis.git redis-mcp-server --helpDevelopment Installation
For development or if you prefer to clone the repository:
# Clone the repository
git clone https://github.com/redis/mcp-redis.git
cd mcp-redis
# Install dependencies using uv
uv venv
source .venv/bin/activate
uv sync
# Run with CLI interface
uv run redis-mcp-server --help
# Or run the main file directly (uses environment variables)
uv run src/main.pyOnce you cloned the repository, installed the dependencies and verified you can run the server, you can configure Claude Desktop or any other MCP Client to use this MCP Server running the main file directly (it uses environment variables). This is usually preferred for development. The following example is for Claude Desktop, but the same applies to any other MCP Client.
Specify your Redis credentials and TLS configuration
Retrieve your
uvcommand full path (e.g.which uv)Edit the
claude_desktop_config.jsonconfiguration fileon a MacOS, at
~/Library/Application\ Support/Claude/
{
"mcpServers": {
"redis": {
"command": "<full_path_uv_command>",
"args": [
"--directory",
"<your_mcp_server_directory>",
"run",
"src/main.py"
],
"env": {
"REDIS_HOST": "<your_redis_database_hostname>",
"REDIS_PORT": "<your_redis_database_port>",
"REDIS_PWD": "<your_redis_database_password>",
"REDIS_SSL": True|False,
"REDIS_SSL_CA_PATH": "<your_redis_ca_path>",
"REDIS_CLUSTER_MODE": True|False
}
}
}
}You can troubleshoot problems by tailing the log file.
tail -f ~/Library/Logs/Claude/mcp-server-redis.logWith Docker
You can use a dockerized deployment of this server. You can either build your own image or use the official Redis MCP Docker image.
If you'd like to build your own image, the Redis MCP Server provides a Dockerfile. Build this server's image with:
docker build -t mcp-redis .Finally, configure the client to create the container at start-up. An example for Claude Desktop is provided below. Edit the claude_desktop_config.json and add:
{
"mcpServers": {
"redis": {
"command": "docker",
"args": ["run",
"--rm",
"--name",
"redis-mcp-server",
"-i",
"-e", "REDIS_HOST=<redis_hostname>",
"-e", "REDIS_PORT=<redis_port>",
"-e", "REDIS_USERNAME=<redis_username>",
"-e", "REDIS_PWD=<redis_password>",
"mcp-redis"]
}
}
}To use the official Redis MCP Docker image, just replace your image name (mcp-redis in the example above) with mcp/redis.
Configuration
The Redis MCP Server can be configured in two ways: via command line arguments or via environment variables. The precedence is: command line arguments > environment variables > default values.
Redis ACL
You can configure Redis ACL to restrict the access to the Redis database. For example, to create a read-only user:
127.0.0.1:6379> ACL SETUSER readonlyuser on >mypassword ~* +@read -@writeConfigure the user via command line arguments or environment variables.
Configuration via command line arguments
When using the CLI interface, you can configure the server with command line arguments:
# Basic Redis connection
uvx --from redis-mcp-server@latest redis-mcp-server \
--host localhost \
--port 6379 \
--password mypassword
# Using Redis URI (simpler)
uvx --from redis-mcp-server@latest redis-mcp-server \
--url redis://user:pass@localhost:6379/0
# SSL connection
uvx --from redis-mcp-server@latest redis-mcp-server \
--url rediss://user:pass@redis.example.com:6379/0
# See all available options
uvx --from redis-mcp-server@latest redis-mcp-server --helpAvailable CLI Options:
--url- Redis connection URI (redis://user:pass@host:port/db)--host- Redis hostname (default: 127.0.0.1)--port- Redis port (default: 6379)--db- Redis database number (default: 0)--username- Redis username--password- Redis password--ssl- Enable SSL connection--ssl-ca-path- Path to CA certificate file--ssl-keyfile- Path to SSL key file--ssl-certfile- Path to SSL certificate file--ssl-cert-reqs- SSL certificate requirements (default: required)--ssl-ca-certs- Path to CA certificates file--cluster-mode- Enable Redis cluster mode
Configuration via Environment Variables
If desired, you can use environment variables. Defaults are provided for all variables.
Name | Description | Default Value |
| Redis IP or hostname |
|
| Redis port |
|
| Database | 0 |
| Default database username |
|
| Default database password | "" |
| Enables or disables SSL/TLS |
|
| CA certificate for verifying server | None |
| Client's private key file for client authentication | None |
| Client's certificate file for client authentication | None |
| Whether the client should verify the server's certificate |
|
| Path to the trusted CA certificates file | None |
| Enable Redis Cluster mode |
|
| Enable Lite Mode for generic Redis command execution |
|
There are several ways to set environment variables:
Using a
.envFile: Place a.envfile in your project directory with key-value pairs for each environment variable. Tools likepython-dotenv,pipenv, anduvcan automatically load these variables when running your application. This is a convenient and secure way to manage configuration, as it keeps sensitive data out of your shell history and version control (if.envis in.gitignore). For example, create a.envfile with the following content from the.env.examplefile provided in the repository:
cp .env.example .envThen edit the .env file to set your Redis configuration:
OR,
Setting Variables in the Shell: You can export environment variables directly in your shell before running your application. For example:
export REDIS_HOST=your_redis_host
export REDIS_PORT=6379
# Other variables will be set similarly...This method is useful for temporary overrides or quick testing.
Logging
The server uses Python's standard logging and is configured at startup. By default it logs at WARNING and above. You can change verbosity with the MCP_REDIS_LOG_LEVEL environment variable.
Accepted values (case-insensitive):
DEBUG,INFO,WARNING,ERROR,CRITICAL,NOTSETAliases supported:
WARN→WARNING,FATAL→CRITICALNumeric values are also accepted, including signed (e.g.,
"10","+20")Default when unset or unrecognized:
WARNING
Handler behavior
If the host (e.g.,
uv, VS Code, pytest) already installed console handlers, the server will NOT add its own; it only lowers overly-restrictive handler thresholds so your chosen level is not filtered out. It will never raise a handler's threshold.If no handlers are present, the server adds a single stderr StreamHandler with a simple format.
Examples
# See normal lifecycle messages
MCP_REDIS_LOG_LEVEL=INFO uv run src/main.py
# Very verbose for debugging
MCP_REDIS_LOG_LEVEL=DEBUG uvx --from redis-mcp-server@latest redis-mcp-server --url redis://localhost:6379/0In MCP client configs that support env, add it alongside your Redis settings. For example:
{
"mcpServers": {
"redis": {
"command": "uvx",
"args": ["--from", "redis-mcp-server@latest", "redis-mcp-server", "--url", "redis://localhost:6379/0"],
"env": {
"REDIS_HOST": "localhost",
"REDIS_PORT": "6379",
"MCP_REDIS_LOG_LEVEL": "INFO",
"LITE_MODE": "false"
}
}
}
}Integrations
Integrating this MCP Server to development frameworks like OpenAI Agents SDK, or with tools like Claude Desktop, VS Code, or Augment is described in the following sections.
OpenAI Agents SDK
Integrate this MCP Server with the OpenAI Agents SDK. Read the documents to learn more about the integration of the SDK with MCP.
Install the Python SDK.
pip install openai-agentsConfigure the OpenAI token:
export OPENAI_API_KEY="<openai_token>"And run the application.
python3.13 redis_assistant.pyYou can troubleshoot your agent workflows using the OpenAI dashboard.
Augment
The preferred way of configuring the Redis MCP Server in Augment is to use the Easy MCP feature.
You can also configure the Redis MCP Server in Augment manually by importing the server via JSON:
{
"mcpServers": {
"Redis MCP Server": {
"command": "uvx",
"args": [
"--from",
"redis-mcp-server@latest",
"redis-mcp-server",
"--url",
"redis://localhost:6379/0"
]
}
}
}Claude Desktop
The simplest way to configure MCP clients is using uvx. Add the following JSON to your claude_desktop_config.json, remember to provide the full path to uvx.
{
"mcpServers": {
"redis-mcp-server": {
"type": "stdio",
"command": "/Users/mortensi/.local/bin/uvx",
"args": [
"--from", "redis-mcp-server@latest",
"redis-mcp-server",
"--url", "redis://localhost:6379/0"
]
}
}
}VS Code with GitHub Copilot
To use the Redis MCP Server with VS Code, you must nable the agent mode tools. Add the following to your settings.json:
{
"chat.agent.enabled": true
}You can start the GitHub desired version of the Redis MCP server using uvx by adding the following JSON to your mcp.json file:
"servers": {
"redis": {
"type": "stdio",
"command": "uvx",
"args": [
"--from", "redis-mcp-server@latest",
"redis-mcp-server",
"--url", "redis://localhost:6379/0"
]
},
}Alternatively, you can start the server using uv and configure your mcp.json. This is usually desired for development.
// mcp.json
{
"servers": {
"redis": {
"type": "stdio",
"command": "<full_path_uv_command>",
"args": [
"--directory",
"<your_mcp_server_directory>",
"run",
"src/main.py"
],
"env": {
"REDIS_HOST": "<your_redis_database_hostname>",
"REDIS_PORT": "<your_redis_database_port>",
"REDIS_USERNAME": "<your_redis_database_username>",
"REDIS_PWD": "<your_redis_database_password>",
}
}
}
}For more information, see the VS Code documentation.
Tip: You can prompt Copilot chat to use the Redis MCP tools by including
#redisin your message.
Note: Starting with VS Code v1.102,
MCP servers are now stored in a dedicatedmcp.jsonfile instead ofsettings.json.
Testing
You can use the MCP Inspector for visual debugging of this MCP Server.
npx @modelcontextprotocol/inspector uv run src/main.pyExample Use Cases
AI Assistants: Enable LLMs to fetch, store, and process data in Redis.
Chatbots & Virtual Agents: Retrieve session data, manage queues, and personalize responses.
Data Search & Analytics: Query Redis for real-time insights and fast lookups.
Event Processing: Manage event streams with Redis Streams.
Contributing
Fork the repo
Create a new branch (
feature-branch)Commit your changes
Push to your branch and submit a PR!
License
This project is licensed under the MIT License.
Badges
Contact
For questions or support, reach out via GitHub Issues.
Alternatively, you can join the Redis Discord server and ask in the #redis-mcp-server channel.
Available Tools
44 toolsclient_listA
Get a list of connected clients to the Redis server.
Inputs: no named parameters.
create_vector_index_hashB
Create a Redis 8 vector similarity index using HNSW on a Redis hash.
This function sets up a Redis index for approximate nearest neighbor (ANN) search using the HNSW algorithm and float32 vector embeddings.
Args: index_name: The name of the Redis index to create. Unless specifically required, use the default name for the index. prefix: The key prefix used to identify documents to index (e.g., 'doc:'). Unless specifically required, use the default prefix. vector_field: The name of the vector field to be indexed for similarity search. Unless specifically required, use the default field name dim: The dimensionality of the vectors stored under the vector_field. distance_metric: The distance function to use (e.g., 'COSINE', 'L2', 'IP').
Returns: A string indicating whether the index was created successfully or an error message.
Inputs: index_name, prefix, vector_field, dim, +1 more. Returns: result
dbsizeA
Get the number of keys stored in the Redis database
Inputs: no named parameters. Returns: result
deleteC
Delete a Redis key.
Args: key (str): The key to delete.
Returns: str: Confirmation message or an error message.
Inputs: key (required). Returns: result
expireA
Set an expiration time for a Redis key.
Args: name: The Redis key. expire_seconds: Time in seconds after which the key should expire.
Returns: A success message or an error message.
Inputs: name (required), expire_seconds (required). Returns: result
getB
Get a Redis string value.
Args: key (str): The key to retrieve.
Returns: str, bytes: The stored value or an error message.
Inputs: key (required). Returns: result
get_indexed_keys_numberA
Retrieve the number of indexed keys by the index
Args: index_name (str): The name of the index to retrieve information about.
Returns: str: Number of indexed keys as a string
Inputs: index_name (required). Returns: result
get_indexesA
List of indexes in the Redis database
Returns: str: A JSON string containing the list of indexes or an error message.
Inputs: no named parameters. Returns: result
get_index_infoA
Retrieve schema and information about a specific Redis index using FT.INFO.
Args: index_name (str): The name of the index to retrieve information about.
Returns: str: Information about the specified index or an error message.
Inputs: index_name (required). Returns: result
get_vector_from_hashA
Retrieve a vector from a Redis hash and convert it back from binary blob.
Args: name: The Redis hash key. vector_field: The field name inside the hash. Unless specifically required, use the default field name
Returns: The vector as a list of floats, or an error message if retrieval fails.
Inputs: name (required), vector_field.
hdelA
Delete a field from a Redis hash.
Args: name: The Redis hash key. key: The field name inside the hash.
Returns: A success message or an error message.
Inputs: name (required), key (required). Returns: result
hexistsA
Check if a field exists in a Redis hash.
Args: name: The Redis hash key. key: The field name inside the hash.
Returns: True if the field exists, False otherwise.
Inputs: name (required), key (required). Returns: result
hgetA
Get the value of a field in a Redis hash.
Args: name: The Redis hash key. key: The field name inside the hash.
Returns: The field value or an error message.
Inputs: name (required), key (required). Returns: result
hgetallA
Get all fields and values from a Redis hash.
Args: name: The Redis hash key.
Returns: A dictionary of field-value pairs or an error message.
Inputs: name (required).
hsetA
Set a field in a hash stored at key with an optional expiration time.
Args: name: The Redis hash key. key: The field name inside the hash. value: The value to set. expire_seconds: Optional; time in seconds after which the key should expire.
Returns: A success message or an error message.
Inputs: name (required), key (required), value (required), expire_seconds. Returns: result
infoA
Get Redis server information and statistics.
Args: section: The section of the info command (default, memory, cpu, etc.).
Returns: A dictionary of server information or an error message.
Inputs: section.
json_delA
Delete a JSON value from Redis at a given path.
Args: name: The Redis key where the JSON document is stored. path: The JSON path to delete (default: root '$').
Returns: A success message or an error message.
Inputs: name (required), path. Returns: result
json_getA
Retrieve a JSON value from Redis at a given path.
Args: name: The Redis key where the JSON document is stored. path: The JSON path to retrieve (default: root '$').
Returns: The retrieved JSON value or an error message.
Inputs: name (required), path. Returns: result
json_setB
Set a JSON value in Redis at a given path with an optional expiration time.
Args: name: The Redis key where the JSON document is stored. path: The JSON path where the value should be set. value: The JSON value to store. expire_seconds: Optional; time in seconds after which the key should expire.
Returns: A success message or an error message.
Inputs: name (required), path (required), value (required), expire_seconds. Returns: result
llenB
Get the length of a Redis list.
Inputs: name (required). Returns: result
lpopB
Remove and return the first element from a Redis list.
Inputs: name (required). Returns: result
lpushB
Push a value onto the left of a Redis list and optionally set an expiration time.
Inputs: name (required), value (required), expire. Returns: result
lrangeC
Get elements from a Redis list within a specific range.
Returns: str: A JSON string containing the list of elements or an error message.
Inputs: name (required), start (required), stop (required). Returns: result
publishB
Publish a message to a Redis channel.
Args: channel: The Redis channel to publish to. message: The message to send.
Returns: A success message or an error message.
Inputs: channel (required), message (required). Returns: result
renameB
Renames a Redis key from old_key to new_key.
Args: old_key (str): The current name of the Redis key to rename. new_key (str): The new name to assign to the key.
Returns: Dict[str, Any]: A dictionary containing the result of the operation. On success: {"status": "success", "message": "..."} On error: {"error": "..."}
Inputs: old_key (required), new_key (required). Returns: result
rpopA
Remove and return the last element from a Redis list.
Inputs: name (required). Returns: result
rpushC
Push a value onto the right of a Redis list and optionally set an expiration time.
Inputs: name (required), value (required), expire. Returns: result
saddB
Add a value to a Redis set with an optional expiration time.
Args: name: The Redis set key. value: The value to add to the set. expire_seconds: Optional; time in seconds after which the set should expire.
Returns: A success message or an error message.
Inputs: name (required), value (required), expire_seconds. Returns: result
scan_all_keysA
Scan and return ALL keys matching a pattern using multiple SCAN iterations.
This function automatically handles the SCAN cursor iteration to collect all matching keys. It's safer than KEYS * for large databases but will still collect all results in memory.
⚠️ WARNING: With very large datasets (millions of keys), this may consume significant memory. For large-scale operations, consider using scan_keys() with manual iteration instead.
Args: pattern: Pattern to match keys against (default is "*" for all keys). batch_size: Number of keys to scan per iteration (default 100).
Returns: A list of all keys matching the pattern or an error message.
Inputs: pattern, batch_size. Returns: result
scan_keysA
Scan keys in the Redis database using the SCAN command (non-blocking, production-safe).
⚠️ IMPORTANT: This returns PARTIAL results from one iteration. Use scan_all_keys() to get ALL matching keys, or call this function multiple times with the returned cursor until cursor becomes 0.
The SCAN command iterates through the keyspace in small chunks, making it safe to use on large databases without blocking other operations.
Args: pattern: Pattern to match keys against (default is "" for all keys). Common patterns: "user:", "cache:", ":123", etc. count: Hint for the number of keys to return per iteration (default 100). Redis may return more or fewer keys than this hint. cursor: The cursor position to start scanning from (0 to start from beginning). To continue scanning, use the cursor value returned from previous call.
Returns: A dictionary containing: - 'cursor': Next cursor position (0 means scan is complete) - 'keys': List of keys found in this iteration (PARTIAL RESULTS) - 'total_scanned': Number of keys returned in this batch - 'scan_complete': Boolean indicating if scan is finished Or an error message if something goes wrong.
Example usage: First call: scan_keys("user:") -> returns cursor=1234, keys=[...], scan_complete=False Next call: scan_keys("user:", cursor=1234) -> continues from where it left off Final call: returns cursor=0, scan_complete=True when done
Inputs: pattern, count, cursor. Returns: result
setA
Set a Redis string value with an optional expiration time.
Args: key (str): The key to set. value (str, bytes, int, float, dict): The value to store. expiration (int, optional): Expiration time in seconds.
Returns: str: Confirmation message or an error message.
Inputs: key (required), value (required), expiration. Returns: result
set_vector_in_hashB
Store a vector as a field in a Redis hash.
Args: name: The Redis hash key. vector_field: The field name inside the hash. Unless specifically required, use the default field name vector: The vector (list of numbers) to store in the hash.
Returns: True if the vector was successfully stored, False otherwise.
Inputs: name (required), vector (required), vector_field. Returns: result
smembersA
Get all members of a Redis set.
Args: name: The Redis set key.
Returns: A list of values in the set or an error message.
Inputs: name (required). Returns: result
sremA
Remove a value from a Redis set.
Args: name: The Redis set key. value: The value to remove from the set.
Returns: A success message or an error message.
Inputs: name (required), value (required). Returns: result
subscribeB
Subscribe to a Redis channel.
Args: channel: The Redis channel to subscribe to.
Returns: A success message or an error message.
Inputs: channel (required). Returns: result
typeA
Returns the string representation of the type of the value stored at key
Args: key (str): The key to check.
Returns: str: The type of key, or none when key doesn't exist
Inputs: key (required). Returns: result
unsubscribeC
Unsubscribe from a Redis channel.
Args: channel: The Redis channel to unsubscribe from.
Returns: A success message or an error message.
Inputs: channel (required). Returns: result
vector_search_hashA
Perform a KNN vector similarity search using Redis 8 or later version on vectors stored in hash data structures.
Args: query_vector: List of floats to use as the query vector. index_name: Name of the Redis index. Unless specifically specified, use the default index name. vector_field: Name of the indexed vector field. Unless specifically required, use the default field name k: Number of nearest neighbors to return. return_fields: List of fields to return (optional).
Returns: A list of matched documents or an error message.
Inputs: query_vector (required), index_name, vector_field, k, +1 more. Returns: result
xaddA
Add an entry to a Redis stream with an optional expiration time.
Args: key (str): The stream key. fields (dict): The fields and values for the stream entry. expiration (int, optional): Expiration time in seconds.
Returns: str: The ID of the added entry or an error message.
Inputs: key (required), fields (required), expiration. Returns: result
xdelB
Delete an entry from a Redis stream.
Args: key (str): The stream key. entry_id (str): The ID of the entry to delete.
Returns: str: Confirmation message or an error message.
Inputs: key (required), entry_id (required). Returns: result
xrangeC
Read entries from a Redis stream.
Args: key (str): The stream key. count (int, optional): Number of entries to retrieve.
Returns: str: The retrieved stream entries or an error message.
Inputs: key (required), count. Returns: result
zaddB
Add a member to a Redis sorted set with an optional expiration time.
Args: key (str): The sorted set key. score (float): The score of the member. member (str): The member to add. expiration (int, optional): Expiration time in seconds.
Returns: str: Confirmation message or an error message.
Inputs: key (required), score (required), member (required), expiration. Returns: result
zrangeA
Retrieve a range of members from a Redis sorted set.
Args: key (str): The sorted set key. start (int): The starting index. end (int): The ending index. with_scores (bool, optional): Whether to include scores in the result.
Returns: str: The sorted set members in the given range or an error message.
Inputs: key (required), start (required), end (required), with_scores. Returns: result
zremB
Remove a member from a Redis sorted set.
Args: key (str): The sorted set key. member (str): The member to remove.
Returns: str: Confirmation message or an error message.
Inputs: key (required), member (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 44 tools
Each tool targets a distinct Redis command or operation, with clear prefixes (h for hash, json for JSON, etc.) and no overlapping functionality. Even similar tools like scan_keys and scan_all_keys are well-differentiated by their return patterns.
All tool names follow a consistent lowercase_with_underscores pattern, using prefixes for data types (h, json, z, x) and verbs for actions. There is no mixing of camelCase or other conventions.
With 44 tools, this server significantly exceeds the typical well-scoped range (3-15). While many tools are justified by Redis's multiple data structures, the number is high enough to potentially overwhelm agents and suggests a need for consolidation.
The tool set covers all major Redis data types (strings, hashes, lists, sets, sorted sets, streams, JSON) plus pub/sub, key operations, server info, and vector search. Basic CRUD operations are present for each type, with no obvious gaps for typical use cases.
Maintenance
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Store, query, and update structured data from any AI agent
Persistent memory for AI agents. Search and store durable facts, preferences and decisions.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.179 npm30MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to perform comprehensive Redis database operations including managing strings, hashes, lists, sets, sorted sets, TTL management, and data backup/restore. Supports secure connections and provides batch operations for efficient Redis interaction through natural language.3417 npm2MIT
- AlicenseBqualityDmaintenanceProvides comprehensive Redis database operations supporting all major data types (strings, lists, sets, hashes, sorted sets) with full CRUD functionality through natural language commands.96 npmMIT
- AlicenseCqualityNot gradedmaintenanceProvides access to 21+ AI search parsers including Perplexity, ChatGPT, Claude, Gemini, Copilot, Grok, DeepSeek, and traditional search engines through the Redis API, enabling multi-source AI-powered search and information retrieval.143MIT