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 versionminor: Latest feature release in same major versionmajor: Latest release regardless of breaking changes- Returns
nullfor 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:
requireandrequire-dev - npm returns:
dependencies,devDependencies, andpeerDependencies - Version must exist in registry
- Handles versions with or without "v" prefix