mcpField
P
package-version-check-mcp

package-version-check-mcp

ローカル
github.com/MShekow開発ツール9今日更新

package-version-check-mcp について

複数のエコシステムで最新の安定版パッケージやツールのバージョンを調べる MCP サーバーです。開発者やコーディングエージェントの古いバージョン指定を防ぎ、GitHub Actions のメタデータも取得できます。ローカル実行とホスト型サービスに対応します。

主な機能

  1. 01複数エコシステムの最新パッケージ版取得
  2. 02GitHub Actions のバージョンとメタデータ取得
  3. 03開発・DevOps ツールのバージョン取得
  4. 04任意のインメモリキャッシュ

活用シーン

  1. 01プロジェクトファイル作成時の依存バージョン確認
  2. 02Docker、Helm、Terraform のバージョン更新
  3. 03GitHub Actions の入力と出力の確認

MCP 対応

パッケージ、GitHub Actions、開発ツールのバージョンを調べるツールを MCP クライアントに公開します。ローカルまたはホスト型 HTTP サービスで実行できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"mshekow-package-version-check": {
"command": "uvx",
"args": [
"package-version-check-mcp"
],
"env": {
"GITHUB_PAT": "<GITHUB_PAT>",
"PACKAGE_VERSION_CACHE_ENABLED": "<PACKAGE_VERSION_CACHE_ENABLED>"
}
}
}
}
起動コマンドuvx package-version-check-mcp
設定が必要な環境変数
GITHUB_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypipackage-version-check-mcp1.1.0

ツール

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

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

詳細

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 サーバーを追加したら、次の操作が必要です。

  1. エージェントの設定で MCP ツールを有効にします。 利用可能なツールについては以下で説明します。

  2. プロンプトでエージェントに 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 を実行してローカル環境を更新します。これにより、.venv venv から不要になった依存関係が削除されます。
  • pyproject.toml の依存関係を自分で更新した場合は、poetry update && poetry sync --all-extras を実行して、ロックファイルを更新し、extras を含む更新済みの依存関係をインストールします。
  • pyproject.toml の依存関係はそのままにして、推移的依存関係のみを更新するには、poetry update && poetry sync --all-extras を実行します。これによりロックファイルが更新され、更新内容が有効な venv にインストールされます。

上記の poetry コマンドを実行するときは、venv が有効になっていないか、.venv venv が有効になっていることを確認してください。

コメント

MCP は初めてですか?

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

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