关于 redis-mcp
redis-mcp 是面向 Redis 数据库的轻量 MCP 服务,适用于需要从 AI 客户端执行 Redis 命令或查询 Upstash 文档的开发者。它支持 HTTP/REST 或 TCP、多数据库配置,以及管道和原子事务。
主要功能
- 01通过 HTTP/REST 或 TCP 执行命令
- 02支持管道与原子事务
- 03配置并选择多个数据库
- 04搜索 Upstash Redis 文档
- 05可选拒绝写入命令
适用场景
- 01从 AI 客户端读取或修改 Redis 数据
- 02批量执行相互独立的 Redis 命令
- 03原子执行一组 Redis 操作
- 04查找 Redis 命令及 Upstash 功能说明
MCP 相关
该 MCP 服务向客户端提供 redis_run_commands 和 redis_search_docs 两种工具,可执行 Redis 操作并检索 Upstash Redis 文档。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @upstash/redis-mcpUPSTASH_REDIS_REST_URLUpstash Redis REST URL (HTTP transport).UPSTASH_REDIS_REST_TOKEN密钥Upstash Redis REST token (HTTP transport).UPSTASH_REDIS_TCP_URL密钥Upstash Redis rediss:// connection string (TCP transport).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
2收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| commands | array | 是 | Redis 命令;每条命令都是一个参数数组。单条:[["SET","foo","bar"]]。多条:[["SET","foo","bar"],["GET","foo"]]。数字可接受并会转换为字符串,因此 ["EXPIRE","k",60]、["ZADD","z",80,"bob"] 和 Lua numkeys ["EVAL",script,1,key] 均可使用。 |
| rest_url | string | 否 | 原始 HTTP 凭据覆盖:Upstash REST URL(必须与 rest_token 配对)。 |
| rest_token | string | 否 | 原始 HTTP 凭据覆盖:Upstash REST token(必须与 rest_url 配对)。 |
| transaction | boolean | 否 | 在一个 MULTI/EXEC 事务中运行所有命令(排队后一起执行,不会交错)。与标准 Redis 一样,一个命令发生运行时错误不会回滚其他命令。默认为 false(管道)。 |
| connection_string | string | 否 | 原始 TCP 凭据覆盖:rediss:// 连接字符串。 |
详细介绍
Upstash Redis MCP
轻量级 Redis MCP 服务,仅提供两个工具:
- 🧪
redis_run_commands:通过 HTTP/REST 或 TCP 运行一个或多个 Redis 命令,可作为流水线或原子事务执行。 - 📚
redis_search_docs:使用 Context7 公共 API 搜索 Redis 文档。
一个服务可以容纳多个命名数据库。配置仅使用环境变量和 CLI 标志。
🔌 快速开始
Claude Code
在终端中运行此命令。更多信息请参阅 Claude Code MCP 文档。
claude mcp add upstash-redis \
-e UPSTASH_REDIS_REST_URL=https://<your-db>.upstash.io \
-e UPSTASH_REDIS_REST_TOKEN=<your-rest-token> \
-- npx -y @upstash/redis-mcp
Cursor
添加到 ~/.cursor/mcp.json(全局)或 .cursor/mcp.json(按项目),也可以前往 设置 → MCP → 添加新的 MCP 服务。请参阅 Cursor MCP 文档。
{
"mcpServers": {
"upstash-redis": {
"command": "npx",
"args": ["-y", "@upstash/redis-mcp"],
"env": {
"UPSTASH_REDIS_REST_URL": "https://<your-db>.upstash.io",
"UPSTASH_REDIS_REST_TOKEN": "<your-rest-token>"
}
}
}
}
VS Code
添加到 .vscode/mcp.json(按项目)或用户级 mcp 设置中。请参阅 VS Code MCP 文档。
{
"servers": {
"upstash-redis": {
"command": "npx",
"args": ["-y", "@upstash/redis-mcp"],
"env": {
"UPSTASH_REDIS_REST_URL": "https://<your-db>.upstash.io",
"UPSTASH_REDIS_REST_TOKEN": "<your-rest-token>"
}
}
}
}
Codex
添加到 ~/.codex/config.toml(或项目级 .codex/config.toml)。请参阅 Codex MCP 文档。
[mcp_servers.upstash-redis]
command = "npx"
args = ["-y", "@upstash/redis-mcp"]
env = { UPSTASH_REDIS_REST_URL = "https://<your-db>.upstash.io", UPSTASH_REDIS_REST_TOKEN = "<your-rest-token>" }
OpenCode
添加到 opencode.json(项目级)或 ~/.config/opencode/opencode.json(全局)。请参阅 OpenCode MCP 文档。
{
"mcp": {
"upstash-redis": {
"type": "local",
"command": ["npx", "-y", "@upstash/redis-mcp"],
"environment": {
"UPSTASH_REDIS_REST_URL": "https://<your-db>.upstash.io",
"UPSTASH_REDIS_REST_TOKEN": "<your-rest-token>"
}
}
}
}
提示
任何兼容 MCP 的客户端都可以使用。如果列表中没有你的客户端,请添加一个 stdio 服务,并运行
npx -y @upstash/redis-mcp,同时设置上方的两个环境变量。
🧰 工具
🧪 redis_run_commands
运行任意 Redis 命令:GET、SET、SCAN、ZADD、EVAL、SEARCH.* 系列,以及其他所有命令。每条命令都是一个参数数组(接受数字并将其转换为字符串)。默认情况下,多个命令以流水线方式运行:每条命令都会返回各自的结果或错误,并与输入顺序对应;某条命令失败不会中止其余命令。设置 transaction: true 可执行原子性的 MULTI/EXEC。
{
"commands": [
["SET", "visits", 0],
["INCR", "visits"],
["GET", "visits"],
],
"transaction": false, // optional: true => atomic MULTI/EXEC
// "database": "prod" // only when more than one database is configured
// raw credential overrides (optional):
// "rest_url", "rest_token" // HTTP
// "connection_string" // TCP, rediss://
}
传输方式(HTTP 或 TCP)由目标数据库的配置决定;Agent 不会选择传输方式。
📚 redis_search_docs
实时搜索 Upstash Redis 文档并返回最相关的页面。遇到不确定的命令或功能时,都可以使用此工具,尤其是 SEARCH.* 这类 Upstash 专属的全文搜索命令。该工具由 Context7 免费层提供支持,无需 API 密钥或额外设置。
{ "query": "SEARCH.AGGREGATE date histogram" }
⚙️ 配置
所有配置均通过环境变量和 CLI 标志设置;没有配置文件。
单个数据库
| 传输方式 | 环境变量 | CLI |
|---|---|---|
| HTTP | UPSTASH_REDIS_REST_URL + UPSTASH_REDIS_REST_TOKEN | --rest-url <url> --rest-token <token> |
| TCP | UPSTASH_REDIS_TCP_URL(或 REDIS_URL) | --url <rediss://…> |
多个数据库
为每个数据库指定一个名称。该名称将成为 redis_run_commands 中可选的 database 值。
环境变量:插入一个 <NAME> 字段:
UPSTASH_REDIS_PROD_REST_URL="https://prod-db.upstash.io"
UPSTASH_REDIS_PROD_REST_TOKEN="<prod-rest-token>"
UPSTASH_REDIS_CACHE_TCP_URL="rediss://default:<password>@cache-db.upstash.io:6379"
CLI:重复使用 --database,以启动每个配置组:
npx -y @upstash/redis-mcp \
--database prod --rest-url https://prod-db.upstash.io --rest-token <prod-rest-token> \
--database cache --url rediss://default:<password>@cache-db.upstash.io:6379
说明
每次调用时传入原始凭据。
redis_run_commands调用也可以内联传入rest_url+rest_token(HTTP)或connection_string(TCP);这些值会覆盖注册表配置,即使没有配置数据库也能使用。凭据会经过模型的上下文,因此敏感信息请优先通过环境变量或 CLI 传入。
标志和选项
| 标志 | 环境变量 | 默认值 | 用途 |
|---|---|---|---|
--transport <stdio|http> | stdio | 服务传输方式 | |
--port <n> | 3000 | http 传输方式的端口 | |
--readonly | UPSTASH_REDIS_READONLY | 关闭 | 尽力拒绝两种传输方式上的写入命令。服务端只读 REST 令牌仍是可靠的选择。 |
--disable-telemetry | UPSTASH_DISABLE_TELEMETRY | 关闭 | 停止在 HTTP 请求中发送 Upstash-Telemetry-* 标头 |
--debug | 关闭 | 将详细日志输出到 stderr 和 redis-mcp-debug.log |
📡 遥测
HTTP/REST 请求会携带 Upstash-Telemetry-{Sdk,Platform,Runtime} 标头。使用 --disable-telemetry 或 UPSTASH_DISABLE_TELEMETRY=true 可将其禁用。
🏃 在本地运行
bun install
bun run build # emits dist/index.js
cp .env.example .env # add UPSTASH_REDIS_REST_URL + UPSTASH_REDIS_REST_TOKEN
node dist/index.js # stdio (what clients spawn)
node dist/index.js --transport http --port 3000 # HTTP: endpoint /mcp, health /ping
服务会自动加载 .env。若要让客户端连接到本地构建版本,请在任意 快速入门 配置中,将 npx -y @upstash/redis-mcp 替换为 node /absolute/path/to/redis-mcp/dist/index.js。
🛠️ 开发
bun install
bun run build
bun test
bun run lint
📄 许可证
MIT © Upstash
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。