Skip to main content
Glama
trianglegrrl

versionator-mcp

by trianglegrrl

Versionator MCP Server

CI Pipeline PyPI version Python 3.10+

An MCP (Model Context Protocol) server that queries package registries across 19 different ecosystems to retrieve the latest release versions of packages. It follows a strict fail-hard policy and always returns current data.

Features

  • 19 Package Registries: npm, RubyGems, PyPI, Hex.pm, crates.io, Bioconda, CRAN, Terraform Registry, DockerHub, CPAN, Go modules, Composer, NuGet, Homebrew, Nextflow, nf-core modules, nf-core subworkflows, Swift Package Manager, Maven Central

  • Language/Ecosystem Aliases: Use familiar names like python, rust, go, etc.

  • No Caching: Always returns current latest version

  • Fail-Hard Error Handling: No fallbacks or stale data

  • Rich Metadata: Package descriptions, homepages, and license information

  • Configurable Timeouts: Adjust API request timeouts as needed

  • Test Client Included: vmcp command-line tool for testing and manual queries

  • Optimized for Claude Desktop Integration

Related MCP server: github-insight-mcp

Quick Start

The easiest way to use Versionator with Claude Desktop is via uvx:

# Install uvx if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Run Versionator directly with uvx
uvx versionator-mcp

Option 2: Install Locally

# Install from PyPI
pip install versionator-mcp

# Or install with pipx for isolated environment
pipx install versionator-mcp

Editor Integration

Claude Desktop

Add configuration to your Claude Desktop MCP settings:

Config Location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Recommended (uvx):

{
  "mcpServers": {
    "versionator": {
      "command": "uvx",
      "args": ["versionator-mcp"]
    }
  }
}

Alternative methods:

{
  "mcpServers": {
    "versionator": {
      "command": "pipx",
      "args": ["run", "versionator-mcp"]
    }
  }
}

Cursor

Create .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "versionator": {
      "command": "uvx",
      "args": ["versionator-mcp"],
      "env": {
        "VERSIONATOR_REQUEST_TIMEOUT": "30"
      }
    }
  }
}

Global configuration: ~/.cursor/mcp.json

Pro Tip: This repository includes a .cursor/mcp.json and .cursor/rules file that:

  • Configures Versionator for immediate use

  • Sets up rules to automatically check package versions before installations

  • Ensures you always get current version information when working with dependencies

Windsurf

Edit ~/.codeium/mcp_config.json:

{
  "mcpServers": {
    "versionator": {
      "command": "uvx",
      "args": ["versionator-mcp"]
    }
  }
}

UI Method: Settings → Tools → Windsurf Settings → Add Server

Claude Code

Add to your Claude Code MCP configuration:

{
  "mcpServers": {
    "versionator": {
      "command": "uvx",
      "args": ["versionator-mcp"]
    }
  }
}

📁 Example configs: See examples/ directory for complete configuration files

Available Functions

1. get_package_version - Universal Package Version Query

Query the latest version from any supported registry.

Parameters:

  • package_manager (str): Registry name or alias

  • package_name (str): Name of the package

Supported Registries:

  • npm (aliases: node, nodejs) - Node.js packages

  • rubygems (aliases: gem, ruby) - Ruby gems

  • pypi (aliases: pip, python) - Python packages

  • hex (aliases: elixir, hex.pm) - Elixir packages

  • crates (aliases: cargo, rust) - Rust crates

  • bioconda (aliases: conda) - Bioconda packages

  • cran (aliases: r) - R packages

  • terraform (aliases: tf) - Terraform providers

  • dockerhub (aliases: docker) - Docker images

  • cpan (aliases: perl) - Perl modules

  • go (aliases: golang) - Go modules

  • composer (aliases: php, packagist) - PHP packages

  • nuget (aliases: dotnet, .net) - .NET packages

  • homebrew (aliases: brew) - macOS packages

  • nextflow (aliases: nf-core) - Nextflow pipelines

  • nf-core-module (aliases: nfcore-module, nf-module) - nf-core modules

  • nf-core-subworkflow (aliases: nfcore-subworkflow, nf-subworkflow) - nf-core subworkflows

  • swift (aliases: spm) - Swift packages

  • maven (aliases: mvn) - Java artifacts

Examples:

# Query npm package
get_package_version("npm", "react")
# Returns: {"name": "react", "version": "19.1.1", ...}

# Query with aliases
get_package_version("python", "django")
get_package_version("rust", "serde")
get_package_version("go", "github.com/gin-gonic/gin")
get_package_version("terraform", "hashicorp/aws")
get_package_version("docker", "nginx")
get_package_version("r", "ggplot2")
get_package_version("php", "symfony/console")
get_package_version("dotnet", "Newtonsoft.Json")
get_package_version("homebrew", "git")
get_package_version("nextflow", "nf-core/rnaseq")
get_package_version("nf-core-module", "fastqc")
get_package_version("nf-core-subworkflow", "bam_sort_stats_samtools")
get_package_version("swift", "apple/swift-package-manager")
get_package_version("maven", "org.springframework:spring-core")

