mcp-server-redis 项目实现了与 Redis 的集成,提供了一系列 Redis 操作的工具和资源,方便开发者进行 Redis 相关的开发和测试,可通过配置连接 Redis 服务器,执行各种 Redis 操作,并能在不同场景下进行测试。
如果尚未安装,请先安装以下依赖项。若没有安装,可参考 uv 安装文档。
uv venv
source .venv/bin/activate
uv sync
参考 .env.example 文件配置 Redis 连接,添加相应的变量。
python src/server.py
redis://status - 当前连接状态redis://info - Redis 服务器信息redis://keys/{pattern} - 列出匹配指定模式的键get_value - 获取值set_value - 设置值,可选设置过期时间delete_key - 删除键increment - 自增数值list_push - 向列表推入值list_range - 获取列表范围内的值hash_set - 设置 Hash 字段hash_get - 获取 Hash 字段set_add - 添加到集合set_members - 获取集合成员publish_message - 发布消息每个工具均包含错误处理,并返回有意义的响应。服务器会在连接丢失后自动重新连接 Redis。
若未安装依赖,参考 uv 安装文档 进行安装,然后执行以下命令:
uv venv
source .venv/bin/activate
uv sync
参考 .env.example 文件,添加相应的变量来配置 Redis 连接。
# 启动服务器
python src/server.py
mcp dev src/server.py
mcp install src/server.py
用户: 现在 Redis 的连接状态如何?
LLM: 让我查看一下 Redis 连接状态。
[读取资源 redis://status]
Redis 服务器当前正常连接,运行于 localhost:6379,数据库 0。
用户: 能否将我的名字 "Alice" 存入 Redis?
LLM: 我会使用 set_value 工具帮助您存储名字。
[调用 set_value,键="name",值="Alice"]
成功设置键 'name'
我已经在 Redis 下的键 "name" 中为您存储了名字 "Alice"。是否需要确认存储是否正确?
用户: 请验证一下
LLM: 我会使用 get_value 工具进行验证。
[调用 get_value,键="name"]
Alice
确实,我可以确认您的名字 "Alice" 已经成功存储在 Redis 中,并且可以被正确检索。存储的值与我们设置的一致。
mcp-server-redis/
├── src/
│ ├── __init__.py
│ ├── main.py # 主程序入口点
│ ├── config.py # 配置管理
│ ├── connection.py # Redis 连接管理
│ ├── resources/ # 资源实现
│ │ ├── __init__.py
│ │ ├── status.py # 连接状态资源
│ │ └── keys.py # 关键字相关资源
│ └── tools/ # 工具实现
│ ├── __init__.py
│ ├── basic.py # 基本 Redis 操作
│ ├── lists.py # 列表操作
│ ├── hashes.py # Hash 表操作
│ ├── sets.py # 集合操作
│ └── pubsub.py # 发布/订阅操作
├── tests/ # 测试目录
│ └── __init__.py
├── README.md
└── pyproject.toml
本项目实现了与 Redis 的集成,提供了一系列 Redis 操作的工具和资源。每个工具都包含错误处理,并返回有意义的响应。服务器会在连接丢失后自动重新连接 Redis。通过配置文件管理 Redis 连接,使用 uv 工具管理依赖和虚拟环境。项目结构清晰,将资源和工具分开实现,便于扩展和维护。
此实现为 MCP 框架中的 Redis 集成提供了一个坚实的基础。您可以通过添加更多 Redis 命令,根据具体需求进一步扩展该项目的功能。