MCP server that provides latest package versions from multiple registries
Server provides 15 well-structured tools with complete JSON Schema definitions and clear descriptions. All tools have proper input schemas with typed parameters and enums where appropriate (e.g., registry enum with 34 options). Descriptions are substantive (100-250 chars typical), explaining WHAT the tool does and WHEN to use it. Tool names follow verb_noun convention (get_latest_version, check_outdated, apply_upgrades). However, some descriptions lack explicit guidance on prerequisites or error recovery. Output schemas are not formally documented in the source. Error handling is minimal, no recovery guidance or actionable error messages visible. Security concern: apply_upgrades is a WRITE tool but lacks dry-run confirmation pattern despite having dry_run parameter.
Apply an upgrade plan to a project, modifying dependency manifest files.
Check if a package version satisfies a version constraint.
Check the latest versions of multiple packages at once from their respective registries.
Check which dependencies in a project are outdated and have newer versions available.
Compare two semantic versions and return their relationship (less than, equal, greater than).
Detect version conflicts in a list of dependencies.
Find a compatible version of a package that satisfies a constraint.
Output schemas not documented. Tools return structured data but LLMs cannot see field definitions, types, or required fields. Downstream tool chaining and field extraction become error-prone.
apply_upgrades is a destructive WRITE tool but lacks explicit confirmation/dry-run guidance in description. While dry_run parameter exists, description does not warn LLM of irreversible consequences or recommend dry-run first.
Error handling and recovery guidance absent. No visible error classification (retryable vs fatal), no actionable error messages, no guidance on what to do if a registry is unreachable or a package is not found.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
Get the install command for a package at a specific version and registry. Returns the command to run to install the package.
Get the latest version of a package from a registry. Use when suggesting package installations or imports so you cite a current version. Returns { package, registry, latest_version, ... }.
Get detailed package metadata: latest version, description, homepage, license. Use when you need more than a bare version number. Returns structured package info for the given registry.
Analyze a project and generate an optimization plan to upgrade dependencies to compatible newer versions.
Analyze a project for dependency conflicts and suggest resolutions.
Scan a project directory to discover all dependencies and their versions from manifest files (package.json, requirements.txt, pom.xml, Cargo.toml, Gemfile, go.mod, etc.).
Suggest an upgrade path for a package from current version to target version.
Validate an upgrade plan to check for breaking changes and compatibility issues before applying.
Parameter descriptions lack format/constraint details. E.g., package_name accepts different formats per registry (npm: 'package-name', maven: 'groupId:artifactId') but descriptions do not guide LLM on which format to use for each registry.
Tool composition: scan_project, check_outdated, and resolve_conflicts all operate on project_path but do not document what fields they return or how their outputs chain to validate_upgrade_plan and apply_upgrades.