Upstash MCP Server について
Upstash MCP Serverは、Redis、QStash、Workflow、Upstash BoxなどのUpstashリソースをエージェントから調査、管理、デバッグするためのサーバーです。READMEではローカルのstdio版は保守終了とされ、OAuth対応で対象製品の多いUpstashのリモートMCPサーバーが案内されています。
主な機能
- 01Redisリソースの確認とクエリ
- 02QStashのログとスケジュール確認
- 03Workflow実行の管理とデバッグ
- 04Upstash Boxでのファイル・コマンド操作
- 05読み取り専用キーで変更ツールを無効化
活用シーン
- 01Redisデータベースと使用状況の確認
- 02QStashのWebhook失敗の調査
- 03失敗したWorkflow実行の検索や再試行
- 04リモートBoxワークスペースでのテスト実行
MCP 対応
保守対象の選択肢はUpstashのリモートMCPサーバー`https://mcp.upstash.com/mcp`で、ローカルstdio版は保守終了です。MCPツールからUpstashリソースを操作でき、リモート接続はOAuth、ヘッドレス環境ではDeveloper APIキーに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @upstash/mcp-serverUPSTASH_EMAILEmail address of your Upstash account.UPSTASH_API_KEYシークレットUpstash Developer API key (create one at https://console.upstash.com/account/api).UPSTASH_BOX_API_KEYシークレットUpstash Box API key for Box-related tools.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Upstash MCP サーバー
重要
このローカル(stdio)サーバーはメンテナンスされていません。代わりに、
https://mcp.upstash.com/mcpのリモート Upstash MCP サーバーを使用してください。リモートサーバーでは OAuth でサインインするため、設定ファイルに貼り付ける API キーは不要です。また、Redis、QStash、Workflow、Vector、Search、Box、Blob など、より多くの Upstash サービスに対応しています。CI などのヘッドレス環境では、Developer API キーを
Authorization: Basic base64(email:api_key)として指定することもできます。claude mcp add --scope user --transport http upstash https://mcp.upstash.com/mcpセットアップ:upstash.com/docs/agent-resources/overview。ツールと認証:upstash.com/docs/agent-resources/mcp。
Upstash MCP サーバーを使うと、エージェントが Redis、QStash、Workflow、Upstash Box にわたる Upstash リソースを直接管理し、デバッグできます。
ヒント
ほとんどのワークフローでは、MCP サーバーを実行するよりも、Upstash Skill をインストールして、エージェントに
@upstash/cliを操作させる方法をおすすめします。
ヒント
AI エージェントで、利用または実験するための Redis DB が必要なだけなら、アカウントは不要です。
redis_database_start_freeツールを呼び出すか、https://upstash.com/start-redisに直接 POST リクエストを送信してください。無料で登録も不要です。レスポンスは認証情報とクイックスタートを含む Markdown です。データベースは 72 時間後に有効期限が切れますが、Upstash アカウントで引き取れば、そのまま利用できます。
user_agentを渡して自身を識別してください(例:claude-code、cursor、codex、opencode)。ツールはこれをUser-Agentヘッダーとして転送します。エンドポイントに直接アクセスする場合は、同じヘッダーに加えて、新しい UUIDv4 をIdempotency-Keyとして送信してください。curl -X POST -H "Idempotency-Key: <uuidv4>" -H "User-Agent: <your-agent-name>" https://upstash.com/start-redis
クイックスタート
Upstash アカウントのメールアドレスと API キーが必要です。Upstash Console → Account → API Keys で作成してください。
Upstash MCP サーバーは、MCP 互換クライアントであればどれでも動作します。お使いのクライアントが以下に記載されていない場合は、stdio MCP サーバーの追加方法をドキュメントで確認し、ベースコマンドを指定してください。
npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
メモ
読み取り専用の API キーに対応しています。読み取り専用の API キーを使ってサーバーを起動すると、状態を変更するすべてのツール(データベースの作成、バックアップの削除、ワークフローの再試行など)が自動的に無効になります。エージェントは、Redis、QStash のログ、スケジュール、Workflow のログを含め、アカウントの読み取りやクエリは引き続き行えますが、変更を加えることはできません。Upstash Box のツールは読み取り専用のキーでは利用できません。
Claude Code
ターミナルで次のコマンドを実行してください。詳しくはClaude Code MCP のドキュメントをご覧ください。
claude mcp add --scope user upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
Cursor
Settings → Cursor Settings → MCP → Add new global MCP server の順に移動してください。
次の設定を Cursor の ~/.cursor/mcp.json ファイルに貼り付ける方法を推奨します。特定のプロジェクトにインストールする場合は、プロジェクトフォルダーに .cursor/mcp.json を作成する方法もあります。詳しくはCursor MCP のドキュメントをご覧ください。
Cursor 1.0 以降では、下のインストールボタンをクリックすると、ワンクリックですぐにインストールできます。確認する前に、YOUR_EMAIL と YOUR_API_KEY を実際の値に置き換えてください。
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
Windsurf
この設定を Windsurf の MCP 設定ファイル ~/.codeium/windsurf/mcp_config.json に追加してください。詳しくはWindsurf MCP のドキュメントをご覧ください。
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
OpenCode
この設定を OpenCode の設定ファイル(~/.config/opencode/opencode.json またはプロジェクトレベルの opencode.json)に追加してください。詳しくはOpenCode MCP のドキュメントをご覧ください。
{
"mcp": {
"upstash": {
"type": "local",
"command": [
"npx",
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
],
"enabled": true
}
}
}
OpenAI Codex
詳しくはOpenAI Codex MCP のドキュメントをご覧ください。
CLI を使用する
codex mcp add upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
手動で設定する
この設定を Codex の設定ファイル(~/.codex/config.toml または .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
メモ
起動タイムアウトエラーが表示される場合は、
startup_timeout_secを40に増やしてください。
{
"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}"
]
}
}
}
Google Antigravity
これを Antigravity の MCP 設定に追加してください。詳しくは Antigravity MCP docs をご覧ください。
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
Claude Desktop
Claude Desktop の開発者設定を開き、claude_desktop_config.json を編集してください。詳しくは Claude Desktop MCP docs をご覧ください。
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
Gemini CLI
Gemini CLI の設定ファイル ~/.gemini/settings.json を開き、Upstash を mcpServers に追加してください。詳しくは Gemini CLI Configuration をご覧ください。
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
プロンプトの例
Redis
- 「実験用に、無料の一時的な Redis を起動して」
- 「us-east-1 に新しい Redis データベースを作成して」
- 「メモリ使用量の順にデータベースを一覧表示して」
- 「Redis から取得してユーザースキーマを更新して」
- 「この DB のバックアップを作成してから、内容を消去して」
- 「過去 7 日間のスループットの急増を表示して」
QStash と Workflow
- 「QStash のログを確認して、Webhook が繰り返し失敗する理由を調べて」
- 「今日失敗した、ユーザー
@adminのワークフロー実行を探して」 - 「2 時間前に開始した、失敗したワークフロー実行を再試行して」
- 「現在 DLQ にある項目を、エラーの種類ごとにまとめて」
- 「エラーが発生しているスケジュールを一時停止して」
Upstash Box
- 「Box を起動して、このリポジトリをクローンし、テストを実行して」
- 「この Box のスナップショットを作成し、そこから 5 つのコピーを作って、それぞれに GitHub の issue を割り当てて」
- 「Box の起動が繰り返し失敗するので、ログを確認して問題を教えて」
Box をワークスペースとして使用する
Box は、独自のファイルシステムを持つリモート Linux コンテナです。Box ツールを使うと、エージェント自体はお使いのマシンで実行したまま、その中で作業できます。ファイル操作には box_read / box_write / box_edit、コマンドの実行には box_exec、git と検索には box_git、実行中のサーバーには box_preview を使用します。box_upload は、MCP サーバーを実行しているマシンから Box にファイルをコピーします。これにより、コミットしていないローカルの作業も取り込めます。クローンで取得できるのは、プッシュ済みの内容だけです。通常の stdio 構成では、サーバーはお使いのマシン上で実行されるため、参照先はお使いのマシン上のパスになります。--transport http を指定してリモートで実行する場合は、お使いのマシンではなく、サーバーホストのファイルシステムが参照されます。
Box ツールには Box API キーが必要です。これは Upstash アカウントの API キーとは別の認証情報であり、互いに代用できません。この README の先頭にあるインストールコマンドには含まれていないため、--box-api-key も渡してください。渡さない場合、最初の Box 呼び出しは失敗します。
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
環境変数を使う方法とキーの取得先については、Upstash Box API キーを参照してください。
Upstash Box だけを使う場合は、アカウントの認証情報なしで --box-api-key だけを指定してサーバーを起動できます。このモードでは、Redis、QStash、Workflow の各ツールは利用できません。
ワークスペースは一度作成し、その ID を再利用します。
- 「clone_repo https://github.com/me/my-app を使って、エージェントなしで Box を作成し、リポジトリが配置されるまで待ってください」
- 「その Box でテストを実行し、失敗した箇所を修正してください」
- 「Box で新しいブランチにコミットして、PR を作成してください」
コンテナの起動中でも作成処理は結果を返します。また、clone_repo によるクローンは Box の状態が idle になってから始まるため、最初の読み取りを行う前に少し待ってください。
**知っておくべき重要な点:**エージェント自身の Read、Write、Edit、Bash、Glob、Grep ツールは、引き続きお使いのマシン上で動作します。ローカルファイルを読み込んで、その変更を Box に書き込むこともできますが、どちらの側もその不一致を通知しません。サーバーは起動時にガイダンスを送信し、各 Box ツールはどのマシンにアクセスするかを表示します。ただし、境界を単に推奨するのではなく強制したい場合は、操作対象のプロジェクトに CLAUDE.md を追加してください。
# 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 キー(任意)
MCP から Upstash Box を操作するには、エージェントに Box API キーが必要です。デフォルトでは、エージェントが Box ツールを実行するたびに、チャットにキーを貼り付ける(または .env に保存しておく)必要があります。これを避けるには、MCP の設定にキーを組み込み、サーバー起動時に自動で取得できるようにします。
キーの渡し方は 2 通りあります。
CLI フラグ
{
"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"
]
}
}
}
環境変数
{
"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"
}
}
}
}
デバッグ
サーバーの動作に問題がある場合や、ツールが繰り返し失敗する場合は、--debug フラグを使って詳細ログを有効にしてください。
{
"mcpServers": {
"upstash": {
"command": "npx",
"args": [
"-y",
"@upstash/mcp-server@latest",
"--email",
"YOUR_EMAIL",
"--api-key",
"YOUR_API_KEY",
"--debug"
]
}
}
}
すると、すべての内部イベントが stderr に書き込まれ、MCP クライアントのログビューアーに表示されます。GitHub で問題を報告する際は、関連するログの抜粋を共有してください。
テレメトリ
サーバーはリクエストごとに、匿名化された診断情報を Upstash に送信します。内容は MCP サーバー SDK のバージョン、ランタイム(Node、Bun など)のバージョン、基本的なプラットフォーム情報(OS とアーキテクチャ)です。**アカウントデータ、ツールの引数、結果は収集されません。**オプトアウトするには、引数に --disable-telemetry を追加してください。
開発
プロジェクトをクローンして、次を実行します。
bun i
bun run watch
これにより、プロジェクトが継続的にビルドされ、変更が監視されます。
ビルド済みサーバーを単独で実行し(認証情報には .env を使用)、公開前にスモークテストするには、次を実行します。
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
テスト用に、プロジェクトのルートに .env ファイルを作成します。
UPSTASH_EMAIL=<UPSTASH_EMAIL>
UPSTASH_API_KEY=<UPSTASH_API_KEY>
# Optional, for Box tools:
UPSTASH_BOX_API_KEY=<UPSTASH_BOX_API_KEY>
ローカル MCP サーバーを Claude Code にインストールするには、次を実行します。
claude mcp add --transport stdio upstash -- bun --watch dist/index.js --debug
MCP サーバーのログをリアルタイムで表示するには、次を実行します。
bun run logs
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。