2. Registry-Specific Functions

  • get_npm_package(package_name) - NPM packages

  • get_ruby_gem(gem_name) - RubyGems packages

  • get_python_package(package_name) - PyPI packages

  • get_elixir_package(package_name) - Hex.pm packages

  • get_rust_crate(crate_name) - Rust crates

  • get_bioconda_package(package_name) - Bioconda packages

  • get_r_package(package_name) - R packages

  • get_terraform_provider(provider_path) - Terraform providers

  • get_docker_image(image_name) - Docker images

  • get_perl_module(module_name) - Perl modules

  • get_go_module(module_path) - Go modules

  • get_php_package(package_name) - PHP/Composer packages

  • get_dotnet_package(package_name) - .NET/NuGet packages

  • get_homebrew_formula(formula_name) - Homebrew formulas

  • get_nextflow_pipeline(pipeline_name) - Nextflow pipelines

  • get_nfcore_module(module_name) - nf-core modules

  • get_nfcore_subworkflow(subworkflow_name) - nf-core subworkflows

  • get_swift_package(package_name) - Swift packages

  • get_maven_artifact(artifact_name) - Maven artifacts

Response Format

All functions return a PackageVersion object:

{
  "name": "react",
  "version": "19.1.1",
  "registry": "npm",
  "registry_url": "https://registry.npmjs.org/react/latest",
  "query_time": "2025-08-13T10:30:00Z",
  "description": "React is a JavaScript library for building user interfaces.",
  "homepage": "https://react.dev/",
  "license": "MIT"
}

Testing with vmcp

The project includes a command-line test client called vmcp for manual testing and verification:

Installation and Usage

# Make the vmcp script executable (if needed)
chmod +x vmcp

# Query packages from different registries
./vmcp python pandas          # Query PyPI for pandas
./vmcp npm react              # Query npm for react
./vmcp rust serde             # Query crates.io for serde
./vmcp go github.com/gin-gonic/gin  # Query Go modules
./vmcp terraform hashicorp/aws      # Query Terraform registry
./vmcp docker nginx           # Query DockerHub
./vmcp perl JSON              # Query CPAN
./vmcp r ggplot2              # Query CRAN
./vmcp bioconda samtools      # Query Bioconda
./vmcp php symfony/console    # Query Packagist for PHP packages
./vmcp dotnet Newtonsoft.Json # Query NuGet for .NET packages
./vmcp homebrew git           # Query Homebrew formulas
./vmcp nextflow nf-core/rnaseq # Query Nextflow pipelines
./vmcp nf-core-module fastqc  # Query nf-core modules
./vmcp nf-core-subworkflow bam_sort_stats_samtools # Query nf-core subworkflows
./vmcp swift apple/swift-package-manager # Query Swift packages
./vmcp maven org.springframework:spring-core # Query Maven Central

# List all available MCP tools
./vmcp --list-tools

# Check server health
./vmcp --health

Example Output

$ ./vmcp rust serde
🔍 Querying rust/serde...
✅ serde @ v1.0.215 (crates)
   📝 A generic serialization/deserialization framework
   🏠 https://serde.rs

The vmcp client is particularly useful for:

  • Testing your MCP setup before integrating with editors

  • Verifying package queries work correctly

  • Debugging connection issues with the MCP server

  • Exploring available tools and their capabilities

Error Handling

The server follows a strict FAIL HARD policy:

  • No Fallbacks: Never returns cached or default values

  • No Suppression: All errors propagate to the caller

  • Clear Messages: Errors include context and details

  • Input Validation: Validates before making API calls

Common errors:

  • ValueError: Invalid package name or unknown package manager

  • Exception: Package not found or API failures

Configuration

Environment variables (optional):

  • VERSIONATOR_REQUEST_TIMEOUT: API request timeout in seconds (default: 30)

Troubleshooting

Common MCP Issues

  1. Server not starting: Check that the command path is correct in your configuration

  2. Permission errors: Ensure the Python executable has proper permissions

  3. Package not found: Verify the package is installed and accessible from the command line

  4. Editor not detecting server: Restart your editor after adding MCP configuration

Testing Your Setup

You can test the server directly from the command line:

# Test with uvx
uvx versionator-mcp

# Test with pipx
pipx run versionator-mcp

# Test direct installation
python -m versionator_mcp.main

The server should start and show initialization messages. Press Ctrl+C to stop.

Alternative: HTTP Server Mode

For advanced use cases, you can run Versionator as an HTTP server:

# Start HTTP server (default port 8083)
FASTMCP_PORT=8083 python -m versionator_mcp.main

# Custom port
FASTMCP_PORT=9000 python -m versionator_mcp.main

Then configure Claude Desktop with:

{
  "mcpServers": {
    "versionator": {
      "url": "http://localhost:8083/mcp",
      "transport": "http"
    }
  }
}

Note: HTTP mode requires manually starting the server before using Claude Desktop.

Development

Setup

# Clone the repository
git clone https://github.com/trianglegrrl/versionator-mcp.git
cd versionator-mcp

# Install in development mode with dev dependencies
pip install -e ".[dev]"

Project Structure

The project follows a clean, modular architecture:

