mcpField
R
Redis MCP Server

Redis MCP Server

ローカル
yaw.shデータベース22 週間前に更新

Redis MCP Server について

Redis MCP Serverは、MCPクライアント経由でRedisを調査・診断する開発者や運用担当者向けです。既定では読み取り専用で、範囲を制限したSCANによるキー列挙や、ヘルス情報と診断結果の提供を行います。

主な機能

  1. 01範囲を制限したSCANでキーを探索
  2. 02型ごとに読み取り、コレクション量を制限
  3. 03キーの型、TTL、メモリ使用量を確認
  4. 04ヘルス指標とスローログを集約
  5. 05大きなキー、TTL不足、eviction圧力を検出
  6. 06書き込みは明示的に許可し、危険なコマンドは常に遮断

活用シーン

  1. 01本番Redisインスタンスの状態を確認
  2. 02大きなキーやTTLのないキーを特定
  3. 03遅いコマンドとeviction圧力を調査
  4. 04Redisの各データ型の値を読み取る

MCP 対応

このMCPサーバーは、キー探索、読み取り、ヘルスチェック、診断ツールをMCPクライアントに公開します。既定では読み取り専用で、制限付き書き込みにはALLOW_WRITES=1が必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"yawlabs-redis": {
"command": "npx",
"args": [
"-y",
"@yawlabs/redis-mcp"
]
}
}
}
起動コマンドnpx -y @yawlabs/redis-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@yawlabs/redis-mcp0.5.5

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

@yawlabs/redis-mcp

Add to Yaw MCP

ワンクリックでローカルの Yaw MCP 設定に追加され、すべての Yaw Terminal セッションで利用できるようになります。または、以下の手順で手動インストールしてください。

次に、REDIS_URL を設定してください。 このボタンに接続文字列が含まれていないのは意図的で、Yaw MCP から入力を求めることもありません。資格情報のように見える名前の変数だけを求めるため、REDIS_URL は対象になりません。設定されていない場合、サーバーは起動時に REDIS_URL is not set で終了します。次のワンステップで、Yaw MCP の暗号化された保管庫に保存してください。

yaw-mcp set redis env.REDIS_URL --secret

値はエコーバックされないプロンプト(またはパイプされた標準入力)から読み取られ、コマンドラインから読み取られることはありません。保管庫のエントリ名は redis_redis_url で、サーバーのエントリには "REDIS_URL": "${secret:redis_redis_url}" が設定されます。Yaw MCP はサーバーの起動時に保管庫を読み取るため、値を変更した後は、新しい値を反映するために mcp_connect_deactivate redis を実行するか、新しいセッションを開始してください。

npm version License: MIT

Claude Code、Cursor、およびあらゆる MCP クライアントから Redis インスタンスを調査し、診断できます。 デフォルトでは読み取り専用で、書き込みは環境変数を 1 つ設定した場合にのみ有効になります。また、キーの列挙には常に SCAN を使用し、O(N) の KEYS は決して使用しないため、数百万のキーを持つ本番インスタンスに接続しても安全です。

Yaw Labs が開発・保守しています。

