cacheport について
cacheportは、RESPを使ってTCP経由でRedisと通信する、キー・バリューキャッシュ用のCLI兼MCPサーバーです。簡潔なキャッシュ操作を必要とする開発者向けで、接続やサーバーのエラーを値として偽装せず返します。
主な機能
- 01キーによる文字列の保存と取得
- 02保存値の有効期限設定
- 03単一または複数キーの削除
- 04globパターンによるキー一覧
- 05RESPによるRedis通信
活用シーン
- 01有効期限付きキャッシュ値の保存
- 02キャッシュキーの読み取りや削除
- 03パターンによるRedisキーの確認
MCP 対応
stdio MCPサーバーとして、Redisのキー・バリュー操作を行うset、get、delete、listツールを提供します。操作時に設定されたRedisアドレスへ接続し、接続やサーバーのエラーを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| key | string | はい | 設定する Redis キー |
| value | string | はい | キーに保存する文字列値 |
| expireSeconds | number | いいえ | 任意の有効期限(秒)。この時間が経過するとキーは期限切れになります。正の数である必要があります |
詳細
cacheport
cacheport は Redis キャッシュ用の小さく、誠実なフロントエンドです。値をキーに保存し(有効期限は任意)、読み戻し、1 つまたは複数のキーを一度に削除し、グロブパターンに一致するキーを一覧表示します。役割はこれだけで、プレーンな TCP ソケット経由で Redis 独自のワイヤプロトコルである RESP を使って処理します。クライアントライブラリは同梱されておらず、サーバーからの実際の応答との間に何も介在しません。
Redis が利用できない場合、cacheport はそのことを通知します。MCP サーバーはバックエンドの Redis サーバーがなくても起動してツールを一覧表示します。ソケットに接続するのは実際の操作を行うときだけで、接続拒否やサーバーエラーは、作り出した値ではなくエラーとして返されます。
インストール
npx @reneturcios/cacheport get mykey
コンテナイメージを実行することもできます。
docker run -i ghcr.io/cloudcorprecords/cacheport
コンテナはデフォルトで MCP サーバーとして起動します(下記参照)。CLI として使うには、CLI 引数を渡してください。
CLI
# Store a value, with and without an expiry
cacheport set greeting "hello world"
cacheport set session abc123 --expire-seconds 3600
# Read it back (prints (nil) when the key is gone)
cacheport get greeting
# Delete one key, or several in one call; prints how many were removed
cacheport delete greeting
cacheport delete session old-session temp-key
# List keys; the pattern is a Redis glob and defaults to *
cacheport list
cacheport list "user:*"
# Start the MCP server (Redis URL optional, see below)
cacheport mcp redis://localhost:6379
cacheport --version
終了コード:成功時は 0、キャッシュまたは接続の失敗時は 1(どちらが失敗したかはエラーに表示されます)、使い方のエラー時は 2 です。
接続先には通常の Redis URL(redis:// または rediss://)を指定します。ホスト、任意のポート(デフォルトは 6379)、userinfo 内の任意のパスワード、パスとして任意のデータベースインデックス(/2 は db 2 を選択)を指定できます。コマンドと mcp のどちらも、代わりに環境変数から接続先を取得できます。優先順位は REDIS_URL、次に CACHEPORT_REDIS_URL、その次に個別の変数 REDIS_HOST/REDIS_PORT/REDIS_PASSWORD(またはそれぞれの CACHEPORT_ 形式)です。これらがどれも設定されていない場合、cacheport は localhost:6379 に接続します。
Redis との通信方法
各操作では接続を開き、コマンドをバルク文字列の RESP 配列として書き込み、応答をデコードします。SET はシンプル文字列、GET はバルク文字列(または nil)、DEL は整数、KEYS は配列として返されます。接続先にパスワードまたは 0 以外のデータベースインデックスが指定されている場合、同じ接続上で先に AUTH と SELECT を実行します。サーバーのエラー応答には、サーバー自身のメッセージが添えられて返されます。
set に指定した有効期限は EX <seconds> として送信されます。小数の秒数は切り捨てられ、0 以下の有効期限は、何も送信する前に拒否されます。
MCP サーバー
1 つのバイナリで両方の用途に対応します。mcp サブコマンドで stdio MCP サーバーを起動します。
npx -y @reneturcios/cacheport mcp redis://localhost:6379
MCP クライアントの設定:
{
"mcpServers": {
"cacheport": {
"command": "npx",
"args": ["-y", "@reneturcios/cacheport", "mcp"],
"env": { "REDIS_URL": "redis://localhost:6379" }
}
}
}
ツール
| ツール | 入力 | 戻り値 |
|---|---|---|
set | key(文字列、必須)、value(文字列、必須)、expireSeconds(数値、任意) | サーバーのステータス応答。通常は OK です。 |
get | key(文字列、必須) | 保存された文字列。キーが存在しない場合は null です。 |
delete | key(文字列または文字列の配列、必須) | 実際に削除されたキーの数です。 |
list | pattern(文字列、任意、デフォルトは *) | グロブパターンに一致するキー名です。 |
接続エラーとサーバーエラーは、基となるメッセージを含むツールエラーとして返されます。作り出した値として返されることはありません。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network, no live Redis
npm run dev # run the CLI from source via tsx
中核となるロジックは、注入可能なエグゼキューターインターフェースの背後にあります。テストスイートではこのインターフェースを使用して、RESP のエンコードとデコード、URL の解析、および 4 つすべての操作を、メモリ上のフェイクエグゼキューターに対してテストします。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。