freshcheck について
freshcheckは、開発者やメンテナー向けに依存関係の古さを評価します。厳密なsemver比較とアーカイブ・長期未リリースの判定を行い、ネットワーク照会なしでリスク別に分類します。
主な機能
- 01major・minor・patchの差分比較
- 02アーカイブ済み・長期未リリースの検出
- 03リスク別の依存関係分類
- 04入力検証とソート済み結果
- 05コマンドライン、MCPサーバー、Dockerで実行
活用シーン
- 01深刻度に応じた依存関係更新の優先順位付け
- 02放棄の兆候がある依存関係の特定
- 03入力された依存ツリーのオフライン評価
MCP 対応
MCPサーバーは`assess_freshness`ツールを公開し、依存関係のバージョンと任意の放棄シグナルを受け取ります。評価、リスク分類、件数を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| dependencies | array | はい | 評価する依存関係(1 つ以上)。 |
| abandoned_days | integer | いいえ | この日数の間リリースがない依存関係を放棄されたものと見なします(任意、既定値は 730)。 |
詳細
freshcheck
依存関係ツリーは、気付かないうちに古くなります。パッチバージョンが遅れていて、特に考えずに更新できるパッケージもあれば、メジャーバージョンが遅れていて、計画的なアップグレードが必要なものもあります。また、何年も新しいリリースがないものや、リポジトリがすでにアーカイブされているものは、どのバージョンを使っていてもリスクになります。freshcheck は、依存関係ツリー(各依存関係の名前、インストール済みバージョン、利用可能な最新バージョン、および任意の放棄シグナル)を受け取り、次のリスクグループに分類します。
- 遅れのレベル — 各依存関係について、
currentとlatestを数値としてコンポーネントごとに比較します。最初に異なるコンポーネントによって、major、minor、またはpatchが決まります。latestがcurrentより新しくない場合(同じか、古い場合)は、レベルはnoneです。バージョンには厳密なMAJOR.MINOR.PATCHの semver が必要です。つまり、数値のコンポーネントが3つあり、先頭のゼロやプレリリースサフィックス、ビルドサフィックスがない形式です。 - 放棄済み — リポジトリがアーカイブされている場合、またはリリースから少なくとも
abandoned_days日が経過している場合(デフォルトは730日。任意のdays_since_last_releaseで計測)、依存関係は放棄済みとみなされます。放棄状態はバージョンの遅れより優先されます。2メジャーバージョン遅れているアーカイブ済みパッケージはabandonedに分類されますが、遅れの大きさが失われないよう、遅れのレベルも併せて報告されます。 - グループと件数 — すべての依存関係は、
abandoned、major、minor、patch、またはcurrent(遅れのレベルがnoneで、放棄されていないもの)のいずれか1つのグループに分類されます。結果には各グループの名前と、グループごとの件数および合計数が含まれます。
結果内のすべてのリストは昇順でソートされるため、同じツリーには常にまったく同じ評価が返されます。不正な入力(依存関係リストがない、または空、名前がない、空、または重複している、厳密な semver ではないバージョン、型が正しくないシグナルなど)は、該当するパスを示す検証エラーになります(例:dependencies[1].latest must be a strict MAJOR.MINOR.PATCH semver version)。評価結果の一部だけが生成されることはありません。計算は純粋かつローカルで行われます。ネットワークへのアクセスやレジストリの検索はなく、渡された入力以外のファイルも読み込みません。freshcheck は、渡されたバージョンとシグナルのみを評価します。
CLI
npx @reneturcios/freshcheck assess --input args.json
npx @reneturcios/freshcheck --version
args.json には、引数オブジェクト全体を記述します。
{
"dependencies": [
{ "name": "core", "current": "2.0.0", "latest": "2.0.0" },
{ "name": "lib", "current": "1.9.0", "latest": "1.10.2" },
{ "name": "old", "current": "0.8.1", "latest": "3.0.0", "archived": true }
]
}
各依存関係の archived のデフォルトは false で、呼び出し全体の abandoned_days のデフォルトは 730 です。評価結果は JSON で出力されます。
{
"dependencies": [
{ "name": "core", "current": "2.0.0", "latest": "2.0.0", "behind": "none", "group": "current" },
{ "name": "lib", "current": "1.9.0", "latest": "1.10.2", "behind": "minor", "group": "minor" },
{ "name": "old", "current": "0.8.1", "latest": "3.0.0", "behind": "major", "group": "abandoned" }
],
"groups": {
"abandoned": ["old"],
"major": [],
"minor": ["lib"],
"patch": [],
"current": ["core"]
},
"counts": { "abandoned": 1, "major": 0, "minor": 1, "patch": 0, "current": 1, "total": 3 }
}
lib に注目してください。1.10.2 は 1.9.0 より1つ先のマイナーバージョンです。コンポーネントは辞書順ではなく数値で比較されるためです。
終了コード:成功時は 0、実行時エラー時(読み取り不能または無効な入力ファイル、あるいは無効な入力を含む)は 1、使用方法のエラー時は 2 です。
MCP サーバー
npx -y @reneturcios/freshcheck mcp
MCP クライアントの設定:
{
"mcpServers": {
"freshcheck": {
"command": "npx",
"args": ["-y", "@reneturcios/freshcheck", "mcp"]
}
}
}
ツール
-
assess_freshness— 依存関係ツリーの古さをリスク別に評価します。dependencies(配列、必須、1件以上)—{name, current, latest, archived?, days_since_last_release?}オブジェクトとして依存関係を指定します。nameはセット内で一意である必要があり、currentとlatestは厳密なMAJOR.MINOR.PATCHの semver バージョンである必要がありますabandoned_days(整数、任意、デフォルトは730、1以上)— 依存関係が放棄済みとみなされる、リリースのない日数
{dependencies, groups, counts}を返します。
Docker
docker run -i ghcr.io/cloudcorprecords/freshcheck
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/freshcheck assess --input /w/args.json
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。