package-version-check-mcp
Fetches latest versions of Dart packages from pub.dev.
Fetches latest tags and manifest digests for Docker container images from Docker registries.
Fetches latest versions, inputs, outputs, and optionally the README for GitHub Actions hosted on github.com.
Fetches latest versions of Go modules from proxy.golang.org.
Fetches latest stable versions of the Gradle build tool via mise-en-place.
Fetches latest versions for Helm charts from ChartMuseum repositories and OCI registries.
Fetches latest stable versions of the .NET SDK via mise-en-place.
Fetches latest stable versions of the Node.js runtime via mise-en-place.
Fetches latest stable versions of Node.js packages from registry.npmjs.org.
Fetches latest stable versions of .NET packages from NuGet.
Supports looking up Terraform providers and modules from the OpenTofu Registry as an alternative registry.
Fetches latest versions of PHP packages from Packagist (the package repository for Composer).
Fetches latest versions of PHP packages from Packagist (used by Composer).
Fetches latest stable versions of Python packages from PyPI.
Fetches latest stable versions of the Python runtime via mise-en-place.
Fetches latest versions of Ruby gems from rubygems.org.
Fetches latest versions of Rust crates from crates.io.
Fetches latest versions of Swift packages from GitHub repositories.
Fetches latest versions of Terraform providers and modules from Terraform Registry or custom registries.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@package-version-check-mcpwhat's the latest version of lodash?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
package-version-check-mcp
A MCP server that returns the latest stable versions of packages you use as dependencies in a variety of ecosystems, such as Python, NPM, Go, or GitHub Actions.
It also supports looking up the latest versions of almost 1000 tools, such as development runtimes like python, node, dotnet, development tools like gradle, and various DevOps tools like kubectl or terraform, via the mise-en-place tool.
Why do I need this?
Whenever an AI coding agents generates files that pin dependency versions, they insert outdated versions because their training happened weeks or months ago, and new dependency versions have been released since then. As a developer, it is annoying having to manually fix these outdated versions.
This MCP fixes this problem. Use it together with an MCP such as Context7 to avoid that your AI agent produces outdated code.
Related MCP server: Dependency Freshness MCP Server
Features
Supported ecosystems / tools:
Developer ecosystems:
NPM - Node.js packages from registry.npmjs.org
PyPI - Python packages from PyPI
NuGet - .NET packages from NuGet
Maven / Gradle - Java/Kotlin/Scala packages from Maven repositories (Maven Central, Google Maven, etc.)
Go - Go modules from proxy.golang.org
PHP - PHP packages from Packagist (used by Composer)
Ruby - Ruby gems from rubygems.org
Rust - Rust crates from crates.io
Swift - Swift packages from GitHub repositories
Dart - Dart packages from pub.dev
DevOps ecosystems:
Docker - Docker container images from Docker registries
Helm - Helm charts from ChartMuseum repositories and OCI registries
GitHub Actions - Actions hosted on GitHub.com, returning their current version, their inputs and outputs, and (optionally) their entire README with usage examples
Terraform Providers and Modules - Providers & Modules from Terraform Registry, OpenTofu Registry, or custom registries
Various tools such as
kubectl,terraform,gradle,maven, etc. supported by mise-en-place
Usage
Adding the MCP to Your Agent
There are three ways to make this MCP available to your AI coding agent:
Option 1: Use the Hosted Service (Easiest)
Point your agent to the free hosted service:
https://package-version-check-mcp.onrender.com/mcpin (streamable) HTTP mode.
This is the quickest way to get started. Note that the hosted service may have rate limits from the underlying package registries.
Option 2: Run with uvx (for local use)
Use uvx to run the MCP server locally:
uvx package-version-check-mcp --mode=stdioThis automatically installs and runs the latest version from PyPI.
Requirements:
You need the
misebinary on PATH if you want to call the toolsget_supported_toolsorget_latest_tool_versions
Optional but recommended: Set the GITHUB_PAT environment variable to a GitHub Personal Access Token (no scopes required) to avoid GitHub API rate limits.
Option 3: Run with Docker (for local use)
Use the pre-built Docker image:
docker run --pull=always --rm -i ghcr.io/mshekow/package-version-check-mcp:latest --mode=stdioOptional but recommended: Pass the GITHUB_PAT environment variable using -e GITHUB_PAT=your_token_here to avoid GitHub API rate limits.
Caching Configuration
To improve performance and reduce API calls to package registries, you can enable caching:
PACKAGE_VERSION_CACHE_ENABLED: Set totrueto enable caching (disabled by default)PACKAGE_VERSION_CACHE_TTL_SECONDS: Cache duration in seconds (default: 3600 / 1 hour)PACKAGE_VERSION_CACHE_MAX_SIZE_MB: Maximum cache size in MB (default: 64)
The cache is an in-memory TTL (Time-To-Live) cache. It resets when the MCP server restarts.
Configuring Your Agent
Once you've added the MCP server, you need to:
Enable the MCP tools in your agent's configuration. The available tools are documented below
Nudge the agent to use the MCP in your prompts. Most LLMs don't automatically invoke this MCP's tools without explicit guidance. Include instructions like:
"Use MCP to get latest versions"
"Check the latest package versions using the MCP tools"
"Use get_latest_package_versions to find the current version"
In case you forgot to add this prompt and your agent generated code with outdated versions, you can just ask your agent to update the versions afterwards (e.g., "Update the dependencies you just added to the latest version via MCP").
Available Tools
get_latest_package_versions
Fetches the latest versions of packages from various ecosystems.
Input:
packages: Array of package specifications, where each item contains:ecosystem(required): Either "npm", "pypi", "nuget", "maven_gradle", "go", "php", "rubygems", "rust", "swift", "dart", "docker", "helm", "terraform_provider", or "terraform_module"package_name(required): The name of the packageFor npm: package name (e.g., "express")
For pypi: package name (e.g., "requests")
For nuget: package name (e.g., "Newtonsoft.Json")
For maven_gradle: "[registry:]:" format (e.g., "org.springframework:spring-core"). If registry is omitted, Maven Central is assumed.
For go: Absolute module identifier (e.g., "github.com/gin-gonic/gin")
For php: Package name in "vendor/package" format (e.g., "monolog/monolog", "laravel/framework")
For rubygems: Gem name (e.g., "rails", "devise")
For rust: Crate name (e.g., "serde", "tokio")
For swift: GitHub URL (e.g., "https://github.com/Alamofire/Alamofire.git" or "github.com/owner/repo.git"). Only github.com is supported.
For dart: Package name from pub.dev (e.g., "http", "flutter")
For docker: fully qualified image name including registry and namespace (e.g., "index.docker.io/library/busybox")
For helm: Either ChartMuseum URL ("https://host/path/chart-name") or OCI reference ("oci://host/path/chart-name")
For terraform_provider: "[registry/]/" format (e.g., "hashicorp/aws" or "registry.terraform.io/hashicorp/aws"). If registry is omitted, registry.terraform.io is assumed. Supports alternative registries like registry.opentofu.org.
For terraform_module: "[registry/]//" format (e.g., "terraform-aws-modules/vpc/aws" or "registry.terraform.io/terraform-aws-modules/vpc/aws"). If registry is omitted, registry.terraform.io is assumed. Supports alternative registries like registry.opentofu.org.
version_hint(optional):For docker: tag compatibility hint (e.g., "1.36-alpine") to find the latest tag matching the same suffix pattern. If omitted, returns the latest semantic version tag.
For helm (OCI only): tag compatibility hint similar to Docker
For npm/pypi/nuget/maven_gradle/go/php/rubygems/rust/swift/dart/helm (ChartMuseum)/terraform_provider/terraform_module: not currently used
Output:
result: Array of successful lookups with:ecosystem: The package ecosystem (as provided)package_name: The package name (as provided)latest_version: The latest version number (e.g., "1.2.4") or Docker tagdigest: (optional) Package digest/hash if available. For Docker, this is the manifest digest (sha256).published_on: (optional) Publication date if available (not available for Docker)
lookup_errors: Array of errors with:ecosystem: The package ecosystem (as provided)package_name: The package name (as provided)error: Description of the error
get_github_action_versions_and_args
Fetches the latest versions and metadata for GitHub Actions hosted on github.com.
Input:
action_names(required): Array of action names in "owner/repo" format (e.g., ["actions/checkout", "docker/login-action"])include_readme(optional): Boolean (default: false), whether to include the action's README.md with usage instructions
Output:
result: Array of successful lookups with:name: The action name (as provided)latest_version: The most recent Git tag (e.g., "v3.2.4")metadata: The action.yml metadata as an object with fields:inputs: Action input parametersoutputs: Action outputsruns: Execution configuration
readme: (optional) The action's README content ifinclude_readmewas true
lookup_errors: Array of errors with:name: The action name (as provided)error: Description of the error
get_supported_tools
Returns a list of all tool names supported by the get_latest_tool_versions MCP tool.
This tool queries the mise registry to retrieve all available tool names that can be managed by mise.
Input:
No parameters required
Output:
Array of tool short names (e.g., ["1password", "act", "node", "python", ...])
get_latest_tool_versions
Fetches the latest stable versions of development and DevOps tools supported by mise-en-place.
This tool is for tools that are NOT part of language ecosystems like PyPI or NPM. For language ecosystem packages (including Terraform providers and modules), use get_latest_package_versions instead.
Use cases:
gradle or maven: Pin the Gradle or Maven version in the
distributionUrlingradle-wrapper.propertiesormaven-wrapper.propertiesExample:
distributionUrl=https://services.gradle.org/distributions/gradle-8.5-bin.zipExample:
distributionUrl=https://repo.maven.apache.org/.../apache-maven-3.9.6-bin.zip
terraform: Pin
terraform.required_versionin a file likeversion.tforversions.tfExample:
terraform { required_version = "~> 1.6.0" }
kubectl or azure: Pin the version in a download URL called with
curlorwget, e.g., in a DockerfileExample:
RUN curl -LO https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl
To see all available tools, use the get_supported_tools tool.
Input:
tool_names(required): Array of tool names (e.g., ["terraform", "gradle", "kubectl"])
Output:
result: Array of successful lookups with:tool_name: The tool name (as provided)latest_version: The latest stable version number (e.g., "1.6.5")
lookup_errors: Array of errors with:tool_name: The tool name (as provided)error: Description of the error
Why build yet another MCP
This MCP is certainly not the first one to tackle the "outdated dependency" problem. However, we feel that it has various advantages over other MCPs:
We offer (far) better ecosystem coverage than other MCPs
There is full test coverage, with automated dependency updates (powered by Renovate) and regular, automated release builds. In contrast, other projects are often vibe coded, have poor (or no) tests, and are already abandoned, because the authors were just messing around
This MCP provides several alternatives for how to run it locally (uvx or docker), or you can just use the free hosted offering (which other MCPs do not have)
This MCP uses a minimal Docker/OCI image, hardened for security. SBOMs you generate with tools like Trivy are known to be correct, and the image is signed with Cosign (which allows you to verify its authenticity in case you want to self-host the MCP)
Development
Prerequisites
mise-en-place
The MCP server depends on the mise-en-place package for looking up tool versions. See https://mise.jdx.dev/installing-mise.html for installation instructions.
Running the Server Manually (For Development)
If you're developing or testing the MCP server locally, you can run it directly.
First, follow the Package management with Poetry -> Setup instructions to configure your virtual environments.
Next:
.poetry/bin/poetry run python -m package_version_check_mcp.mainOr if you have the .venv activated:
python src/package_version_check_mcp/main.pyPackage management with Poetry
Setup
On a new machine, create a venv for Poetry (in path <project-root>/.poetry), and one for the project itself (in path <project-root>/.venv), e.g. via C:\Users\USER\AppData\Local\Programs\Python\Python312\python.exe -m venv <path>.
This separation is necessary to avoid dependency conflicts between the project and Poetry.
Using the pip of the Poetry venv, install Poetry via pip install -r requirements-poetry.txt
Then, run poetry sync --all-extras, but make sure that either no venv is active, or the .venv one, but not the .poetry one (otherwise Poetry would stupidly install the dependencies into that one, unless you previously ran poetry config virtualenvs.in-project true). The --all-extras flag is required to install development dependencies, such as pytest.
Updating dependencies
When dependencies changed from the outside, e.g. because Renovate updated the
pyproject.tomlandpoetry.lockfile, runpoetry sync --all-extrasto update your local environment. This removes any obsolete dependencies from your.venvvenv.If you updated a dependency in
pyproject.toml, runpoetry update && poetry sync --all-extrasto update the lock file and install the updated dependencies including extras.To only update the transitive dependencies (keeping the ones in
pyproject.tomlthe same), runpoetry update && poetry sync --all-extras, which updates the lock file and installs the updates into the active venv.
Make sure that either no venv is active (or the .venv venv is active) while running any of the above poetry commands.
Available Tools
4 toolsget_github_action_versions_and_argsA
Get the latest versions and metadata for GitHub Actions.
This tool fetches the latest Git tag and action.yml metadata for GitHub Actions hosted on github.com. It can optionally include the README.md for usage instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| action_names | Yes | A list of action names in "owner/repo" format (e.g., ["actions/checkout", "docker/login-action"]) | |
| include_readme | No | Whether to include the README.md content (default: False) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | |
| lookup_errors | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the behavioral trait of fetching latest Git tag and action.yml metadata, and optionally README. However, it does not mention authentication needs, rate limits, or what happens for invalid inputs. Some additional context would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the primary purpose. Every sentence adds value and there is no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, output schema exists), the description covers the main functionality adequately. It could briefly mention the output format or that it only works for github.com-hosted actions, but the existence of an output schema reduces the need for return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions. The tool description adds context by mentioning 'latest versions and metadata' and README, but does not significantly enhance the understanding of the parameters beyond the schema. Baseline for 100% coverage is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets the latest versions and metadata for GitHub Actions, specifying the exact data fetched (latest Git tag and action.yml) and optional README inclusion. This distinguishes it from sibling tools like get_latest_package_versions which target packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on what the tool does and its optional parameter, but does not explicitly state when to use this tool versus alternatives or when not to use it. Given the distinct purpose from siblings, this is acceptable but not maximally helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_package_versionsB
Get the latest versions of packages from various ecosystems.
This tool fetches the latest version information for packages from NPM, PyPI, NuGet, Maven/Gradle, Go modules, PHP/Packagist, Ruby gems, Rust crates, Swift packages, Dart packages, Docker, Helm, Terraform modules and Terraform providers. It returns both successful lookups and any errors that occurred.
| Name | Required | Description | Default |
|---|---|---|---|
| packages | Yes | A list of package version requests with: - ecosystem: "npm", "pypi", "nuget", "maven_gradle", "go", "php", "rubygems", "rust", "swift", "dart", "docker", "helm", "terraform_provider", or "terraform_module" - package_name: The name of the package (e.g., "express", "requests", "Newtonsoft.Json") For Maven/Gradle, use format "[registry:]<groupId>:<artifactId>" (e.g., "org.springframework:spring-core" for Maven Central, "maven.google.com:com.google.android.material:material" for Google Maven) For Go, use the absolute module identifier (e.g., "github.com/gin-gonic/gin") For PHP, use the Packagist package name in "vendor/package" format (e.g., "monolog/monolog", "laravel/framework") For RubyGems, use the gem name (e.g., "rails", "devise") For Rust, use the crate name (e.g., "serde", "tokio") For Swift, use the GitHub URL (e.g., "https://github.com/owner/repo.git" or "github.com/owner/repo.git") - only github.com is supported For Dart, use the package name from pub.dev (e.g., "flutter", "http") For Docker, this must be fully qualified (e.g., "index.docker.io/library/busybox") For Helm, use one of these formats: - ChartMuseum: "https://host/path/chart-name" (fetches from index.yaml) - OCI: "oci://host/path/chart-name" (queries OCI registry tags) - version_hint: (optional) For Docker and Helm OCI, used as a tag compatibility hint (e.g., "1.2-alpine") to find the latest tag matching the same suffix pattern. For NPM/PyPI/NuGet/Maven/ChartMuseum/Go/PHP/RubyGems/Rust/Swift/Dart, not used. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | |
| lookup_errors | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions error handling but does not disclose whether the tool is read-only, requires authentication, or has rate limits. The description lacks detail on idempotency and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and efficiently lists ecosystems without extraneous detail. It is moderately long but each sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description adequately covers input handling and error reporting. However, it does not explain the output structure or preconditions, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with detailed descriptions per parameter, including formatting examples. The main description adds little beyond listing ecosystems, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: getting latest versions of packages from various ecosystems. It lists supported ecosystems and indicates return of both successes and errors, distinguishing it from sibling tools like get_github_action_versions_and_args.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for package version lookups but provides no explicit when-to-use or when-not-to-use guidance. It does not contrast with sibling tools or mention exclusion criteria, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_tool_versionsA
Get the latest stable versions of tools supported by mise-en-place.
This tool fetches the latest stable version of development and DevOps tools that are NOT part of language ecosystems like PyPI or NPM. For language ecosystem packages (including Terraform providers and modules), use the get_latest_package_versions tool instead.
Use this tool to determine the latest versions of tools like:
gradle: Pin the Gradle version in distributionUrl in gradle-wrapper.properties (e.g., distributionUrl=https://services.gradle.org/distributions/gradle-8.5-bin.zip)
maven: Pin the Maven version in distributionUrl in maven-wrapper.properties (e.g., distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip)
terraform: Pin terraform.required_version in a file like version.tf or versions.tf (e.g., terraform { required_version = "~> 1.6.0" })
kubectl: Pin the version in a download URL called with curl or wget in a Dockerfile (e.g., RUN curl -LO https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl)
azure: Pin Azure CLI version in download URL (e.g., curl -LO https://azurecliprod.blob.core.windows.net/releases/azure-cli-2.50.0.tar.gz)
To see all available tools, use the get_supported_tools tool.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_names | Yes | A list of tool names (e.g., ["terraform", "gradle", "kubectl"]) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | |
| lookup_errors | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses it returns stable versions for a specific set of tools, and no side effects are implied. Without annotations, it adequately covers behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, well-organized with examples, but contains some lengthy details that could be condensed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a simple tool with output schema; includes scope differentiation, usage guidance, and reference to sibling for full list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters; description adds value by providing concrete example tool names, enhancing understanding of valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches latest stable versions of non-language-ecosystem tools, and distinguishes from sibling get_latest_package_versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (for tools not in language ecosystems) and when not to (use get_latest_package_versions for ecosystem packages), with practical examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supported_toolsA
Get list of all tools supported by the get_latest_tool_versions MCP tool.
This tool queries the mise registry to retrieve all available tool names that can be used with the get_latest_tool_versions tool.
Returns: A list of tool short names (e.g., ["1password", "act", "node", "python", ...])
Example: >>> await get_supported_tools() ["1password", "act", "node", "python", ...]
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the disclosure burden. It accurately describes the read-only nature (retrieving a list) and includes return type and example. It could mention potential error conditions but is sufficient for a simple query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear purpose stated first, followed by a brief explanation, return type, and example. Every sentence contributes to understanding without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with a simple return value, the description fully explains what it does, what it returns, and where the data comes from. The presence of an output schema (unseen but noted) further supports completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is trivially 100%. The description adds value beyond the schema by explaining the return structure (list of tool short names) and providing an example, which helps an agent understand the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves the list of all tools supported by the get_latest_tool_versions MCP tool, specifically from the mise registry. It distinguishes itself from siblings by focusing on supported tools rather than versions or arguments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on how the tool relates to get_latest_tool_versions, suggesting its usage as a supporting query. However, it lacks explicit instructions on when not to use it or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.2.0- First observed
get_github_action_versions_and_args - First observed
get_latest_package_versions - First observed
get_latest_tool_versions - First observed
get_supported_tools
TDQS
Each tool targets a distinct domain (GitHub Actions, ecosystem packages, dev tools, tool listing). Descriptions clearly differentiate between packages and tools, reducing ambiguity.
All tools follow a consistent 'get_<specific_noun>' snake_case pattern, making it easy to predict and understand tool purposes.
Four tools is appropriate for a focused version-checking service—neither too few nor too many, covering the essential operations.
The tool surface covers the major version-checking needs: GitHub Actions, package ecosystems, dev tools, and a way to list supported tools. No obvious gaps for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Package intelligence for AI agents across npm, PyPI, crates.io and deps.dev. No API keys.
61Package intelligence for AI agents across npm, PyPI, crates.io and deps.dev. No API keys.
npm & PyPI freshness for AI agents: latest version, deprecations, dated breaking-change diffs.
Latest versions, LTS windows, and EOL dates for 300+ products. Fresh ground truth for stale models.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceSuggests the latest stable package versions when writing code.311122MIT
- AlicenseAqualityBmaintenanceChecks npm and PyPI packages for outdated versions, deprecation status, and breaking changes with cited sources, enabling AI agents to verify dependency freshness.117ISC
- FlicenseNot gradedqualityCmaintenanceGrants AI agents real-time access to the NPM registry, enabling package metadata retrieval, version checks, and dependency auditing for up-to-date code generation.213-
- FlicenseAqualityDmaintenanceEnables AI agents to retrieve the latest semantic version tags for container images from Docker Hub, GHCR, Quay, and other OCI registries, allowing them to pin specific versions for reproducible deployments.5-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MShekow/package-version-check-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server