versionator_mcp/
├── __init__.py
├── app.py                    # FastMCP app factory and configuration
├── config.py                 # Environment configuration management
├── main.py                   # Entry point for the MCP server
├── models.py                 # Pydantic data models
├── core/                     # Core utilities and base classes
│   ├── __init__.py
│   ├── base_registry.py      # Abstract base class for registries
│   ├── http_client.py        # Shared HTTP client utilities
│   └── registry_factory.py   # Registry factory and mapping
├── registries/               # Individual registry implementations
│   ├── __init__.py
│   ├── npm.py               # NPM registry
│   ├── rubygems.py          # RubyGems registry
│   ├── pypi.py              # PyPI registry
│   ├── hex.py               # Hex.pm registry
│   ├── crates.py            # Crates.io registry
│   ├── bioconda.py          # Bioconda registry
│   ├── cran.py              # CRAN registry
│   ├── terraform.py         # Terraform registry
│   ├── dockerhub.py         # DockerHub registry
│   ├── cpan.py              # CPAN registry
│   ├── go.py                # Go modules registry
│   ├── composer.py          # PHP Composer registry
│   ├── nuget.py             # NuGet registry
│   ├── homebrew.py          # Homebrew registry
│   ├── nextflow.py          # Nextflow registry
│   ├── nfcore.py            # nf-core modules/subworkflows
│   ├── swift.py             # Swift Package Manager
│   └── maven.py             # Maven Central
└── tools/                   # MCP tool registration
    ├── __init__.py
    └── registry_tools.py     # MCP tool definitions

Architecture Benefits

  • Modular Design: Each registry is implemented in its own file with a consistent interface

  • Single Responsibility: Each module has a clear, focused purpose

  • Easy Extension: Adding new registries requires minimal changes to existing code

  • Testability: Individual registries can be tested in isolation

  • Maintainability: Changes to one registry don't affect others

  • DRY Principle: Common HTTP logic is shared across all registries

Adding New Registries

To add support for a new package registry:

  1. Create Registry Implementation: Create a new file in versionator_mcp/registries/ (e.g., new_registry.py)

  2. Extend BaseRegistry: Implement the abstract methods from BaseRegistry

  3. Register with Factory: Call register_registry() with your class and aliases

  4. Add MCP Tool: Add corresponding tool function in registry_tools.py

Example:

# versionator_mcp/registries/new_registry.py
from ..core import BaseRegistry, register_registry
from ..models import PackageVersion

class NewRegistry(BaseRegistry):
    @property
    def registry_name(self) -> str:
        return "new_registry"

    async def get_latest_version(self, package_name: str) -> PackageVersion:
        package_name = self.validate_package_name(package_name)
        url = f"https://api.new-registry.com/packages/{package_name}"

        data = await self.http_client.get_json(url, registry_name="NewRegistry", package_name=package_name)

        return PackageVersion(
            name=package_name,
            version=data.get("version", "unknown"),
            registry="new_registry",
            registry_url=url,
            query_time=self.http_client.get_current_timestamp(),
            description=data.get("description"),
            homepage=data.get("homepage"),
            license=data.get("license"),
        )

# Register with aliases
register_registry(NewRegistry, ["new", "nr"])

This project uses pre-commit hooks to ensure code quality and prevent issues:

# Install pre-commit hooks
pre-commit install
pre-commit install --hook-type pre-push

# Run hooks manually on all files
pre-commit run --all-files

Pre-commit hooks (run on git commit):

  • Trailing whitespace removal, end-of-file fixing, YAML validation

  • Large file detection, merge conflict detection, debug statement detection

  • Black code formatting, isort import sorting, mypy type checking

Pre-push hooks (run on git push):

  • pytest test suite (skips GitHub API tests to avoid rate limits)

The hooks automatically fix formatting issues when possible and prevent commits/pushes that don't meet quality standards.

Running Tests

# Run tests
pytest

# Run tests with coverage
pytest --cov=versionator_mcp

# Run linting
black --check .
isort --check-only .
mypy versionator_mcp/

Testing the MCP Server

# Test stdio transport (default)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | python -m versionator_mcp.main

Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Make your changes and add tests

  4. Run the test suite (pytest)

  5. Commit your changes (git commit -m 'Add amazing feature')

  6. Push to the branch (git push origin feature/amazing-feature)

  7. Open a Pull Request

Registry APIs

The server queries these endpoints:

  • npm: https://registry.npmjs.org/{package}/latest

  • RubyGems: https://rubygems.org/api/v1/versions/{gem}/latest.json

  • PyPI: https://pypi.org/pypi/{package}/json

  • Hex.pm: https://hex.pm/api/packages/{package}

  • crates.io: https://crates.io/api/v1/crates/{crate}

  • Bioconda: https://api.anaconda.org/package/bioconda/{package}

  • CRAN: https://crandb.r-pkg.org/{package}

  • Terraform: https://registry.terraform.io/v1/providers/{provider_path}

  • DockerHub: https://hub.docker.com/v2/repositories/{namespace}/{repo}/tags

  • CPAN: https://fastapi.metacpan.org/v1/module/{module}

  • Go Modules: https://api.github.com/repos/{owner}/{repo}/releases/latest (GitHub-hosted)

  • Composer: https://packagist.org/packages/{vendor}/{package}.json

  • NuGet: https://api.nuget.org/v3-flatcontainer/{package}/index.json

  • Homebrew: https://formulae.brew.sh/api/formula/{formula}.json

  • Nextflow: https://api.github.com/repos/nf-core/{pipeline}/releases/latest

  • nf-core modules: https://api.github.com/repos/nf-core/modules/commits?path=modules/nf-core/{module}

  • nf-core subworkflows: https://api.github.com/repos/nf-core/modules/commits?path=subworkflows/nf-core/{subworkflow}

  • Swift: https://api.github.com/repos/{owner}/{repo}/releases/latest

  • Maven: https://search.maven.org/solrsearch/select?q=g:{group}+AND+a:{artifact}