これを選ぶ理由

  • KEYS ではなく、常に SCAN。 すべてのキー列挙処理で、上限付きの COUNT と反復回数の上限を設けたカーソルベースの SCAN を使用します。KEYS * はキースペース全体に対して O(N) の処理を行い、スキャンが完了するまで Redis のシングルスレッドのイベントループをブロックします。大規模なインスタンスでは、自ら障害を招くことになります。SCAN はバッチの間に制御を戻します。詳しくはセキュリティをご覧ください。
  • 読み取り優先のコマンドゲート。 デフォルトでは、厳選された読み取り専用コマンドの許可リストのみを実行します。変更を伴うコマンド(SET、DEL、EXPIRE、HSET など)には ALLOW_WRITES=1 が必要です。任意のコード実行につながるコマンド(EVAL、FUNCTION、SCRIPT、MULTI、MONITOR、SHUTDOWN、CLUSTER など)は、書き込みを有効にしても公開されません。このゲートは厳選された許可リストであり、「書き込みを有効にすれば何でも実行できる」というものではありません。
  • 予想外の動作がない、型を考慮した読み取り。 redis_get は値の型(文字列/ハッシュ/リスト/セット/zset/ストリーム)に応じて処理を振り分け、コレクションの読み取りには上限を設けます。そのため、100 万個の要素を持つリストでモデルのコンテキストがあふれることはありません。redis_key_info は値自体を取得せずに、型/TTL/エンコーディング/メモリ使用量を読み取ります。
  • 1 回の呼び出しでヘルスを確認。 redis_health は INFO、DBSIZE、直近の SLOWLOG の情報をまとめ、メモリ負荷、エビクションポリシー、ヒット率、1 秒あたりのオペレーション数、永続化の状態、レプリケーションのロール、データベースごとのキー数(TTL が設定されていないキーの数も含む)、および直近の低速コマンドを示します。
  • 実用的なアドバイザー。 redis_advisor は「何を確認すべきか」を示す lint チェックです。大きなキー、TTL の未設定、エビクションの圧力(危険な noeviction と TTL 未設定の組み合わせを含む)、フォークによるレイテンシーのリスクを検出し、それぞれに重大度と実行可能な対処法を提示します。キーは SCAN でサンプリングされるため、大規模なインスタンスでも安全です。
  • 即時起動。 ランタイム依存関係ゼロで、単一のバンドル済みファイルとして提供されます。npx のコールドスタートのたびに、数分かかる node_modules のインストールを行う必要はありません。

対象範囲

このサーバーは、読み取り優先の調査・診断ツールであり、汎用的な Redis 管理コンソールではありません。意図的に、EVAL/FUNCTION/SCRIPT、パブ/サブ、MONITOR、クラスター管理、レプリケーション制御は公開していません。これらの操作には、redis-cli を直接使用してください。ここで目指すのは、安全で一般的なユースケースの 90% です。「このインスタンスには何があるか、正常な状態か、何を懸念すべきか?」という、本番環境の Redis に対してリスクなくエージェントが答えられるべき質問に対応します。

Redis 6 以降と Valkey で動作します。redis_health の一部のフィールド(latest_fork_usec、aof_enabled)は、実行中のサーバーが INFO でそれらを公開していることに依存します。フィールドがない場合はエラーではなく null として表示されます。

クイックスタート

1. プロジェクトのルートに .mcp.json を作成します

macOS/Linux/WSL:

{
  "mcpServers": {
    "redis": {
      "command": "npx",
      "args": ["-y", "@yawlabs/redis-mcp@latest"],
      "env": {
        "REDIS_URL": "redis://:password@host:6379/0"
      }
    }
  }
}

Windows:

{
  "mcpServers": {
    "redis": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@yawlabs/redis-mcp@latest"],
      "env": {
        "REDIS_URL": "redis://:password@host:6379/0"
      }
    }
  }
}

Windows で追加の手順が必要なのはなぜですか? Node 20 以降、child_process.spawn では .cmd ファイル(Windows での npx の実体)を直接実行できません。cmd /c でラップするのが標準的な回避策です。

2. 再起動して許可します

Claude Code(またはお使いの MCP クライアント)を再起動し、プロンプトが表示されたら Redis MCP サーバーを許可します。

3. (任意)書き込みを有効にします

デフォルトは読み取り専用です。エージェントが redis_command 経由で変更コマンド(SET、DEL、EXPIRE、HSET など)を実行できるようにするには、ALLOW_WRITES=1 を追加します。

"env": {
  "REDIS_URL": "redis://...",
  "ALLOW_WRITES": "1"
}

開発/テスト用インスタンスに限定して設定することをおすすめします。書き込みを有効にしても、任意のコード実行コマンドは引き続きブロックされます。

