package-version-check-mcp について
複数のエコシステムで最新の安定版パッケージやツールのバージョンを調べる MCP サーバーです。開発者やコーディングエージェントの古いバージョン指定を防ぎ、GitHub Actions のメタデータも取得できます。ローカル実行とホスト型サービスに対応します。
主な機能
- 01複数エコシステムの最新パッケージ版取得
- 02GitHub Actions のバージョンとメタデータ取得
- 03開発・DevOps ツールのバージョン取得
- 04任意のインメモリキャッシュ
活用シーン
- 01プロジェクトファイル作成時の依存バージョン確認
- 02Docker、Helm、Terraform のバージョン更新
- 03GitHub Actions の入力と出力の確認
MCP 対応
パッケージ、GitHub Actions、開発ツールのバージョンを調べるツールを MCP クライアントに公開します。ローカルまたはホスト型 HTTP サービスで実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx package-version-check-mcpGITHUB_PATシークレットGitHub Personal Access Token (PAT) without any scopes (avoids hitting GitHub's unauthenticated rate limits)PACKAGE_VERSION_CACHE_ENABLEDEnable or disable the package version cache (true/false)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
package-version-check-mcp
Python、NPM、Go、GitHub Actions など、さまざまなエコシステムで依存関係として使用しているパッケージの最新安定版を返す MCP サーバーです。
また、mise-en-place ツールを介して、python、node、dotnet などの開発ランタイムや、gradle などの開発ツール、kubectl や terraform などのさまざまな DevOps ツールを含む、約 1000 種類のツールの最新バージョンを調べることもできます。
なぜ必要なのでしょうか?
AI コーディングエージェントが依存関係のバージョンを固定したファイルを生成する際、学習時点から数週間、あるいは数か月が経過し、その間に依存関係の新しいバージョンがリリースされているため、古いバージョンを記述することがあります。開発者がこうした古いバージョンを手動で修正するのは面倒です。
この MCP はその問題を解決します。Context7 などの MCP と併用すると、AI エージェントが古いコードを生成するのを防げます。
機能
対応しているエコシステム/ツール:
- 開発者向けエコシステム:
- NPM - registry.npmjs.org の Node.js パッケージ
- PyPI - PyPI の Python パッケージ
- NuGet - NuGet の .NET パッケージ
- Maven / Gradle - Maven リポジトリ(Maven Central、Google Maven など)の Java/Kotlin/Scala パッケージ
- Go - proxy.golang.org の Go モジュール
- PHP - Packagist(Composer で使用)の PHP パッケージ
- Ruby - rubygems.org の Ruby gem
- Rust - crates.io の Rust クレート
- Swift - GitHub リポジトリの Swift パッケージ
- Dart - pub.dev の Dart パッケージ
- DevOps エコシステム:
- Docker - Docker レジストリの Docker コンテナーイメージ
- Helm - ChartMuseum リポジトリおよび OCI レジストリの Helm チャート
- GitHub Actions - GitHub.com でホストされているアクション。現在のバージョン、入力、出力、および(任意で)使用例を含む README 全体を返します
- Terraform Providers and Modules - Terraform Registry、OpenTofu Registry、またはカスタムレジストリのプロバイダーとモジュール
kubectl、terraform、gradle、mavenなど、mise-en-place が対応しているさまざまな ツール
使用方法
エージェントへの MCP の追加
この MCP を AI コーディングエージェントで利用するには、3 つの方法があります。
オプション 1:ホステッドサービスを利用する(最も簡単)
無料のホステッドサービスをエージェントに指定します。
https://package-version-check-mcp.onrender.com/mcp
(ストリーミング可能な)HTTP モードで利用します。
これが最も手早く始める方法です。ホステッドサービスでは、基盤となるパッケージレジストリによるレート制限が適用される場合があります。
オプション 2:uvx で実行する(ローカルでの使用向け)
uvx を使用して、MCP サーバーをローカルで実行します。
uvx package-version-check-mcp --mode=stdio
PyPI から最新バージョンを自動的にインストールして実行します。
要件:
get_supported_toolsまたはget_latest_tool_versionsツールを呼び出す場合は、miseバイナリが PATH 上に必要です
任意ですが推奨: GitHub API のレート制限を回避するには、GitHub パーソナルアクセストークン(必要なスコープはありません)を GITHUB_PAT 環境変数に設定してください。
オプション 3:Docker で実行する(ローカルでの使用向け)
ビルド済みの Docker イメージを使用します。
docker run --pull=always --rm -i ghcr.io/mshekow/package-version-check-mcp:latest --mode=stdio
任意ですが推奨: GitHub API のレート制限を回避するには、-e GITHUB_PAT=your_token_here を使用して GITHUB_PAT 環境変数を渡してください。
キャッシュの設定
パフォーマンスを向上させ、パッケージレジストリへの API 呼び出しを減らすため、キャッシュを有効にできます。
PACKAGE_VERSION_CACHE_ENABLED:キャッシュを有効にするにはtrueに設定します(デフォルトでは無効)PACKAGE_VERSION_CACHE_TTL_SECONDS:キャッシュの保持時間(秒)(デフォルト:3600/1 時間)PACKAGE_VERSION_CACHE_MAX_SIZE_MB:キャッシュの最大サイズ(MB)(デフォルト:64)
キャッシュにはメモリー内の TTL(Time-To-Live)キャッシュを使用します。MCP サーバーを再起動するとリセットされます。
エージェントの設定
MCP サーバーを追加したら、次の操作が必要です。
-
エージェントの設定で MCP ツールを有効にします。 利用可能なツールについては以下で説明します。
-
プロンプトでエージェントに MCP を使うよう促します。 多くの LLM は、明示的に指示しないと、この MCP のツールを自動的に呼び出しません。次のような指示を含めてください。
- 「MCP を使って最新バージョンを取得してください」
- 「MCP ツールを使って最新のパッケージバージョンを確認してください」
- 「get_latest_package_versions を使って現在のバージョンを調べてください」
このプロンプトを追加し忘れて、エージェントが 古い バージョンを使ったコードを生成した場合は、後からエージェントにバージョンを更新するよう依頼できます(例:「今追加した依存関係を、MCP 経由で最新バージョンに更新してください」)。
利用可能なツール
get_latest_package_versions
さまざまなエコシステムのパッケージの最新バージョンを取得します。
入力:
packages:パッケージ仕様の配列。各項目には次の内容が含まれます。ecosystem(必須):"npm"、"pypi"、"nuget"、"maven_gradle"、"go"、"php"、"rubygems"、"rust"、"swift"、"dart"、"docker"、"helm"、"terraform_provider"、"terraform_module" のいずれかpackage_name(必須):パッケージ名- npm の場合:パッケージ名(例:"express")
- pypi の場合:パッケージ名(例:"requests")
- nuget の場合:パッケージ名(例:"Newtonsoft.Json")
- maven_gradle の場合:"[registry:]:" 形式(例:"org.springframework:spring-core")。registry を省略すると、Maven Central が使用されます。
- go の場合:絶対モジュール識別子(例:"github.com/gin-gonic/gin")
- php の場合:"vendor/package" 形式のパッケージ名(例:"monolog/monolog"、"laravel/framework")
- rubygems の場合:Gem 名(例:"rails"、"devise")
- rust の場合:クレート名(例:"serde"、"tokio")
- swift の場合:GitHub URL(例:"https://github.com/Alamofire/Alamofire.git" または "github.com/owner/repo.git")。github.com のみサポートされています。
- dart の場合:pub.dev のパッケージ名(例:"http"、"flutter")
- docker の場合:レジストリと名前空間を含む完全修飾イメージ名(例:"index.docker.io/library/busybox")
- helm の場合:ChartMuseum URL("https://host/path/chart-name")または OCI 参照("oci://host/path/chart-name")
- terraform_provider の場合:"[registry/]/" 形式(例:"hashicorp/aws" または "registry.terraform.io/hashicorp/aws")。registry を省略すると、registry.terraform.io が使用されます。registry.opentofu.org などの代替レジストリもサポートされています。
- terraform_module の場合:"[registry/]//" 形式(例:"terraform-aws-modules/vpc/aws" または "registry.terraform.io/terraform-aws-modules/vpc/aws")。registry を省略すると、registry.terraform.io が使用されます。registry.opentofu.org などの代替レジストリもサポートされています。
version_hint(任意):- docker の場合:タグの互換性ヒント(例:"1.36-alpine")。同じサフィックスパターンに一致する最新のタグを探します。省略すると、最新のセマンティックバージョンタグを返します。
- helm(OCI のみ)の場合:Docker と同様のタグ互換性ヒント
- npm/pypi/nuget/maven_gradle/go/php/rubygems/rust/swift/dart/helm(ChartMuseum)/terraform_provider/terraform_module の場合:現在は使用されません
出力:
result:成功した検索結果の配列。次の内容が含まれます。ecosystem:パッケージのエコシステム(指定された値)package_name:パッケージ名(指定された値)latest_version:最新のバージョン番号(例:"1.2.4")または Docker タグdigest:(任意)利用可能な場合のパッケージダイジェスト/ハッシュ。Docker の場合はマニフェストダイジェスト(sha256)です。published_on:(任意)利用可能な場合の公開日(Docker では利用できません)
lookup_errors:エラーの配列。次の内容が含まれます。ecosystem:パッケージのエコシステム(指定された値)package_name:パッケージ名(指定された値)error:エラーの説明
get_github_action_versions_and_args
github.com でホストされている GitHub Actions の最新バージョンとメタデータを取得します。
入力:
action_names(必須):"owner/repo" 形式のアクション名の配列(例:["actions/checkout", "docker/login-action"])include_readme(任意):ブール値(デフォルト:false)。使用方法を説明するアクションの README.md を含めるかどうかを指定します
出力:
result:取得に成功した項目の配列。各項目には以下が含まれます:name:アクション名(指定された値)latest_version:最新の Git タグ(例:"v3.2.4")metadata:オブジェクト形式の action.yml メタデータ。以下のフィールドが含まれます:inputs:アクションの入力パラメーターoutputs:アクションの出力runs:実行設定
readme:(任意)include_readmeが true の場合、アクションの README の内容
lookup_errors:エラーの配列。各項目には以下が含まれます:name:アクション名(指定された値)error:エラーの説明
get_supported_tools
get_latest_tool_versions MCP ツールがサポートするすべてのツール名の一覧を返します。
このツールは mise レジストリを検索し、mise で管理できる利用可能なツール名をすべて取得します。
入力:
- パラメーターは不要です
出力:
- ツールの短縮名の配列(例:["1password", "act", "node", "python", ...])
get_latest_tool_versions
mise-en-place がサポートする開発および DevOps ツールの最新の安定版を取得します。
このツールは、PyPI や NPM などの言語エコシステムに属さないツールを対象としています。Terraform プロバイダーやモジュールを含む、言語エコシステムのパッケージには、代わりに get_latest_package_versions を使用してください。
使用例:
- gradle または maven:
gradle-wrapper.propertiesまたはmaven-wrapper.propertiesのdistributionUrlで Gradle または Maven のバージョンを固定します- 例:
distributionUrl=https://services.gradle.org/distributions/gradle-8.5-bin.zip - 例:
distributionUrl=https://repo.maven.apache.org/.../apache-maven-3.9.6-bin.zip
- 例:
- terraform:
version.tfやversions.tfなどのファイルでterraform.required_versionを固定します- 例:
terraform { required_version = "~> 1.6.0" }
- 例:
- kubectl または azure:Dockerfile などで、
curlまたはwgetを使って呼び出すダウンロード URL 内のバージョンを固定します- 例:
RUN curl -LO https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl
- 例:
利用可能なツールをすべて確認するには、get_supported_tools ツールを使用してください。
入力:
tool_names(必須):ツール名の配列(例:["terraform", "gradle", "kubectl"])
出力:
result:取得に成功した項目の配列。各項目には以下が含まれます:tool_name:ツール名(指定された値)latest_version:最新の安定版のバージョン番号(例:"1.6.5")
lookup_errors:エラーの配列。各項目には以下が含まれます:tool_name:ツール名(指定された値)error:エラーの説明
なぜ新たな MCP を開発するのか
「古くなった依存関係」の問題に取り組む MCP は、もちろんこれが初めてではありません。しかし、ほかの MCP と比べて、いくつかの利点があると考えています。
- ほかの MCP よりも、対応するエコシステムの範囲が(はるかに)広いです
- テストで完全にカバーされており、自動的な依存関係の更新(Renovate による)と、定期的な自動リリースビルドを実施しています。一方、ほかのプロジェクトは場当たり的にコードが書かれ、テストが不十分(またはテストがなく)、作者がちょっと試しただけで、すでに放棄されていることもよくあります
- ローカルで実行する方法をいくつか(uvx または docker)提供しています。また、無料のホスト型サービスを利用することもできます(ほかの MCP にはありません)
- セキュリティを強化した 最小限 の Docker/OCI イメージを使用しています。Trivy などのツールで生成する SBOM は正確であることが確認されており、イメージには Cosign による署名が付与されています(MCP をセルフホストする場合に、イメージの真正性を検証できます)
開発
前提条件
mise-en-place
MCP サーバーは、ツールのバージョンを検索するために mise-en-place パッケージに依存します。インストール手順については https://mise.jdx.dev/installing-mise.html を参照してください。
サーバーを手動で実行する(開発用)
MCP サーバーをローカルで開発またはテストする場合は、直接実行できます。
まず、仮想環境を設定するため、「Poetry によるパッケージ管理」→「セットアップ」の手順に従ってください。
次に:
.poetry/bin/poetry run python -m package_version_check_mcp.main
または、.venv が有効になっている場合:
python src/package_version_check_mcp/main.py
Poetry によるパッケージ管理
セットアップ
新しいマシンでは、Poetry 用の venv(<project-root>/.poetry のパス)と、プロジェクト自体用の venv(<project-root>/.venv のパス)を作成します。たとえば、C:\Users\USER\AppData\Local\Programs\Python\Python312\python.exe -m venv <path> を実行します。
プロジェクトと Poetry の間で依存関係が 競合 するのを避けるため、この分離が必要です。
Poetry 用 venv の pip を使って、pip install -r requirements-poetry.txt で Poetry をインストールします。
次に、poetry sync --all-extras を実行します。ただし、venv が有効になっていないか、.venv が有効になっていることを確認してください。.poetry は有効にしないでください(そうしないと、以前に poetry config virtualenvs.in-project true を実行していない限り、Poetry は依存関係をその venv にインストールしてしまいます)。pytest などの 開発用 依存関係をインストールするには、--all-extras フラグが必要です。
依存関係の更新
- Renovate が
pyproject.tomlとpoetry.lockファイルを更新した場合など、依存関係が外部から変更されたときは、poetry sync --all-extrasを実行してローカル環境を更新します。これにより、.venvvenv から不要になった依存関係が削除されます。 pyproject.tomlの依存関係を自分で更新した場合は、poetry update && poetry sync --all-extrasを実行して、ロックファイルを更新し、extras を含む更新済みの依存関係をインストールします。pyproject.tomlの依存関係はそのままにして、推移的依存関係のみを更新するには、poetry update && poetry sync --all-extrasを実行します。これによりロックファイルが更新され、更新内容が有効な venv にインストールされます。
上記の poetry コマンドを実行するときは、venv が有効になっていないか、.venv venv が有効になっていることを確認してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。