io.github.upstash/mcp-server MCP Server
io.github.upstash/mcp-server
Manage Upstash Redis, QStash, Workflow, and Box resources directly from your AI agent.
What is the io.github.upstash/mcp-server MCP server?
The Upstash MCP server lets your agent manage and debug Upstash resources across Redis, QStash, Workflow, and Upstash Box through the Upstash Developer API. It supports both authenticated access via email and API key, and readonly API keys that disable state-modifying operations.
This MCP server provides AI agents with tools to create and manage Upstash databases, query Redis instances, monitor QStash logs and workflows, manage schedules, and interact with Upstash Box remote containers. It's useful for agents that need to provision infrastructure, debug distributed systems, or run code in isolated environments without leaving the chat interface.
How to install io.github.upstash/mcp-server
Copy-paste configuration for popular MCP clients.
UPSTASH_EMAILrequiredEmail address of your Upstash account.
UPSTASH_API_KEYrequiredsecretUpstash Developer API key (create one at https://console.upstash.com/account/api).
UPSTASH_BOX_API_KEYsecretUpstash Box API key for Box-related tools.
Tools & capabilities
Tools this server exposes to the agent.
redis_database_start_free— Start a free temporary Redis database for experimentation (expires in 72 hours)redis_database_create— Create a new Redis database in a specified regionredis_database_list— List Redis databases, optionally sorted by metrics like memory usageredis_database_backup— Create a backup of a Redis databaseredis_database_clear— Clear data from a Redis databaseredis_metrics— View throughput and performance metrics for Redis databasesqstash_logs_query— Check QStash logs to debug webhook and message failuresworkflow_runs_list— Find and list workflow runs, including failed runsworkflow_runs_retry— Retry failed workflow runsworkflow_dlq_view— View the dead-letter queue and summarize errorsworkflow_schedules_pause— Pause schedules that are throwing errorsbox_create— Spin up an Upstash Box remote container with optional repo cloningbox_read— Read files from a Boxbox_write— Write files to a Boxbox_edit— Edit files in a Boxbox_exec— Execute commands inside a Boxbox_git— Run git commands and search within a Boxbox_preview— Access a running server in a Boxbox_upload— Copy files from the local machine into a Boxbox_snapshot— Create a snapshot of a Box and spawn copies from it
Use cases
- Start a free Redis database to experiment with caching or session storage without signing up
- Create and manage multiple Redis databases across regions for production applications
- Debug failing webhooks and message queues by querying QStash logs and retrying failed runs
- Monitor workflow execution and identify error patterns in the dead-letter queue
- Spin up isolated Linux containers (Boxes) to run tests, clone repositories, and execute scripts without leaving your AI chat
io.github.upstash/mcp-server MCP server FAQ
It's an MCP server that gives AI agents access to Upstash's managed Redis, QStash (message queue), Workflow (orchestration), and Box (remote containers) services through the Upstash Developer API.
Upstash offers a free tier for Redis and other services. The MCP server itself is free; you pay only for Upstash resources you provision. You can start a free temporary Redis database with no account via the `redis_database_start_free` tool.
In Cursor, go to Settings → Cursor Settings → MCP → Add new global MCP server and paste the configuration with your Upstash email and API key. For Claude Code, run `claude mcp add --scope user upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY`. VS Code users can click the install button in the README for one-click setup.
You need an Upstash account email and an API key (created at Upstash Console → Account → API Keys). Readonly API keys are supported and automatically disable state-modifying tools. For Upstash Box, you also need a separate Box API key.
Yes, for Redis only: call `redis_database_start_free` to get a temporary free database with no signup. The database expires in 72 hours but can be claimed with an account to keep it. QStash, Workflow, and Box tools require an account.
The server automatically disables all tools that modify state (creating databases, deleting backups, retrying workflows). Your agent can still read and query your account, including Redis data, QStash logs, schedules, and Workflow logs, but cannot make changes.
README (reference)
Source of truth, from the repository.
Upstash MCP Server
<img alt="Install in VS Code" src="https://img.shields.io/badge/Install%20in%20VS%20Code-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white">
The Upstash MCP server lets your agent manage and debug your Upstash resources directly, across Redis, QStash, Workflow, and Upstash Box.
[!TIP] For most workflows, prefer installing the Upstash Skill and letting your agent drive
@upstash/cliover running the MCP server.
[!TIP] If you are an AI agent and just need a Redis DB to use or experiment with, you don't need an account at all — call the
redis_database_start_freetool, or send a POST request tohttps://upstash.com/start-redisdirectly. It's free, no signup, and the response is markdown with credentials and a quickstart. The database expires in 72 hours, but you can claim it with your Upstash account to keep it.Pass
user_agentto identify yourself (e.g.claude-code,cursor,codex,opencode); the tool forwards it as theUser-Agentheader. Calling the endpoint directly, send the same header yourself, plus a fresh UUIDv4 asIdempotency-Key:curl -X POST -H "Idempotency-Key: <uuidv4>" -H "User-Agent: <your-agent-name>" https://upstash.com/start-redis
Quickstart
You'll need your Upstash account email and an API key — create one at Upstash Console → Account → API Keys.
The Upstash MCP server works with any MCP-compatible client. If your client isn't listed below, check its documentation for how to add a stdio MCP server, then point it at the base command:
npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
<details> <summary><b>Claude Code</b></summary>[!NOTE] Readonly API keys are supported. When the server starts with one, it automatically disables every tool that would modify state (creating databases, deleting backups, retrying workflows, etc.). Your agent can still read and query your account — including Redis, QStash logs, schedules, and Workflow logs — but it cannot make changes. Upstash Box tools are not available with a readonly key.
Run this command in your terminal. See the Claude Code MCP docs for more info.
claude mcp add --scope user upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
</details>
<details>
<summary><b>Cursor</b></summary>
Go to Settings → Cursor Settings → MCP → Add new global MCP server.
Pasting the following configuration into your Cursor ~/.cursor/mcp.json file is the recommended approach. You may also install in a specific project by creating .cursor/mcp.json in your project folder. See the Cursor MCP docs for more info.
Since Cursor 1.0, you can click the install button below for instant one-click installation. Replace YOUR_EMAIL and YOUR_API_KEY with your real values before confirming.
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
</details>
<details>
<summary><b>Windsurf</b></summary>
Add this to your Windsurf MCP config file at ~/.codeium/windsurf/mcp_config.json. See the Windsurf MCP docs for more info.
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
</details>
<details>
<summary><b>OpenCode</b></summary>
Add this to your OpenCode configuration file (~/.config/opencode/opencode.json or a project-level opencode.json). See the OpenCode MCP docs for more info.
{
"mcp": {
"upstash": {
"type": "local",
"command": [
"npx",
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
],
"enabled": true
}
}
}
</details>
<details>
<summary><b>OpenAI Codex</b></summary>
See the OpenAI Codex MCP docs for more info.
Using the CLI
codex mcp add upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
Manual configuration
Add this to your Codex config file (~/.codex/config.toml or .codex/config.toml):
[mcp_servers.upstash]
command = "npx"
args = ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
startup_timeout_sec = 20
</details> <details> <summary><b>VS Code</b></summary>[!NOTE] If you see startup timeout errors, increase
startup_timeout_secto40.
Click to install — VS Code will prompt for your email and API key (stored in its secret storage):
<img alt="Install in VS Code" src="https://img.shields.io/badge/Install%20in%20VS%20Code-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white" /> <img alt="Install in VS Code Insiders" src="https://img.shields.io/badge/Install%20in%20VS%20Code%20Insiders-24bfa5?style=for-the-badge&logo=visualstudiocode&logoColor=white" />
Or add this to .vscode/mcp.json (or your user mcp.servers setting). Using inputs with promptString means your API key is prompted once and kept in VS Code's secret storage instead of sitting in the config file. See the VS Code MCP docs for more info.
{
"inputs": [
{ "type": "promptString", "id": "email", "description": "Upstash email" },
{ "type": "promptString", "id": "apiKey", "description": "Upstash API key", "password": true }
],
"servers": {
"upstash": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"${input:email}",
"--api-key",
"${input:apiKey}"
]
}
}
}
</details>
<details>
<summary><b>Google Antigravity</b></summary>
Add this to your Antigravity MCP config. See the Antigravity MCP docs for more info.
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
</details>
<details>
<summary><b>Claude Desktop</b></summary>
Open Claude Desktop's developer settings and edit claude_desktop_config.json. See the Claude Desktop MCP docs for more info.
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
</details>
<details>
<summary><b>Gemini CLI</b></summary>
Open the Gemini CLI settings file at ~/.gemini/settings.json and add Upstash to mcpServers. See Gemini CLI Configuration for details.
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
</details>
Example prompts
Redis
- "Start a free temporary Redis I can experiment with"
- "Create a new Redis database in us-east-1"
- "List my databases sorted by memory usage"
- "Update the user schema by pulling from Redis"
- "Create a backup of this db, then clear it"
- "Show me throughput spikes during the last 7 days"
QStash & Workflow
- "Check the QStash logs and figure out why my webhook keeps failing"
- "Find failed workflow runs for user
@admintoday" - "Retry the failed workflow run that started 2 hours ago"
- "Summarize what's in the DLQ right now, grouped by error type"
- "Pause the schedules that are throwing errors"
Upstash Box
- "Spin up a Box, clone this repo, and run the tests"
- "Snapshot this Box and create 5 copies from it, assign each one a GitHub issue"
- "My Box keeps failing to start, check the logs and tell me what's wrong"
Using a Box as your workspace
A Box is a remote Linux container with its own filesystem. The Box tools let an agent work inside one while the agent itself keeps running on your machine: files through box_read / box_write / box_edit, commands through box_exec, git and search through box_git, and a running server through box_preview. box_upload copies files into the Box from the machine running the MCP server, which is how uncommitted local work gets in — a clone only brings what you have pushed. With the usual stdio setup the server runs on your own machine, so those are your paths; if you run it remotely with --transport http, it reads the server host's filesystem instead, not yours.
Box tools need a Box API key, which is a different credential from your Upstash account API key — the two are not interchangeable. The install command at the top of this README does not include one, so pass --box-api-key as well or the first Box call will fail:
claude mcp add --scope user upstash -- npx -y @upstash/mcp-server@latest \
--email YOUR_EMAIL --api-key YOUR_API_KEY --box-api-key YOUR_BOX_API_KEY
See Upstash Box API key for the environment-variable form and where to get the key.
If you only use Upstash Box, you can start the server with --box-api-key alone and no account credentials. Redis, QStash and Workflow tools are unavailable in that mode.
Create the workspace once and reuse its id:
- "Create a Box with clone_repo https://github.com/me/my-app, no agent, then wait until the repo is there"
- "In that Box, run the tests and fix whatever fails"
- "Commit on a new branch in the Box and open a PR"
A create returns while the container is still coming up, and clone_repo starts cloning only once the Box reports idle, so give it a moment before the first read.
The one thing to know: your agent's own Read, Write, Edit, Bash, Glob and Grep tools still act on your machine. Nothing stops it from reading a local file and writing the change into the Box, and neither side reports the mismatch. The server sends guidance at startup and every Box tool says which machine it touches, but if you want the boundary enforced rather than suggested, add a CLAUDE.md to the project you're driving from:
# Workspace
The workspace for this project is an Upstash Box, not this directory.
- Use `box_read`, `box_write` and `box_edit` for files; `box_exec` for commands;
`box_git` for git and for search (`git grep`, `git ls-files`).
- Do not use Read, Write, Edit, Bash, Glob or Grep for project files — they act
on this machine. Searching locally finds the wrong tree, or nothing at all.
- The one exception is `box_upload`: it reads paths on this machine on purpose,
to copy local files into the Box.
- The box id for this project is: <paste it here>
Upstash Box API key (optional)
For the MCP to interact with Upstash Box, the agent needs your Box API key. By default you have to paste it into the chat (or keep it in a .env) every time the agent runs a Box tool. To avoid this, you can wire the key into the MCP setup itself so the server picks it up automatically on startup.
You can pass it in two ways.
CLI flag
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY",
"--box-api-key",
"YOUR_BOX_API_KEY"
]
}
}
}
Environment variable
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
],
"env": {
"UPSTASH_BOX_API_KEY": "YOUR_BOX_API_KEY"
}
}
}
}
Debugging
If the server is misbehaving or a tool keeps failing, enable verbose logging with the --debug flag:
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY",
"--debug"
]
}
}
}
Every internal event is then written to stderr, which your MCP client surfaces in its own log viewer. Share the relevant snippet when reporting an issue on GitHub.
Telemetry
The server sends anonymous diagnostic info to Upstash with each request: the MCP server SDK version, your runtime version (Node, Bun, etc.), and basic platform info (OS and architecture). No account data, tool arguments, or results are collected. To opt out, add --disable-telemetry to the args.
Development
Clone the project and run:
bun i
bun run watch
This continuously builds the project and watches for changes.
To run the built server standalone (uses .env for credentials) and smoke-test it before publishing:
bun i # ensure deps are current
bun run build
# stdio (default) — waits for an MCP client to speak JSON-RPC on stdin:
bun dist/index.js
# or HTTP transport, to poke it manually on a port:
bun dist/index.js --transport http --port 3000
For testing, create a .env file in the project root:
UPSTASH_EMAIL=<UPSTASH_EMAIL>
UPSTASH_API_KEY=<UPSTASH_API_KEY>
# Optional, for Box tools:
UPSTASH_BOX_API_KEY=<UPSTASH_BOX_API_KEY>
To install the local MCP server into Claude Code:
claude mcp add --transport stdio upstash -- bun --watch dist/index.js --debug
To tail logs from the MCP server in real time:
bun run logs
Related MCP servers

io.github.upstash/redis-mcp
Run Redis commands and look up Upstash Redis Search docs against Upstash Redis over HTTP or TCP.

Context7
Up-to-date code docs and API references injected directly into your AI coding prompts.
Structured observability for AI agents. Trace steps, decisions, and errors. MCP server + CLI viewer.

changelogai
Generate changelogs and suggest semver bumps from git history
Query India's open geo data. Locate, filter, nearby search across layers.

io.github.urbanmorph/irrational
Adversarial behavioural-bias engine — audits your decisions for cognitive biases via your own AI.