A drop-in replacement for mcp-memory-duckdb with full concurrent access support using Redis Stack.
- Concurrent Access: Multiple Claude sessions can read/write simultaneously
- RediSearch: Full-text search across entities and observations
- ReJSON: Native JSON document storage
- Persistent Storage: RDB snapshots + AOF for durability
- Git-Friendly Export: Auto-exports to JSONL after every change
- API Compatible: Same tools as mcp-memory-duckdb
- Cross-Platform: Works on macOS, Windows, and Linux
# PowerShell (run as Administrator recommended)
irm https://raw.githubusercontent.com/BakeMark/mcp-memory-redis/main/install.ps1 | iexOr download and run:
curl -O https://raw.githubusercontent.com/BakeMark/mcp-memory-redis/main/install.bat
install.bat# Install Redis Stack
brew tap redis-stack/redis-stack
brew install redis-stack
# Clone and install
git clone https://github.com/BakeMark/mcp-memory-redis.git ~/.claude/mcp-memory-redis
cd ~/.claude/mcp-memory-redis
npm install
# Start Redis
redis-stack-server --daemonize yes# Start Redis Stack
docker run -d --name redis-stack \
-p 6379:6379 \
-v redis-memory-data:/data \
--restart unless-stopped \
redis/redis-stack:latest
# Clone and install
git clone https://github.com/BakeMark/mcp-memory-redis.git
cd mcp-memory-redis
npm installAdd to ~/.claude/mcp-servers.json (macOS/Linux) or %USERPROFILE%\.claude\mcp-servers.json (Windows):
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["~/.claude/mcp-memory-redis/src/index.js"],
"env": {
"REDIS_URL": "redis://localhost:6379",
"MEMORY_DIR": "~/.claude/memory",
"MEMORY_EXPORT_PATH": "~/.claude/memory/knowledge.jsonl"
}
}
}
}{
"mcpServers": {
"memory": {
"command": "node",
"args": ["C:\\Users\\USERNAME\\.claude\\mcp-memory-redis\\src\\index.js"],
"env": {
"REDIS_URL": "redis://localhost:6379",
"MEMORY_DIR": "C:\\Users\\USERNAME\\.claude\\memory",
"MEMORY_EXPORT_PATH": "C:\\Users\\USERNAME\\.claude\\memory\\knowledge.jsonl"
}
}
}
}| Variable | Default | Description |
|---|---|---|
REDIS_URL |
redis://localhost:6379 |
Redis connection URL |
REDIS_INDEX_NAME |
memory_idx |
RediSearch index name |
MEMORY_DIR |
~/.claude/memory |
Directory for exports |
MEMORY_EXPORT_PATH |
~/.claude/memory/knowledge.jsonl |
JSONL export path |
The install script handles these automatically:
| Requirement | Install Method |
|---|---|
| Node.js 18+ | winget install OpenJS.NodeJS.LTS |
| Docker Desktop | docker.com/desktop |
Alternative to Docker: Memurai (Windows-native Redis)
# Export knowledge graph
node src/cli.js export ~/backup.jsonl
# Import knowledge (merge with existing)
node src/cli.js import ~/backup.jsonl --merge
# Import knowledge (skip existing entities)
node src/cli.js import ~/backup.jsonl --skip
# Search the graph
node src/cli.js search "database"
# Show statistics
node src/cli.js stats
# Clear all data
node src/cli.js clearThe MCP server exposes these tools:
| Tool | Description |
|---|---|
create_entities |
Create new entities with observations |
create_relations |
Create relationships between entities |
add_observations |
Add observations to existing entities |
search_nodes |
Full-text search across entities |
open_nodes |
Retrieve specific entities by name |
read_graph |
Get entire knowledge graph |
delete_entities |
Delete entities (cascades) |
delete_observations |
Delete specific observations |
delete_relations |
Delete relationships |
export_knowledge |
Export to JSONL |
import_knowledge |
Import from JSONL |
Import your existing knowledge:
# Export from current DuckDB (if needed)
node /path/to/mcp-memory-duckdb/src/cli.js export /tmp/backup.jsonl
# Import to Redis
node src/cli.js import /tmp/backup.jsonl --mergeUnlike DuckDB which only allows single-writer access, Redis Stack supports:
- Multiple concurrent readers
- Multiple concurrent writers
- Atomic transactions via MULTI/EXEC
- No file locking issues
This means you can run multiple Claude Code sessions simultaneously, all accessing the same knowledge graph.
Entities are stored as JSON documents with the key prefix entity::
{
"name": "EntityName",
"entityType": "Type",
"observations": ["obs1", "obs2"],
"createdAt": "2026-01-30T12:00:00.000Z",
"updatedAt": "2026-01-30T12:00:00.000Z"
}Relations are stored with the key prefix rel::
{
"from": "EntityA",
"to": "EntityB",
"relationType": "relates_to",
"createdAt": "2026-01-30T12:00:00.000Z"
}# Start Docker Desktop manually, then retry
Start-Process "C:\Program Files\Docker\Docker\Docker Desktop.exe"# Check if Redis is running
redis-cli ping
# Docker: check container
docker ps | grep redis-stack
docker logs redis-stack
# Restart container
docker restart redis-stackThe search index is created automatically on first startup. If issues persist:
redis-cli
> FT._LIST
> FT.INFO memory_idx.\uninstall.ps1MIT