内容
# Redis MCP Server
基于 MCP (Model Context Protocol) 协议的 Redis 数据库操作服务,让 AI 助手能通过标准 MCP 协议操作 Redis。
## 特性
- **低资源占用**:Go 原生编译,内存占用 < 20MB,毫秒级启动
- **stdio 传输**:进程内通信,无需暴露端口,零网络开销
- **安全可控**:支持只读模式,生产环境安全
- **单文件部署**:编译为单一二进制文件,无需运行时依赖
- **20 个内置工具**:覆盖 Redis 常用操作,复杂命令可通过 `execute` 工具调用
- **Pipeline 批量**:batch_execute 支持最多 50 条命令批量执行
## 工具列表
| 分类 | 工具 | 说明 |
|------|------|------|
| 字符串 | `get` | 获取键值 |
| | `set` | 设置键值(支持 EX/NX) |
| | `del` | 删除键 |
| 哈希 | `hgetall` | 获取整个哈希 |
| | `hmset` | 批量设置哈希字段 |
| 列表 | `lrange` | 获取范围元素 |
| | `lpush` | 左侧推入 |
| | `lpop` | 左侧弹出 |
| 集合 | `smembers` | 获取所有成员 |
| | `sadd` | 添加成员 |
| 有序集合 | `zrange` | 按排名获取(支持 WITHSCORES) |
| | `zadd` | 添加成员(带分数) |
| 键操作 | `keys` | SCAN 方式查找(非阻塞) |
| | `expire` | 设置过期时间 |
| | `ttl` | 获取剩余生存时间 |
| 通用 | `execute` | 执行任意 Redis 命令 |
| | `batch_execute` | Pipeline 批量执行 |
| 服务器 | `info` | 服务器信息 |
| | `select` | 切换数据库 (0-15) |
| | `ping` | 测试连接 |
## 快速开始
### 环境要求
- Go 1.22+
- Redis 6.0+
### 安装
```bash
# 克隆仓库
git clone <repo-url>
cd redis-mcp
# 编译
go build -ldflags "-X main.buildVersion=1.0.0 -X 'main.buildTime=$(date +%F)'" -o redis-mcp .
# 拷贝默认配置
cp .env.example .env
```
### 配置
编辑 `.env` 文件:
```env
REDIS_HOST=localhost # Redis 地址
REDIS_PORT=6379 # Redis 端口
REDIS_PASSWORD= # Redis 密码(可选)
REDIS_DB=0 # 数据库索引
REDIS_READONLY=false # 只读模式(生产环境建议 true)
```
### 配置到 AI 客户端
程序通过 stdio 传输与 AI 客户端通信,直接在客户端的 MCP 配置中声明为子进程:
```json
{
"mcpServers": {
"redis": {
"command": "D:\\path\\to\\redis-mcp.exe",
"args": [],
"env": {
"REDIS_HOST": "localhost",
"REDIS_PORT": "6379",
"REDIS_PASSWORD": "",
"REDIS_DB": "0",
"REDIS_READONLY": "false"
}
}
}
}
```
> **提示**:也可以在客户端配置中跳过 `env`,改为在 `redis-mcp.exe` 同级目录下放 `.env` 文件,程序启动时自动加载。
## 调试
```bash
# 开发模式:go vet 检查 + 编译
go vet ./... && go build -o redis-mcp .
# 查看依赖
go mod tidy
```
## 环境变量参考
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `REDIS_HOST` | `localhost` | Redis 服务器地址 |
| `REDIS_PORT` | `6379` | Redis 端口 |
| `REDIS_PASSWORD` | (空) | 认证密码 |
| `REDIS_DB` | `0` | 数据库编号 |
| `REDIS_READONLY` | `false` | 设为 `true` 仅允许读取操作 |
## 安全建议
1. **生产环境**:设置 `REDIS_READONLY=true` 防止 AI 误执行写操作
2. **认证**:务必设置 `REDIS_PASSWORD`
3. **环境变量**:在客户端配置的 `env` 中声明密码,比 `.env` 文件更安全
## 项目结构
```
redis-mcp/
├── main.go # 入口文件
├── go.mod / go.sum # Go 模块
├── .env.example # 环境变量模板
├── redis-mcp-service.xml # WinSW 服务配置文件(仅 streamable-http 模式需要)
├── internal/
│ ├── config/config.go # 配置加载
│ ├── redis/
│ │ ├── client.go # Redis 连接管理
│ │ └── executor.go # 命令执行器
│ └── tools/register.go # MCP 工具注册(20 个工具)
```
## 后续规划
- [ ] Redis Cluster 模式支持
- [ ] Redis Sentinel 模式支持
- [ ] TLS/SSL 连接
- [ ] 连接池优化
- [ ] streamable-http 模式(按需切换)
## 许可
MIT