セキュリティ

KEYS ではなく SCAN を使います。これは安全性を左右する重要な選択です。 Redis はシングルスレッドです。KEYS pattern は、キー空間全体を中断できない単一の操作で走査します。数百万のキーがあるインスタンスでは、その間、他のすべてのクライアントがブロックされます。つまり、自分でサービス拒否を引き起こすことになります。このサーバーでキーを列挙するすべての経路(redis_scan、アドバイザーによるキーのサンプリング、redis_get によるセットの読み取り)では、上限付きの COUNT と最大反復回数を設定したカーソルベースの SCAN/SSCAN を使用し、バッチ間でイベントループに処理を戻します。KEYS はコマンドゲートで明示的に拒否され、代わりに redis_scan を使うよう案内されます。

デフォルトは読み取り専用です。 ALLOW_WRITES=1 が設定されていない場合、読み取り専用の許可リストにあるコマンドのみが実行され、それ以外は Redis に届く前にすべて拒否されます。ALLOW_WRITES=1 を設定すると、厳選された変更コマンドのセットも許可されます。ただし、任意のコード実行コマンド(EVAL、FUNCTION、SCRIPT、MULTI/EXEC、MONITOR、SHUTDOWN、REPLICAOF、CLUSTER、MIGRATE など)は、いずれのモードでも引き続きブロックされます。このゲートはフェイルクローズ方式です。どちらの許可リストにもないコマンドは拒否されるため、想定していなかったコマンドがすり抜けることはありません。

主な制御には Redis ACL を使用してください。 データベースのロールと同様、最小権限の Redis ユーザー(ACL SETUSER mcp on >pass ~* +@read)を REDIS_URL で指定するのが最も望ましい設定です。これにより、このサーバーのゲートとは独立して、Redis がサーバー側で境界を強制します。ALLOW_WRITES はそれに加える多層防御です。

脆弱性の報告については、SECURITY.md をご覧ください。

ツール

ツール説明
redis_scanカーソルベースの SCAN を使用してキーを列挙します(KEYS は使用しません)。任意の glob match、値の type フィルター、再開可能な cursor を指定できます。REDIS_MAX_KEYS で上限が設定されています。
redis_key_info値を読み取らずに1つのキーを調査します。タイプ、TTL(秒/ミリ秒)、エンコーディング、メモリ使用量、アイドル時間を確認できます。ビッグキーと TTL の欠落を調べるプローブです。
redis_getキーの値を読み取り、タイプ(string/hash/list/set/zset/stream)に応じて処理します。コレクションの読み取りは limit でウィンドウ化されます。常に読み取り専用です。
redis_command安全性チェックを通じて、Redis コマンドを1つ実行します。読み取りは常に実行されます。書き込みには ALLOW_WRITES=1 が必要です。KEYS と任意コード実行コマンドはブロックされます。専用ツールのないコマンドを実行するための手段です。
redis_healthINFO、DBSIZE、SLOWLOG から1回の呼び出しでヘルススナップショットを取得します。メモリ負荷、エビクションポリシー、ヒット率、ops/sec、永続化、レプリケーションの役割、DB ごとのキー数、最近の低速コマンドを確認できます。
redis_slowlogRedis スローログの最近のエントリー(コマンド、マイクロ秒、タイムスタンプ、クライアント)を取得します。読み取り専用(SLOWLOG GET)です。
redis_advisorヘルスチェックの指摘事項を1回の呼び出しにまとめます。ビッグキー、TTL の欠落、エビクション負荷、フォーク遅延のリスクを確認できます。各指摘事項には重大度と修正方法が含まれます。SCAN によるサンプリングを行うため、大規模なインスタンスでも安全です。

設定

すべての環境変数は MCP サーバーの環境から読み取られます。最後の3つはサーバーではなく redis-mcp ランチャーによって読み取られるため、ホストが dist/index.js を直接実行する場合は反映されません。ランチャーの oam バージョンチェックも同様です(ランタイムを参照)。

