uvxでローカルMCPサーバーを利用する場合はキャッシュによるストレージ逼迫にご注意ください

記事タイトルとURLをコピーする

はじめに

こんにちは、久保です。

2025年度初頭から認知も利用も増加し様々なベンダーやサービスからMCP(Model Context Protocol)サーバーが提供されています。

AWSも以下ページで様々なMCPサーバを提供しており、ご利用されている方も多いかもしれません。

Welcome to AWS MCP Servers | AWS MCP Servers

今回私がMacのローカルでMCPサーバーを利用していて意図せずストレージ逼迫の憂き目にあったため、皆様が同じ目に遭わない様に情報共有いたします。

起こったこと

Macのストレージで、uvのキャッシュ(/Users/<username>/.cache/uv) が約80GBにも達していました。

結論

  • 定期的に uv cache prune を実行して不要なキャッシュを掃除する
    or
  • キャッシュが溜まらないよう @latest を使わない

原因

AWSが提供してくださっているMCPサーバはPython製が多く、ほとんどが uvx を利用して起動するものとなっています。

例えばAWSのドキュメントを参照するためのMCPサーバーの場合以下のように設定するかと思います。

{
  "mcpServers" : {
    "awslabs.aws-documentation-mcp-server" : {
      "command" : "uvx",
      "args" : [
        "awslabs.aws-documentation-mcp-server@latest"
      ],
      "env" : {
        "AWS_DOCUMENTATION_PARTITION" : "aws",
        "FASTMCP_LOG_LEVEL" : "ERROR"
      }
    }
  }
}

uvxはパッケージをインストールすることなく実行ができる便利なコマンドで、実行時には自動的に仮想環境が作成され、キャッシュディレクトリに作成・保存します。

Tool environments

これは再実行時の起動コストを下げるためなのですが、実は @latest でバージョン指定している場合はキャッシュが再利用されず、毎回キャッシュが作成されます

そのため、ローカルMCPサーバーが起動するたびに(例えば毎日Macを起動する度に自動起動するならば毎日)、キャッシュが生成されます。

このキャッシュサイズは例えば上記のMCPですと約30MBになります。

これが蓄積することで、私のMacでは80GBものキャッシュが残存しておりました。

確認方法

uv cache dir を実行することでキャッシュ場所を確認できます。 (<username>の箇所はMacのユーザ名となります。)

Macの場合の例

% uv cache dir
/Users/<username>/.cache/uv

Windowsでも同様に確認可能と思われます。
%LOCALAPPDATA%\uv\cache のはずです。)

対処

  • 定期的に uv cache prune を実行して不要なキャッシュを掃除する
    or
  • キャッシュが溜まらないよう @latest を使わない

となります。

@latestを使わず、バージョンを指定すればキャッシュが再利用されるのですが、毎回バージョンを追随するのも大変なので、私は定期的にキャッシュを掃除するようにしました。

なお、uv cache pruneは未使用のキャッシュを消します。
uv cache cleanとするとすべてのキャッシュを削除できます。

定期的に uv cache prune を実行して不要なキャッシュを掃除する

crontabで1時間に1回定期実行

1 * * * * /path/to/uv cache prune

私はmiseでpythonやuvを管理しており、フルパスを直接指定できないため、以下のようなスクリプトを作って設定しております。

/Users/<username>/scripts/uv_prune.sh

#!/bin/zsh
source ~/.zshrc
uv cache prune
% chmod +x /Users/<username>/scripts/uv_prune.sh
% crontab -e
1 * * * * /Users/<username>/scripts/uv_prune.sh

キャッシュが溜まらないよう @latest を使わない

以下のようにバージョンを明示するだけです。

{
  "mcpServers" : {
    "awslabs.aws-documentation-mcp-server" : {
      "command" : "uvx",
      "args" : [
        "awslabs.aws-documentation-mcp-server@1.1.8"
      ],
      "env" : {
        "AWS_DOCUMENTATION_PARTITION" : "aws",
        "FASTMCP_LOG_LEVEL" : "ERROR"
      }
    }
  }
}

おわりに

MCPサーバーに限りませんがuvxをご利用の場合はキャッシュの定期的なお掃除が必要なことにご注意いただければと思います。

※DockerでMCPサーバーをご利用の場合は定期的に docker system prune などでお掃除されるのがよいと思います。

久保 賢二(執筆記事の一覧)

猫とAWSが好きです。