包版本检查mcp
MCP服务器,返回您在各种生态系统(如Python、NPM、Go或GitHub Actions)中用作依赖项的包的最新稳定版本。
它还支持查找近1000个工具的最新版本,例如 开发运行时间 喜欢 python, node, dotnet, 开发工具 喜欢 gradle,以及各种 DevOps工具 喜欢 kubectl 或 terraform,通过 就位 工具。
我为什么需要这个?
每当AI编码代理生成固定依赖版本的文件时,它们都会插入 过时的版本 因为他们的训练发生在几周或几个月前,从那时起,新的依赖版本已经发布。作为一名开发人员,手动修复这些过时的版本很烦人。
此MCP修复了此问题。将其与MCP一起使用,例如 背景7 以避免您的AI代理生成过时的代码。
特性
支持的生态系统/工具:
- 开发者生态系统:
- NPM -来自注册表.npmjs.org的Node.js包 - PyPI -PyPI中的Python包 - 纽吉特 - .NET包从NuGet - Maven/Gradle -来自Maven存储库(Maven Central、Google Maven等)的Java/Kotlin/Scala包 - 去 -Go模块来自proxy.golang.org - PHP -Packagist的PHP包(由Composer使用) - 红宝石 -Ruby宝石来自rubygems.org - 锈 -crates.io上的铁锈板条箱 - 迅速 -来自GitHub仓库的Swift包 - 飞镖 -来自pub.dev的Dart软件包
- DevOps生态系统:
- 码头工人 -来自Docker注册表的Docker容器镜像 - 舵 -ChartMuseum存储库和OCI注册表中的Helm图表 - GitHub操作 -在GitHub.com上托管的操作,返回其当前版本、输入和输出,以及(可选)包含使用示例的整个README - 地形 _提供商_ 和 _模块_ -来自Terraform注册表、OpenTofu注册表或自定义注册表的提供者和模块 - 多种 _工具_ 例如 kubectl, terraform, gradle, maven等,由mise就地支持
用法
将MCP添加到您的代理
有三种方法可以让您的AI编码代理使用此MCP:
选项1:使用托管服务(最简单)
将您的代理指向免费托管服务:
https://package-version-check-mcp.onrender.com/mcp在(流式)HTTP模式下。
这是最快的开始方式。请注意,托管服务可能受到底层包注册表的速率限制。
选项2:使用uvx运行(供本地使用)
使用 uvx 要在本地运行MCP服务器:
uvx package-version-check-mcp --mode=stdio这将自动安装并运行PyPI的最新版本。
要求:
- 你需要
mise如果你想调用这些工具,可以在PATH上使用二进制文件get_supported_tools或get_latest_tool_versions
可选但推荐: 设置 GITHUB_PAT 环境变量到GitHub个人访问令牌(无需作用域),以避免GitHub API速率限制。
选项3:使用Docker运行(本地使用)
使用预构建的Docker镜像:
docker run --pull=always --rm -i ghcr.io/mshekow/package-version-check-mcp:latest --mode=stdio可选但推荐: 通过 GITHUB_PAT 环境变量使用 -e GITHUB_PAT=your_token_here 以避免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服务器重新启动时,它会重置。
配置您的代理
添加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:“\[注册表:\]:“格式(例如,”org.springframework:springcore“)。如果省略注册表,则假定为Maven Central。 - 对于go:绝对模块标识符(例如,“github.com/gin-gonic/gin”) - 对于php:包名采用“vendor/Package”格式(例如,“monolog/monolog”、“laravel/framework”) - 对于rubygems:宝石名称(例如,“rails”、“develope”) - 铁锈:板条箱名称(例如“serde”、“tokio”) - 对于swift:GitHub URL(例如,“https://github.com/Alamofire/Alamofire.git“或”github.com/owner/report.git“)。只支持github。 - 对于dart:来自pub.dev的包名(例如,“http”、“flutter”) - 对于docker:完全限定的映像名称,包括注册表和命名空间(例如“index.docker.io/library/busybox”) - 掌舵人:ChartMuseum网址(“https://host/path/chart-name“)或OCI参考(”oci://host/path/chart-name") - 对于terraform_provider:“\[registry/\]/“格式(例如,”hashicorp/aws“或”registry.terraform.io/hashicorp.aws“)。如果省略注册表,则假定为register.terraform.io。支持registery.opentofu.org等替代注册表。 - 对于terraform_module:“\[registry/\]// “格式(例如,”terraform aws modules/vpc/aws“或”registry.terraform.io/terraform aws-modules/vpc/aws“)。如果省略注册表,则假定为register.terraform.io。支持registery.openofu.org等替代注册表。 - version_hint (可选): - 对于docker:tag兼容性提示(例如“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上托管的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:(可选)如果满足以下条件,则操作的README内容 include_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 或 专家:将Gradle或Maven版本固定在
distributionUrl在gradle-wrapper.properties或maven-wrapper.properties
- 例子: distributionUrl=https://services.gradle.org/distributions/gradle-8.5-bin.zip - 例子: distributionUrl=https://repo.maven.apache.org/.../apache-maven-3.9.6-bin.zip
- 地形改造:Pin
terraform.required_version在类似文件中version.tf或versions.tf
- 例子: terraform { required_version = "~> 1.6.0" }
- kubectl 的 或 蔚蓝:将版本固定在名为的下载URL中
curl或wget例如,在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有各种优势:
- 我们提供比其他MCP更好的生态系统覆盖率
- 有完整的测试覆盖率,有自动的依赖关系更新(由Renovate提供支持)和定期的自动发布构建。相比之下,其他项目通常采用vibe编码,测试质量差(或没有),并且已经被放弃,因为作者只是在闲逛
- 此MCP提供 _若干_ 如何在本地运行它的替代方案(uvx或docker),或者你可以只使用免费的托管产品(其他MCP没有)
- 此MCP使用 最小 Docker/OCI镜像,加强安全性。众所周知,您使用Trivy等工具生成的SBOM是正确的,并且图像已用Cosign签名(如果您想自行托管MCP,它允许您验证其真实性)
发展
先决条件
就位
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进行包管理
设置
在一台新机器上,为诗歌创建一个venv(在路径中 /.poetry),一个用于项目本身(在路径中 /.venv)例如,通过 C:\Users\USER\AppData\Local\Programs\Python\Python312\python.exe -m venv . 这种分离对于避免依赖是必要的 _冲突_ 在项目和诗歌之间。
使用 pip Poetry venv,通过安装Poetry pip install -r requirements-poetry.txt
然后,跑 poetry sync --all-extras,但请确保没有活动的venv,或者 .venv 一个,但是 不 这 .poetry 一个(否则Poetry会愚蠢地将依赖项安装到该程序中,除非您之前运行 poetry config virtualenvs.in-project true).这 --all-extras 需要标志才能安装 _发展_ 依赖关系,如pytest。
更新依赖关系
- 当依赖关系发生变化时 从外面例如,因为Renovate更新了
pyproject.toml和poetry.lock文件,运行poetry sync --all-extras更新您的本地环境。这将从您的.venv出来 - 如果 你 更新了中的依赖项
pyproject.toml,跑poetry update && poetry sync --all-extras更新锁文件并安装更新的依赖项,包括附加项。 - 仅更新 及物的 依赖关系(保留其中的依赖关系
pyproject.toml相同),运行poetry update && poetry sync --all-extras,更新锁文件并将更新安装到活动venv中。
确保没有活动的venv(或 .venv venv处于活动状态),同时运行上述任何一项 poetry 命令。