変数デフォルト用途
REDIS_URL(必須)Redis 接続文字列です。例:redis://:pass@host:6379/0、または TLS 用の rediss://...。
ALLOW_WRITES未設定1 または true に設定すると、redis_command を介した、許可リストに登録された変更を伴うコマンドを実行できます。任意のコードを実行するコマンドは、設定にかかわらず引き続きブロックされます。
REDIS_COMMAND_TIMEOUT_MS10000コマンドごとのタイムアウトです。これを超えて実行されるコマンドは中断されるため、応答しなくなった呼び出しによってエージェントが停止することはありません。
REDIS_CONNECT_TIMEOUT_MS10000TCP 接続のタイムアウトです。この設定がないと、ホストに接続できない場合、OS が諦めるまで(約2分)処理が停止します。
REDIS_MAX_KEYS10001回のスキャンで返すキー数と、redis_get で返すコレクション要素数の上限です。上限は 1000000 で、小数は切り捨てられます。1未満または数値以外の値を指定すると、デフォルト値が使われます。
REDIS_MAX_VALUE_BYTES262144redis_get で返す文字列値のバイト数上限です(256 KiB)。上限より長い文字列は先頭から REDIS_MAX_VALUE_BYTES バイトまで返され、truncated: true と元の length が付与されます。上限は 64000000(64 MB)で、小数は切り捨てられます。1未満または数値以外の値を指定すると、デフォルト値が使われます。ホストによっては、ツールの結果全体にこの値より低い上限を設ける場合があります。Yaw MCP では、デフォルトで先頭から100,000バイトに制限されます(YAW_MCP_MAX_RESULT_BYTES)。そのため、redis_get は値の前に length と truncated(およびコレクションのサイズ)を配置します。途中で切り詰められても、ペイロードが欠けるだけで、値が切り詰められたことを示すフィールドは失われません。
REDIS_SCAN_COUNT100SCAN の各反復で使う COUNT のヒントです。値を大きくするとラウンドトリップが減りますが、各反復の処理量は増えます。上限は 1000000 で、小数は切り捨てられます。1未満または数値以外の値を指定すると、デフォルト値が使われます。
REDIS_TLS_REJECT_UNAUTHORIZED未設定false に設定すると、TLS 証明書の検証(証明書チェーンとホスト名の確認)を省略します。接続は引き続き暗号化されますが、認証は行われなくなります。プライベート CA を使う場合の最終手段として使用してください。NODE_EXTRA_CA_CERTS の使用を推奨します。詳しくはマネージド Redis への接続を参照してください。
REDIS_MCP_RUNTIMEautoサーバーを実行する JS ランタイムです。auto(利用可能な最新の oam が 0.18.0 以降ならそれを使用し、それ以外は Node)、oam(同じですが、フォールバックせずエラーで終了)、node(常に Node。npx 内ではプロセス内で実行し、クライアントが oam run でコマンドを起動した場合は PATH 上の Node に処理を引き継ぎます)。大文字と小文字は区別されません。それ以外の値(nodejs のような誤記や、前後に空白のある値など)は、警告なしで auto として扱われます。ランタイムを参照してください。
OAM_BIN未設定検出より優先して使用する oam バイナリのパスです。バージョンが 0.18.0 以降の場合に使用されます。ファイルが存在しない、バージョンが古い、または実行できない場合、ランチャーはその旨を stderr に出力して検出を続行します。REDIS_MCP_RUNTIME=node の場合、およびランチャーがすでに oam 0.18.0 以降で実行中の場合は無視されます。ただし、REDIS_MCP_SANDBOX=1 の場合を除きます。
REDIS_MCP_SANDBOX未設定値が 1 の場合、サーバーを oam の --permission サンドボックス内で実行します。ファイルシステムと子プロセスは禁止され、ネットワーク接続は REDIS_URL に指定されたホストとポート(URL にポートがない場合は 6379)に制限されます。IPv6 リテラル(redis://[::1]:6379)も、他のホストと同様に固定されます。ホストとポートは ioredis と同じ方法で読み取られるため、スキームのない REDIS_URL(127.0.0.1:6379)、ポート番号のみの値、クエリー文字列内の host または port、ホストのない URL(localhost)も固定されます。絶対パスの Unix ソケット(/run/redis.sock、スキームのない host/path、またはクエリー文字列内の path)は、その正確なパスに固定されます。また、--permission の下でソケット接続を行うために oam 0.18.0 が必要とする、そのパスに対するファイルシステムの読み書き権限も付与されます。相対パスのソケットには権限を付与できず、その場合ランチャーはサンドボックスによって拒否されると通知します。(Unix ソケットへの接続に対応した最初の oam は oam 0.18.0 です。変更履歴には、Unix 側の動作はこれまで Windows 以外ではテストされていないと記載されており、この権限付与も同様です。)REDIS_URL が権限として指定できる単一の接続先を示していない場合(解析できない URL、空のホスト、カンマを含むホスト、または 1~65535 の範囲外のポート)、ネットワーク権限は制限されず、ランチャーはその旨を stderr に出力します。REDIS_MCP_SANDBOX が 1 以外の場合は、警告なしで無視されます。新しい oam プロセスが実際に起動されない限り、この設定は効果がありません。サンドボックスなしでサーバーを実行するフォールバックが発生するたびに、その旨が stderr に出力されます。ただし、ホストによっては stderr が表示されないことがあるため、フォールバックせず終了する REDIS_MCP_RUNTIME=oam と併用してください。ランチャーは 0.18.0 以降の oam のみを起動します。このバージョンには、サンドボックスが依存する修正がすべて含まれています。oam の変更履歴によると、--permission が fs と child_process をすべて対象にするようになったのは 0.9.1 以降で、ポートの権限が正確になったのは 0.15.0 以降です。
管理対象の Redis(Upstash、ElastiCache、Redis Cloud など)への接続

TLS には rediss:// URL を使用します。Node と oam のどちらでも同じように動作し、サンドボックスも含まれます。

プロバイダーが、ランタイムのトラストストアで認識されないプライベート CA によって署名された証明書を提供している場合(stderr に self-signed certificate in certificate chain、unable to verify the first certificate、または self-signed certificate と表示されるのがその症状です。Node と oam で同じです)、最善の対処法はその CA を信頼することです。NODE_EXTRA_CA_CERTS にその PEM ファイルを指定してください。Node と oam 0.15.3 以降はどちらもこれを読み取り、接続は完全に検証された状態に保たれます。

"env": {
  "REDIS_URL": "rediss://default:pass@host:6379",
  "NODE_EXTRA_CA_CERTS": "/path/to/provider-ca.pem"
}

CA 証明書を入手できない場合は、代わりに REDIS_TLS_REJECT_UNAUTHORIZED=false を追加してください。

"env": {
  "REDIS_URL": "rediss://default:pass@host:6379",
  "REDIS_TLS_REJECT_UNAUTHORIZED": "false"
}

これにより、証明書の検証(証明書チェーンとホスト名の確認)が完全に無効になります。そのため、接続はエンドツーエンドで引き続き TLS 暗号化されますが、認証されなくなります。可能な場合は NODE_EXTRA_CA_CERTS を優先してください。

ランタイム

公開されている redis-mcp コマンドは、利用可能な最新の oam JavaScript ランタイムを優先し、見つからない場合は Node にフォールバックする小さなランチャーです。使用するのは最新の oam リリース(現在は 0.18.0)のみで、それより古いバージョンで実行することはありません。oam がなくても動作は変わりません。 自動的にフォールバックします。また、ランチャーの実行にはすでに npm が Node を起動しているため、追加のプロセスを起動せず、サーバーをインプロセスで import() します。

0.18.0 を使用する理由。 これは最新の oam リリースであり、このサーバーで動作確認済みのバージョンです。ランチャーは oam のリリースに合わせて最低バージョンを引き上げるため、正常に動作する oam でも古い場合は引き続き使用されません。最低バージョンが初めて重要になったのは 0.15.3 です。このリリースより前の oam では、TLS ソケットに ioredis が呼び出す net.Socket のメソッドが一部なく、サーバー側から切断されたときにソケット自体が閉じませんでした。そのため、最初のツール呼び出しで rediss:// を使用するとサーバーがクラッシュしていました(YawLabs/oam#132)。また、oam は NODE_EXTRA_CA_CERTS を無視していました(YawLabs/oam#136)。0.15.3 ではこの両方が修正されているため、それ以降は TLS が Node と同じように動作します。利用可能な oam が 0.18.0 より古い場合、ランチャーは代わりに Node でサーバーを実行します。npx の下では独自のプロセスで実行し、ホストが古い oam run で起動した場合は、PATH 上の Node に処理を引き渡します。また、oam self-update を実行するよう案内します(これは oam 標準の署名検証済みアップデーターです。0.18.0 より古い oam では新しいインストーラーが実行され、リリースの検証には ssh-keygen 8.1 以降が必要です)。oam がまったく見つからない場合にのみ、oamjs.org を案内します。古い oam run を実行するホストで PATH 上に Node がない場合、または REDIS_MCP_RUNTIME=oam が設定されている場合は、処理を終了します。独自の oam をバンドルするホストでは、ホスト側を更新する必要があります。dist/index.js を oam で直接実行するホストは、これらすべてをスキップします。その場合、oam が 0.15.3 より古いと、サーバーはクラッシュするのではなく、すべての rediss:// ツール呼び出しに対して、更新先のバージョンを示すエラーを返します。

ランタイムの選択方法:

  • すでに oam 上で実行中の場合。 ランチャー自体が oam 0.18.0 以降(bin で oam run を実行するホスト)上で動作している場合、サーバーはそのプロセスにインポートされます。検出も起動も行われず、OAM_BIN は無視され、REDIS_MCP_RUNTIME=oam の条件も満たされます。REDIS_MCP_SANDBOX=1 を設定すると、この手順はスキップされます。--permission を適用できるのは新たに起動した oam だけだからです。ランチャーは、実行中の oam がインストール先に存在せず、PATH にもない場合でも、サンドボックスを指定してその oam を再起動します(使用可能な OAM_BIN がある場合は、そちらが優先されます)。
  • それ以外の場合は、検出します。 ランチャーは、OAM_BIN が 0.18.0 以降であればそれを使用します。それ以外の場合は、見つかったすべての oam に対してバージョンを問い合わせます。対象は、設定されている場合の OAM_INSTALL_DIR、既定のインストール先(Windows では %LOCALAPPDATA%\oam\bin、次に ~/.oam/bin、それ以外では ~/.oam/bin)、その後に PATH です。0.18.0 以降のもののうち最も新しいものを起動します。同じバージョンの場合は、インストール済みのものが優先されます。Windows では oam.exe のみが対象です。OAM_BIN が存在しない、古い、または実行できない場合は、その旨を stderr に表示して検出を続けます。
  • 使用可能な oam がない場合。 auto では、サーバーは代わりにランチャー自身のプロセスで実行されます(古い oam ホストからの引き継ぎについては後述)。OAM_BIN、見つかったものの古すぎる oam または実行できない oam、あるいは(Windows で)PATH 上の oam.cmd/oam.bat を見送った場合、選択した oam の起動に失敗した場合、さらに REDIS_MCP_SANDBOX=1 が設定されている場合には、ランチャーはその旨を stderr に表示します。動作する oam を古すぎるという理由だけで見送った場合は、更新するよう案内します。oam がまったく見つからず、サンドボックスも要求されていない場合は、メッセージを表示せずにフォールバックします。古い oam ホストからの引き継ぎについては、Node が見つかったかどうかをランチャーが確認した時点で、必ずメッセージを一度だけ表示します。oam の起動後にサーバーの実行中に失敗した場合は、フォールバックではなく起動失敗となります。
  • 古い oam ホストはサーバーを実行しません。 ランチャーが 0.18.0 より古い oam 上で動作している場合、最も新しい使用可能な oam にサーバーを引き継ぎます。それがなければ、PATH 上の Node に引き継ぎます。どちらもない場合は、エラーで終了します。
  • 上書き設定。 REDIS_MCP_RUNTIME=oam を設定すると、すべてのフォールバックが起動失敗になります。REDIS_MCP_RUNTIME=node を設定すると、検出をスキップして常に Node を実行します。Node 上ではランチャー自身のプロセスで実行し、oam 上では PATH 上の Node に引き継ぎます。

ランチャーが oam ホストから起動する子プロセスでは、継承した --permission/--allow-* をすべて削除した NODE_OPTIONS が設定されます。oam 0.18.0 は、すべての子プロセスの NODE_OPTIONS に独自の権限フラグを追加します。このランチャーが適用するサンドボックスは、環境変数ではなく、起動する oam のコマンドラインで渡されます。

フォールバック時には、インプロセス実行でも Node への引き継ぎでも、--permission は引き継がれません。そのため、auto で REDIS_MCP_SANDBOX=1 を設定している場合、サーバーがサンドボックスなしで実行されることがあります。このようなフォールバックでは、その旨(without --permission)が必ず stderr に表示されますが、ホストによっては stderr が表示されないことがあります。サンドボックスなしでのサーバー実行を許容できない場合は、これと併せて REDIS_MCP_RUNTIME=oam を設定してください。

トラブルシューティング

REDIS_URL is not set - MCP クライアントが環境変数を設定せずにサーバーを起動しています。特に Windows では、bash / PowerShell のプロファイルで設定した環境変数は、cmd 経由で起動した MCP サーバーには引き継がれません。.mcp.json の env ブロックに REDIS_URL を直接設定してください。Yaw MCP では、yaw-mcp set redis env.REDIS_URL --secret で設定します(このページの冒頭を参照してください)。

NOAUTH Authentication required - インスタンスにパスワードが必要ですが、URL に指定されていません。追加してください:redis://:yourpassword@host:6379(先頭のコロンに注意してください。デフォルトユーザーのユーザー名は空です)。

<COMMAND> mutates state and is blocked: ALLOW_WRITES is not set - 読み取り専用モードで redis_command を通じた書き込みを要求しています。env ブロックに ALLOW_WRITES=1 を追加するか(開発/テスト用)、より適切には、必要なアクセス範囲に制限した Redis ACL ユーザーを使用してください。

KEYS is blocked - これは意図的な制限です。キーの列挙には redis_scan(カーソルベース)を使用してください。これは KEYS が安全でない大規模なキー空間でも安全に使用できます。

最初のコマンドは遅いが、後続のコマンドは速い - 想定された動作です。クライアントは最初のコマンドで遅延接続し、以降のコマンドでは接続を再利用します。

開発

npm install
npm test          # build + unit tests (no live Redis needed)
npm run check:compliance   # @yawlabs/mcp-compliance, on Node and on oam, against a local RESP stub
npm run check:oam-floor    # OAM_MIN agrees with the docs and tests, and is the latest oam release

ユニットテストでは、コマンドの許可リストの適用、SCAN のカーソルページング、INFO/SLOWLOG の解析、アドバイザーのヒューリスティクスといった純粋なロジックを網羅しており、Redis インスタンスなしで実行できます。ライブパスを検証する統合テスト(npm run test:integration)には、破棄可能な Redis を REDIS_URL に指定する必要があります。

ライセンス

MIT © 2026 YawLabs

X で @YawLabs をフォロー

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。