Performance Considerations

  • No Caching: Each call makes a fresh API request

  • Timeout: Configurable via VERSIONATOR_REQUEST_TIMEOUT

  • Concurrent Requests: Async implementation allows parallel queries

  • Rate Limits: Be mindful of registry rate limits

License

This project is licensed under the MIT License - see the LICENSE file for details.

Changelog

v1.3.1 (Release Process Fix)

  • FIXED: GitHub Release creation process for automated PyPI publishing

  • IMPROVED: Proper workflow trigger configuration for seamless releases

  • MAINTAINED: All v1.3.0 features and improvements included

v1.3.0 (Refactored Architecture & Type Safety)

  • REFACTORED: Complete codebase restructure for improved maintainability

  • NEW: Modular registry architecture with individual files for each package manager

  • NEW: Abstract base class pattern for consistent registry implementations

  • NEW: Factory pattern for registry management and discovery

  • NEW: Shared HTTP client utilities to eliminate code duplication

  • NEW: Modular test structure mirroring the main codebase organization

  • IMPROVED: 100% type safety compliance - zero mypy errors across 30 source files

  • IMPROVED: Enhanced type annotations throughout the entire codebase

  • IMPROVED: HTTP client return type flexibility for diverse API responses

  • IMPROVED: Proper forward reference handling for type checking

  • IMPROVED: Registry factory type safety with Optional parameter handling

  • IMPROVED: Separation of concerns - MCP tools, registries, and core utilities

  • IMPROVED: Easy extensibility - adding new registries requires minimal code changes

  • IMPROVED: Better testability with isolated registry implementations

  • IMPROVED: Consistent error handling across all registries

  • IMPROVED: Developer experience with clear project structure and full IDE type support

  • MAINTAINED: Full backward compatibility - all existing functionality preserved

  • MAINTAINED: All 19 package registries with identical behavior

  • MAINTAINED: Complete MCP tool compatibility

  • QUALITY: 56 comprehensive tests passing with 6 appropriately skipped in CI

  • QUALITY: Organized test structure with individual files per registry

v1.2.3

  • FIXED: GitHub API rate limit issues in CI by skipping GitHub-dependent tests

  • IMPROVED: CI reliability - 47 tests pass, 15 appropriately skipped in CI environment

  • ENHANCED: Maintains full test coverage locally while ensuring green CI builds

  • QUALITY: Resolves PyPI publish workflow failures caused by rate limiting

  • All features from v1.2.2 included with CI reliability improvements

v1.2.2

  • FIXED: Black code formatting compliance for nf-core functions

  • IMPROVED: CI/CD pipeline reliability with direct test execution in publish workflow

  • ENHANCED: Eliminated race condition between CI status checking and PyPI publish

  • All features from v1.2.1 included with formatting fixes

v1.2.1

  • NEW: Added support for nf-core modules and subworkflows:

    • nf-core modules - nf-core-module, nfcore-module, nf-module

    • nf-core subworkflows - nf-core-subworkflow, nfcore-subworkflow, nf-subworkflow

  • NEW: Registry-specific MCP tools:

    • get_nfcore_module(module_name) for nf-core modules

    • get_nfcore_subworkflow(subworkflow_name) for nf-core subworkflows

  • IMPROVED: Enhanced Nextflow ecosystem coverage for scientific computing

  • IMPROVED: Updated documentation with nf-core module/subworkflow examples

  • QUALITY: 62 comprehensive tests - all passing ✅

  • QUALITY: Full backward compatibility maintained

v1.2.0

  • NEW: Added support for 6 additional package registries:

    • PHP Composer (Packagist) - composer, php, packagist

    • .NET NuGet - nuget, dotnet, .net

    • Homebrew - homebrew, brew

    • Nextflow (nf-core) - nextflow, nf-core

    • Swift Package Manager - swift, spm

    • Maven Central - maven, mvn

  • NEW: Registry-specific MCP tools for all new package managers

  • IMPROVED: Enhanced vmcp test client with examples for all 17 registries

  • IMPROVED: Comprehensive documentation updates with new API endpoints

  • IMPROVED: Updated error messages and validation for new registries

  • QUALITY: 56 comprehensive tests - all passing ✅

  • QUALITY: Full backward compatibility maintained

v1.1.0

  • NEW: Added support for 7 additional package registries:

    • Rust (crates.io) - rust, cargo, crates

    • Bioconda (anaconda.org) - bioconda, conda

    • R (CRAN) - r, cran

    • Terraform Registry - terraform, tf

    • DockerHub - docker, dockerhub

    • Perl (CPAN) - perl, cpan

    • Go Modules - go, golang

  • NEW: Added vmcp command-line test client

  • NEW: Registry-specific MCP tools for each package manager

  • IMPROVED: Enhanced documentation with comprehensive examples

  • IMPROVED: Updated error messages and validation

