What's diff whatsdiff
MCP Server

Tools Reference

Every tool exposed by the whatsdiff MCP server.

On this page 19

The MCP server exposes four tools. Each one works with both Composer and npm packages, selected by the optional package_manager parameter, which defaults to composer.

For the questions you would actually type to trigger these, see usage.

find_compatible_versions

Finds which major versions of a package are compatible with a given dependency constraint. Use it when planning an upgrade or working out why two packages will not install together.

Parameters

Parameter Type Required Description
package string Yes Package 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 composer or npm (default: composer)

Returns

json
{
  "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

code
What versions of Livewire are compatible with Laravel 11?

Which major versions of react-router work with React 18?

get_release_notes

Fetches GitHub release notes for a package between two versions, so an assistant can summarise an upgrade or point at the breaking changes in it.

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 composer or npm (default: composer)

Returns

json
{
  "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

code
What changed in Laravel from 11.0 to 11.1?

What are the breaking changes in React from 17 to 18?

Notes

  • Reads GitHub releases and changelog files, so the package needs a GitHub repository
  • Handles the v prefix in version tags automatically
  • Returns an empty releases array when no notes are found

get_available_upgrades

Returns the latest patch, minor, and major release available from a current version, which tells you whether an update is something you can take today or something to schedule.

Parameters

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

Returns

json
{
  "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

code
What's the latest version of symfony/console I can upgrade to?

What are the available upgrades for lodash from 4.17.0?

Notes

  • patch is the latest bug fix release in the same minor version
  • minor is the latest feature release in the same major version
  • major is the latest release regardless of breaking changes
  • Any of the three is null when nothing is available
  • Dev, alpha, and beta releases are filtered out unless include_prerelease is set

get_dependency_constraints

Lists everything a specific version of a package requires. This is where dependency conflicts usually reveal themselves.

Parameters

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

Returns

Composer packages return require and require-dev:

json
{
  "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"
    }
  }
}

npm packages return dependencies, devDependencies, and peerDependencies:

json
{
  "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

code
What does Laravel 12 require as dependencies?

Does Livewire 3 require Alpine.js?

Notes

  • The version must exist in the registry
  • Versions are accepted with or without a v prefix