mcpField
P
package-version-check-mcp

package-version-check-mcp

本地服务
github.com/MShekow开发工具9今天更新

关于 package-version-check-mcp

面向开发者和编码 Agent 的 MCP 服务,可查询多个生态中的最新稳定包和工具版本,帮助避免依赖版本过时;也能返回 GitHub Actions 元数据,并支持本地或托管运行。

主要功能

  1. 01查询多生态的最新包版本
  2. 02获取 GitHub Actions 版本与元数据
  3. 03查询开发及 DevOps 工具版本
  4. 04可选内存缓存

适用场景

  1. 01生成项目文件时核对依赖版本
  2. 02更新 Docker、Helm 或 Terraform 版本
  3. 03查看 GitHub Actions 的输入与输出

MCP 相关

向 MCP 客户端提供包、GitHub Actions 和开发工具版本查询工具,可在本地运行或通过托管 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

一个 MCP 服务,可返回你在各种生态系统(如 Python、NPM、Go 或 GitHub Actions)中使用的依赖包的最新稳定版本。

它还支持通过 mise-en-place 工具查询近 1,000 种工具的最新版本,例如 python、node、dotnet 等开发运行时,gradle 等开发工具,以及 kubectl 或 terraform 等各种 DevOps 工具。

我为什么需要它?

AI 编码 Agent 生成固定依赖版本的文件时,往往会填入过时的版本,因为它们的训练数据可能是几周或几个月前的,而此后又发布了新的依赖版本。作为开发者,手动修正这些过时的版本很麻烦。

这个 MCP 服务可以解决这个问题。将它与 Context7 等 MCP 服务搭配使用,可避免 AI Agent 生成过时的代码。

功能

支持的生态系统/工具:

  • 开发者生态系统:
    • 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 的 PHP 包(供 Composer 使用)
    • Ruby - 来自 rubygems.org 的 Ruby gems
    • Rust - 来自 crates.io 的 Rust crates
    • Swift - 来自 GitHub 仓库的 Swift 包
    • Dart - 来自 pub.dev 的 Dart 包
  • DevOps 生态系统:
    • Docker - 来自 Docker 仓库的 Docker 容器镜像
    • Helm - 来自 ChartMuseum 仓库和 OCI 仓库的 Helm charts
    • GitHub Actions - 托管在 GitHub.com 上的 Actions,可返回其当前版本、输入和输出,以及(可选)包含用法示例的完整 README
    • Terraform Providers and Modules - 来自 Terraform Registry、OpenTofu Registry 或自定义仓库的 Providers 和 Modules
    • mise-en-place 支持的各种_工具_,如 kubectl、terraform、gradle、maven 等

使用方法

将 MCP 添加到你的 Agent

有三种方式可让你的 AI 编码 Agent 使用此 MCP 服务:

选项 1:使用托管服务(最简单)

将你的 Agent 指向免费的托管服务:

https://package-version-check-mcp.onrender.com/mcp

并使用(streamable)HTTP 模式。

这是最快的入门方式。请注意,托管服务可能会受到底层包仓库的速率限制。

选项 2:使用 uvx 运行(本地使用)

使用 uvx 在本地运行 MCP 服务:

uvx package-version-check-mcp --mode=stdio

这会自动从 PyPI 安装并运行最新版本。

要求:

  • 如果要调用 get_supported_tools 或 get_latest_tool_versions 工具,需要确保 mise 二进制文件位于 PATH 中

可选但建议: 设置 GITHUB_PAT 环境变量,值为 GitHub Personal Access Token(无需任何权限范围),以避免 GitHub API 速率限制。

选项 3:使用 Docker 运行(本地使用)

使用预构建的 Docker 镜像:

docker run --pull=always --rm -i ghcr.io/mshekow/package-version-check-mcp:latest --mode=stdio

可选但建议: 使用 -e GITHUB_PAT=your_token_here 传入 GITHUB_PAT 环境变量,以避免 GitHub API 速率限制。

缓存配置

为提升性能并减少对包仓库的 API 调用,你可以启用缓存:

  • PACKAGE_VERSION_CACHE_ENABLED:设为 true 以启用缓存(默认禁用)
  • PACKAGE_VERSION_CACHE_TTL_SECONDS:缓存时长(秒,默认值:3600 / 1 小时)
  • PACKAGE_VERSION_CACHE_MAX_SIZE_MB:缓存最大容量(MB,默认值:64)

缓存为内存中的 TTL(生存时间)缓存。MCP 服务重启时,缓存会重置。

配置你的 Agent

添加 MCP 服务后,你需要:

  1. 在 Agent 的配置中启用 MCP 工具。可用工具见下文

  2. 在提示词中引导 Agent 使用 MCP。大多数大模型不会在没有明确指引的情况下自动调用此 MCP 的工具。请添加类似以下说明:

    • “使用 MCP 获取最新版本”
    • “使用 MCP 工具检查最新的软件包版本”
    • “使用 get_latest_package_versions 查找当前版本”

如果你忘记添加此提示词,而 Agent 使用_过时_版本生成了代码,只需之后让 Agent 更新版本即可(例如:“通过 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:Crate 名称(例如,"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(必需):Action 名称数组,格式为 "owner/repo"(例如,["actions/checkout", "docker/login-action"])
  • include_readme(可选):布尔值(默认值:false),是否包含 Action 的 README.md 使用说明

输出:

  • result:成功查询结果的数组,包含:
    • name:Action 名称(按提供的名称)
    • latest_version:最新的 Git 标签(例如,"v3.2.4")
    • metadata:以对象形式返回的 action.yml 元数据,包含以下字段:
      • inputs:Action 输入参数
      • outputs:Action 输出
      • runs:执行配置
    • readme:(可选)如果 include_readme 为 true,则包含 Action 的 README 内容
  • lookup_errors:错误数组,包含:
    • name:Action 名称(按提供的名称)
    • 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:在通过 curl 或 wget 调用的下载 URL 中固定版本,例如在 Dockerfile 中
    • 示例: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 自动更新依赖项,定期自动构建发布版本。相比之下,其他项目往往是凭感觉编写的,测试质量差(甚至没有测试),而且已经被弃用,因为作者只是随手尝试了一下
  • 此 MCP 提供多种本地运行方式(uvx 或 docker),也可以直接使用免费的托管服务(其他 MCP 没有此服务)
  • 此 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 会错误地将依赖项安装到 .poetry 中,除非你之前运行过 poetry config virtualenvs.in-project true)。安装_开发_依赖项(例如 pytest)需要使用 --all-extras 标志。

更新依赖项
  • 如果依赖项由外部发生了变更,例如 Renovate 更新了 pyproject.toml 和 poetry.lock 文件,请运行 poetry sync --all-extras 以更新本地环境。这会从 .venv venv 中移除过时的依赖项。
  • 如果你更新了 pyproject.toml 中的依赖项,请运行 poetry update && poetry sync --all-extras,以更新锁文件并安装更新后的依赖项(包括额外依赖项)。
  • 如果只想更新传递依赖项(保持 pyproject.toml 中的依赖项不变),请运行 poetry update && poetry sync --all-extras。这会更新锁文件,并将更新安装到当前激活的 venv 中。

运行上述任何 poetry 命令时,请确保当前没有激活任何 venv(或已激活 .venv venv)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。