v1.0.0

  • Initial release

  • Support for npm, RubyGems, PyPI, and Hex.pm

  • Optimized for Claude Desktop integration

  • uvx and pipx support

  • Comprehensive error handling

  • MCP protocol compliance

Tool DescriptionsB

Average 3.5/5 across 21 of 21 tools scored. Lowest: 2.9/5.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct package registry or ecosystem, with clear descriptions specifying the exact source (e.g., npm, PyPI, CRAN). There is no ambiguity or overlap between tools.

Naming Consistency5/5

All tools follow a consistent 'get_<ecosystem>_<type>' pattern in snake_case (e.g., get_npm_package, get_ruby_gem, get_docker_image). The health_check tool is the only deviation but still fits the overall verb_noun style.

Tool Count4/5

With 21 tools, the server covers a broad range of package registries, which is appropriate for a version-checking service. While slightly high, each tool serves a distinct purpose, justifying the count.

Completeness4/5

The server covers most major package registries (npm, PyPI, RubyGems, CRAN, etc.) and includes specialized ones like Bioconda and nf-core. The inclusion of a health_check tool is a minor deviation from the core version-checking purpose, but overall the surface is comprehensive.

Available Tools

21 tools
get_bioconda_packageA

Get the latest version of a Bioconda package from anaconda.org.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Bioconda package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It mentions 'latest version' and the source, but does not discuss side effects, rate limits, authentication, or error handling. The presence of an output schema (not shown) may cover return structure, but core behavioral traits are undressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no extraneous text. It efficiently communicates the tool's action, object, and source.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter tool and the existence of an output schema, the description provides sufficient context for basic usage. It omits network dependency or error states, but these are less critical for such a straightforward get operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds only marginal context beyond 'package name' by specifying the tool's domain and source. This is adequate for a single parameter, resulting in the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'latest version of a Bioconda package', and the source 'from anaconda.org'. This distinguishes it from sibling tools targeting different ecosystems like npm, Ruby, or Python.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool over alternatives, but the naming and resource mention (Bioconda, anaconda.org) imply the intended context. No exclusions or 'when not to use' guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_docker_imageA

Get the latest version of a Docker image from DockerHub.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_nameYesThe Docker image name (e.g., "nginx", "library/nginx")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It only states the primary action (get latest version) but omits behavioral details such as authentication requirements, rate limits, error handling, or what happens if the image does not exist. The description provides minimal behavioral context beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the action and resource, making it immediately clear what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description does not need to detail return values. For a simple tool with one parameter, the description is sufficiently complete. Minor improvement could include mentioning that it retrieves the latest tag.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter is fully documented in the schema. The tool description does not add additional meaning or context beyond the schema's description. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets the latest version of a Docker image from DockerHub. It specifies verb (Get), resource (latest version of a Docker image), and target source (DockerHub), distinguishing it from sibling tools that target other package registries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for Docker images on DockerHub but does not explicitly state when to use this tool versus alternatives. No when-not or alternative recommendations are provided. Context is clear but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dotnet_packageB

Get the latest version of a .NET NuGet package.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe NuGet package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only states 'get latest version', implying a read-only operation, but gives no details on authentication, rate limits, error scenarios (e.g., package not found), or any side effects. This is insufficient for an agent to confidently invoke the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 9 words, highly concise and front-loaded with the key information. No filler or redundancy present; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, output schema present), the description is nearly complete. It identifies the specific resource and version scope. The output schema handles return format details, so the description does not need to repeat them. Minor gap: no mention of behavior when package name is invalid or network issues, but acceptable for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (package_name described as 'The NuGet package name'). The tool description adds no additional meaning beyond what the schema provides. Baseline is 3; no improvement or degradation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the 'latest version of a .NET NuGet package'. The verb 'get' and the specific resource 'latest version of a .NET NuGet package' are precise, and it distinguishes itself from sibling tools targeting other package ecosystems (e.g., get_npm_package, get_ruby_gem).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., get_package_version for specific versions). It lacks explicit context about prerequisites, limitations, or exclusions, leaving the agent without criteria to differentiate usage cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_elixir_packageB

Get the latest version of an Elixir package from Hex.pm.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Hex package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility for behavioral disclosure. It does not mention authentication, rate limits, or behavior on missing packages. The output schema may cover return structure, but the description adds no behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of a single, clear sentence with no redundant or irrelevant information. It front-loads the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return values are covered. However, the description lacks usage guidelines and behavioral context, which are needed for a tool with multiple siblings and no annotations. It is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the parameter. The description adds the source (Hex.pm) but no additional semantic details for the parameter itself. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (Get), the resource (latest version of an Elixir package), and the source (Hex.pm). It distinguishes itself from sibling tools by specifying the language and package registry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_package_version or other language-specific tools. The absence of usage context leaves the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_go_moduleB

Get the latest version of a Go module.

ParametersJSON Schema
NameRequiredDescriptionDefault
module_pathYesThe Go module path (e.g., "github.com/gin-gonic/gin")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states 'Get the latest version', which is a read operation, but does not mention error handling (e.g., if module not found), return format beyond 'version', or any authentication requirements. The presence of an output schema helps but the description adds little transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no extraneous information. It is concise and front-loaded, achieving its communicative purpose efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an output schema, the description is minimally adequate. However, given the presence of many sibling tools (including generic get_package_version), some contextual guidance on when to use this specific tool would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a clear description for the sole parameter 'module_path'. The tool description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get the latest version') and the resource ('Go module'). The tool name and description differentiate it from sibling tools targeting different ecosystems (e.g., npm, Python). However, no explicit distinction between this and the generic get_package_version tool is made, though the name implies specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_package_version. An agent might not know if this tool is preferable for Go modules specifically. There is also no advice on prerequisites or common pitfalls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_homebrew_formulaA

