MCP Tools Reference

Complete reference for all tools exposed by the whatsdiff MCP server.

Overview

The MCP server provides four tools for querying package registries and gathering dependency information. All tools support both Composer (PHP) and npm (JavaScript) packages.


find_compatible_versions

Find which major versions of a package are compatible with a given dependency constraint.

Purpose

Determine which versions of a package can work with a specific dependency requirement. Useful when planning upgrades or resolving dependency conflicts.

Parameters

Parameter Type Required Description
package string Yes Package name to check (e.g., "livewire/livewire")
dependency_package string Yes Dependency to check against (e.g., "illuminate/support")
dependency_constraint string Yes Version constraint to match (e.g., "^11.0")
package_manager string No Either "composer" or "npm" (default: "composer")

Returns

{
  "package": "livewire/livewire",
  "dependency_package": "illuminate/support",
  "dependency_constraint": "^11.0",
  "package_manager": "composer",
  "compatible_versions": [
    {
      "major_version": 3,
      "example_version": "3.0.0",
      "requires": "^11.0"
    }
  ],
  "count": 1
}

Example Queries

"What versions of Livewire are compatible with Laravel 11?"
"Can I use Inertia with illuminate/support ^10.0?"
"Which major versions of react-router work with React 18?"

Use Cases

  • Planning framework upgrades
  • Resolving dependency conflicts
  • Evaluating package compatibility before installation
  • Understanding version constraints

get_release_notes

Fetch aggregated GitHub release notes for a package between two versions.

Purpose

Retrieve changelog information and release notes from GitHub to understand what changed between package versions.

Parameters

Parameter Type Required Description
package string Yes Package name (e.g., "laravel/framework")
from_version string Yes Starting version (e.g., "11.0.0")
to_version string Yes Ending version (e.g., "11.1.0")
package_manager string No Either "composer" or "npm" (default: "composer")

Returns

{
  "package": "laravel/framework",
  "repository": "https://github.com/laravel/framework",
  "from_version": "11.0.0",
  "to_version": "11.1.0",
  "releases": [
    {
      "version": "v11.1.0",
      "title": "Laravel 11.1.0",
      "body": "## Added\n- New features...\n\n## Fixed\n- Bug fixes...",
      "date": "2024-10-28 12:34:56",
      "url": "https://github.com/laravel/framework/releases/tag/v11.1.0"
    }
  ],
  "count": 1
}

Example Queries

"What changed in Laravel from 11.0 to 11.1?"
"Show me release notes for Symfony Console between 6.0 and 6.4"
"What are the breaking changes in React from 17 to 18?"

Use Cases

  • Understanding upgrade impact
  • Generating update summaries
  • Identifying breaking changes
  • Release planning and documentation

Notes

  • Fetches from GitHub releases and changelog files
  • Handles "v" prefix in version tags automatically
  • Returns empty releases array if no release notes found
  • Requires package to have a GitHub repository

get_available_upgrades

Get the latest available patch, minor, and major version upgrades for a package.

Purpose

Discover upgrade paths from a current version, showing the latest patch, minor, and major releases available.

Parameters

Parameter Type Required Description
package string Yes Package name (e.g., "symfony/console")
current_version string Yes Current version to upgrade from (e.g., "6.3.0")
package_manager string No Either "composer" or "npm" (default: "composer")
include_prerelease boolean No Include pre-release versions (default: false)

Returns

{
  "package": "symfony/console",
  "package_manager": "composer",
  "current_version": "6.3.0",
  "available_upgrades": {
    "patch": "6.3.5",
    "minor": "6.4.1",
    "major": "7.0.0"
  }
}

Example Queries

"What's the latest version of symfony/console I can upgrade to?"
"Show me upgrade options for Laravel from 10.0.0"
"What are the available upgrades for lodash from 4.17.0?"

Use Cases

  • Planning package updates
  • Identifying safe upgrade paths
  • Discovering latest releases
  • Evaluating update scope (patch vs minor vs major)

Notes

  • patch: Latest bug fix release in same minor version
  • minor: Latest feature release in same major version
  • major: Latest release regardless of breaking changes
  • Returns null for any upgrade type if none available
  • Filters out dev/alpha/beta releases by default

get_dependency_constraints

Get all dependencies required by a specific package version.

Purpose

Examine what a package requires at a specific version. Essential for understanding dependency trees and resolving conflicts.

Parameters

Parameter Type Required Description
package string Yes Package name (e.g., "laravel/framework")
version string Yes Specific version to check (e.g., "12.0.0")
package_manager string No Either "composer" or "npm" (default: "composer")

Returns (Composer)

{
  "package": "laravel/framework",
  "version": "12.0.0",
  "package_manager": "composer",
  "dependencies": {
    "require": {
      "php": "^8.2",
      "illuminate/support": "^12.0",
      "symfony/console": "^7.0"
    },
    "require-dev": {
      "phpunit/phpunit": "^11.0"
    }
  }
}

Returns (npm)

{
  "package": "react",
  "version": "18.2.0",
  "package_manager": "npm",
  "dependencies": {
    "dependencies": {
      "loose-envify": "^1.1.0"
    },
    "devDependencies": {},
    "peerDependencies": {
      "react-dom": "^18.2.0"
    }
  }
}

Example Queries

"What does Laravel 12 require as dependencies?"
"Show me what React 18.2.0 depends on"
"What are the requirements for Symfony 7.0?"

Use Cases

  • Understanding package requirements
  • Resolving dependency conflicts
  • Planning environment setup
  • Evaluating upgrade prerequisites

Notes

  • Composer returns: require and require-dev
  • npm returns: dependencies, devDependencies, and peerDependencies
  • Version must exist in registry
  • Handles versions with or without "v" prefix