Get the latest version of a Homebrew formula.

ParametersJSON Schema
NameRequiredDescriptionDefault
formula_nameYesThe Homebrew formula name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool gets the latest version but does not disclose any behavioral traits such as caching, API calls, error handling, or idempotency. However, for a simple read operation, this is minimally adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that contains no superfluous words. Every word earns its place, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (so return values are documented), the tool has one simple parameter, and the sibling tools provide clear context, the description is sufficiently complete. A slightly more detailed description of what constitutes a 'Homebrew formula' might help, but overall it's adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'formula_name' is described in the schema with 'The Homebrew formula name', and schema coverage is 100%. The description does not add extra meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'latest version of a Homebrew formula', making the tool's purpose specific and distinguishable from sibling tools that target other package managers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the description does not explicitly mention when or when not to use this tool, the tool name and context of siblings (all for different package ecosystems) implicitly guide the agent to use this for Homebrew formulas. A clear alternative is implied via sibling naming.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_maven_artifactA

Get the latest version of a Maven Central artifact.

ParametersJSON Schema
NameRequiredDescriptionDefault
artifact_nameYesThe Maven artifact name (groupId:artifactId format)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavior beyond 'get the latest version'. It omits details such as network dependency, response format, or any 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the core action and resource. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with high schema coverage and an output schema, the description is adequate. However, it could briefly clarify what 'latest version' entails (e.g., semantic version ordering).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear parameter description. The description adds value by specifying 'Maven Central' but does not augment the semantic beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get the latest version of a Maven Central artifact' clearly specifies the action (get), resource (latest version), and ecosystem (Maven Central), distinguishing it from sibling tools targeting other package managers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like get_package_version, which also retrieves package versions. The context of Maven artifacts is implied but not stated as a differentiator.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nextflow_pipelineC

Get the latest version of a Nextflow pipeline from nf-core.

ParametersJSON Schema
NameRequiredDescriptionDefault
pipeline_nameYesThe pipeline name (e.g., "nf-core/rnaseq")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It does not mention what happens if the pipeline is not found, whether multiple versions exist, or the output format. The output schema exists but is not referenced in the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, which is efficient for a simple tool. However, it could be structured to add more context about output or behavior without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an output schema, the description is minimally adequate. It does not explain what the returned data represents or handle edge cases, but the output schema compensates partially.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with a clear description for 'pipeline_name'. The tool description adds no additional semantics beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets the latest version of a Nextflow pipeline from nf-core. It distinguishes from sibling package getters, but could explicitly contrast with 'get_nfcore_module' and 'get_nfcore_subworkflow' for better differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'get_nfcore_module' or 'get_python_package'. The description lacks context about prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nfcore_moduleB

Get the latest version of an nf-core module.

ParametersJSON Schema
NameRequiredDescriptionDefault
module_nameYesThe module name (e.g., "fastqc", "bwa/mem")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It only says 'Get the latest version' without mentioning whether the operation is read-only, if authentication is needed, how errors are handled (e.g., module not found), or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no unnecessary words. It conveys the essential purpose efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description does not mention what is returned (e.g., version string, object). Given the existence of many sibling tools, the description is too minimal to fully inform an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a clear example for module_name. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the verb 'Get' and the resource 'latest version of an nf-core module', which clearly distinguishes it from sibling tools that retrieve versions from other ecosystems (e.g., npm, Python packages).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternative sibling tools like get_nextflow_pipeline or when not to use it. The description lacks context for appropriate selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nfcore_subworkflowC

Get the latest version of an nf-core subworkflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
subworkflow_nameYesThe subworkflow name (e.g., "bam_sort_stats_samtools")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states 'get the latest version'. It does not disclose behavioral traits such as read-only nature, response format, or any side effects. Given the lack of annotations, the description should carry more behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It is front-loaded with the main action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool has an output schema and a single parameter, the description lacks context about usage, prerequisites, and differentiation from siblings. Given the low complexity, it is minimally complete but not sufficiently helpful for an agent to choose correctly among many similar tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, which already includes an example. The tool description does not add any additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'get' and the resource 'latest version of an nf-core subworkflow'. It distinguishes from siblings like get_nfcore_module by specifying 'subworkflow', but does not clarify the difference between subworkflow and module.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not provide context for selecting this over similar get_* tools like get_nfcore_module or get_nextflow_pipeline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_npm_packageA

Get the latest version of an npm package.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe npm package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the basic operation but fails to disclose behavioral traits like error handling, network dependencies, or whether the package must exist. It is adequate for a simple read tool but lacks extra context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is appropriately concise, though it could benefit from slightly more structured phrasing (e.g., verb-object-context).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, output schema exists), the description is largely complete. It explains the primary purpose, but lacks detail on error states or prerequisites. Still, it is sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100% (the parameter 'package_name' is described). The description adds no additional semantic information beyond what the schema already provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get the latest version of an npm package' clearly states the action (get) and the resource (latest version of an npm package). It distinguishes itself from sibling tools that target other ecosystems like Ruby, Python, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when needing the latest version of an npm package, but it does not provide explicit guidance on when to use this tool versus alternatives, such as 'get_package_version' or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_package_versionB

Get the latest version of a package from the specified registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe name of the package to query
package_managerYesThe package manager/registry. Supported registries: - npm (aliases: node, nodejs) - Node.js packages - rubygems (aliases: gem, ruby) - Ruby gems - pypi (aliases: pip, python) - Python packages - hex (aliases: elixir, hex.pm) - Elixir packages - crates (aliases: cargo, rust) - Rust crates - bioconda (aliases: conda) - Bioconda packages - cran (aliases: r) - R packages - terraform (aliases: tf) - Terraform providers - dockerhub (aliases: docker) - Docker images - cpan (aliases: perl) - Perl modules - go (aliases: golang) - Go modules - composer (aliases: php, packagist) - PHP packages - nuget (aliases: dotnet, .net) - .NET packages - homebrew (aliases: brew) - Homebrew formulas - nextflow (aliases: nf-core) - Nextflow pipelines - nf-core-module (aliases: nfcore-module, nf-module) - nf-core modules - nf-core-subworkflow (aliases: nfcore-subworkflow, nf-subworkflow) - nf-core subworkflows - swift (aliases: spm) - Swift packages - maven (aliases: mvn) - Maven artifacts

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states the basic action (get version) without mentioning network calls, caching, error handling, or any side effects. This is insufficient for an operation that likely involves external requests.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no unnecessary words. It is front-loaded with the core action. However, a slightly more structured format (e.g., listing the registries) could improve scannability, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema, the description provides the essential information. However, it does not address edge cases (e.g., invalid package name, network failure) or any returned errors, leaving gaps for an agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds no extra meaning beyond the schema's brief descriptions. As per guidelines, baseline 3 is appropriate when schema covers parameters fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the latest version of a package from the specified registry,' combining a specific verb and resource with the source. It effectively distinguishes this generic tool from the per-registry sibling tools (e.g., get_npm_package) by implying a unified interface for any registry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not explain when to choose this tool over the per-registry siblings or mention any prerequisites (e.g., registry availability). This omission leaves the agent without context for appropriate invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_perl_moduleA

Get the latest version of a Perl module from CPAN.

ParametersJSON Schema
NameRequiredDescriptionDefault
module_nameYesThe CPAN module name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must bear full burden. It describes a read operation but lacks details on error handling, network usage, or caching behavior. The output schema exists but is not elaborated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an existing output schema, the description is nearly sufficient. However, it could mention that the tool returns version info and relies on network access.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter is fully documented in the schema. The description adds no additional meaning beyond 'The CPAN module name'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get'), resource ('latest version of a Perl module'), and source ('CPAN'). It effectively distinguishes from sibling tools targeting other package ecosystems.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. It is implied that this tool is for Perl modules, but no comparison or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_php_packageA

Get the latest version of a PHP Composer package from Packagist.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Composer package name (vendor/package format)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'latest version' but does not disclose behaviors such as caching, rate limits, error handling when a package is not found, or whether the tool is purely read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 12 words, front-loaded with the essential information. It contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (single parameter, single output), the presence of an output schema covers return values. The description is sufficiently complete, though it could mention what happens on errors or invalid inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single parameter already well-described as 'The Composer package name (vendor/package format)'. The description only adds 'PHP' context, providing marginal value beyond the schema. Baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Get the latest version'), the specific resource ('PHP Composer package'), and the data source ('Packagist'). This clearly distinguishes it from sibling tools like 'get_npm_package' or 'get_python_package'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like 'get_package_version' or other language-specific tools. While the resource specificity implies usage for PHP Composer packages, no exclusions or context for when not to use it are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_python_packageB

Get the latest version of a Python package from PyPI.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe PyPI package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It does not disclose any behavioral traits such as rate limits, error handling, caching, or what happens for non-existent packages. The description only states the basic purpose, which is insufficient for a mutation-oriented tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 10 words, very concise and front-loaded. However, it could be slightly expanded without losing conciseness to include key behavioral notes. Still, it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one parameter) and presence of an output schema (implied), the description is minimally complete for a simple lookup tool. However, it lacks context on errors, use cases, or prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for the single parameter, describing it as 'The PyPI package name'. The description adds no additional meaning beyond that, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get), the resource type (latest version of a Python package), and the source (PyPI). It is specific and distinguishes from siblings targeting other registries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for Python packages from PyPI, but does not explicitly state when to use this tool versus alternatives like 'get_package_version' or other registry-specific tools. No exclusion criteria or alternative recommendations are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_r_packageA

Get the latest version of an R package from CRAN.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe CRAN package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool is for retrieving the latest version, implying a read-only operation. However, it does not disclose behavior on missing packages, authorization needs, or rate limits. Minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that directly states the tool's function with no extraneous words. It is front-loaded and efficiently communicates the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, output schema present), the description is largely sufficient. However, it lacks details about error handling or output structure beyond what the output schema provides. Adequate for a basic retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the parameter 'package_name' described as 'The CRAN package name'. The description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('Get'), the resource ('latest version of an R package'), and the source ('from CRAN'). This distinguishes it from sibling tools focused on other package ecosystems.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for R packages on CRAN, but does not explicitly state when to use this tool versus alternatives like 'get_python_package' or 'get_npm_package'. No when-not or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ruby_gemB

Get the latest version of a Ruby gem.

ParametersJSON Schema
NameRequiredDescriptionDefault
gem_nameYesThe RubyGems package name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for behavioral disclosure. It only states the basic action ('Get the latest version'), omitting details such as read-only nature, error handling, rate limits, or what happens if the gem is not found. This is insufficient for safe agent invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. Every word adds value, and the essential information is presented immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and an output schema, the description is minimally complete. However, it lacks details about expected output structure or edge cases, which are not covered by annotations. Given the context signals, it is adequate but not exemplary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, which already describes its purpose. The description adds no extra semantics or formatting guidance. Baseline score of 3 is appropriate as the tool description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'latest version of a Ruby gem'. It distinguishes itself from sibling tools by specifying the RubyGems ecosystem, making the purpose explicit and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While the tool name and parameter imply it's for Ruby packages, there is no explicit statement of usage context, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rust_crateA

Get the latest version of a Rust crate from crates.io.

ParametersJSON Schema
NameRequiredDescriptionDefault
crate_nameYesThe crate name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states 'Get the latest version', implying a read operation, but fails to disclose important behaviors such as caching, error handling (e.g., if the crate does not exist), or rate limits. The minimal disclosure is insufficient for a tool interacting with an external API.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 9 words, delivering the core information without any fluff. Every word is meaningful; there is no redundancy or excessive detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter, output schema exists), the description is minimally adequate. It covers the basic purpose but could be improved by briefly noting that the result includes version and metadata (since output schema exists, this is less critical). However, for a simple lookup, it is functional.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the only parameter 'crate_name' is described as 'The crate name'). The tool description adds that the crate is from crates.io, which provides context for the parameter value, but does not significantly enhance the semantics beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the exact action ('Get the latest version'), the resource ('Rust crate'), and the source ('from crates.io'). It clearly distinguishes it from sibling tools which target other ecosystems (e.g., npm, RubyGems).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly suggests usage for Rust crate lookups via the name and content, but it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_swift_packageB

Get the latest version of a Swift package from GitHub.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe Swift package name (GitHub repo format: owner/repo)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits, but it only says 'Get the latest version' – no mention of authentication, rate limits, error cases, or whether it's read-only. The mutability is implied but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no fluff. It is concise but could optionally include a brief usage note without harming conciseness. Loses a point for lacking any structure beyond one line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (one parameter, output schema exists), the description covers the core purpose but omits context like prerequisites (e.g., GitHub API access) or error handling. It is minimally viable but not robust.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (package_name has a description), so baseline is 3. The tool description does not add extra meaning beyond the schema – it just reinforces the GitHub context. No examples or additional constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get the latest version') and the resource ('Swift package from GitHub'), which fully differentiates it from siblings like get_npm_package or get_python_package. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool compared to alternatives. While the resource name hints at Swift packages, there is no mention of when not to use it or direct references to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_terraform_providerA

Get the latest version of a Terraform provider from registry.terraform.io.

ParametersJSON Schema
NameRequiredDescriptionDefault
provider_pathYesThe provider path (e.g., "hashicorp/aws")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only mentions retrieving the latest version, but does not disclose error handling, authentication needs, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is concise and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool and the presence of an output schema, the description is adequately complete. It does not cover error scenarios but is sufficient for a lookup operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, and the schema already describes it well. The description adds no additional meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('latest version of a Terraform provider'), and the source ('registry.terraform.io'). It is distinct from sibling tools which target other package types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for Terraform providers, which naturally distinguishes it from siblings for other package managers. However, it does not explicitly state when not to use it or provide alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

health_checkA

Health check endpoint for Docker and monitoring

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description should disclose behavioral traits. It only states 'health check' without indicating whether it is read-only, side effects, or what the output contains. The output schema exists but the description adds no context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with one sentence that conveys the essential purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and has an output schema, the description is minimally complete. It identifies the tool as a health check, but does not elaborate on typical usage or return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema coverage is 100% (empty). Per guidelines, baseline is 4 for zero parameters. The description adds nothing about parameters, but none are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'Health check endpoint for Docker and monitoring', which is a specific verb-resource combination. It is distinct from sibling tools that retrieve package information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking server health, but does not explicitly state when to use this tool vs alternatives or provide any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

A
license - permissive license
A
quality
C
maintenance

Maintenance

0Releases (12mo)

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A comprehensive MCP server for checking package versions and rating package quality across Python (PyPI), JavaScript/TypeScript (npm), Dart (pub.dev), and Rust (crates.io) ecosystems.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Unified MCP server for searching, analyzing, and managing packages across npm, JSR, Deno, and multiple CDN providers with auto-detection.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server for checking package versions and metadata across multiple package managers including npm, PyPI, Maven, NuGet, RubyGems, Crates.io, and Go modules.
    6
    60
    1
    MIT

View all related MCP servers

Latest Blog Posts

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/trianglegrrl/versionator-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server