laravel/mcp
Build MCP servers inside Laravel so AI clients can safely interact with your app via the Model Context Protocol. Includes tools to expose app capabilities, run requests, and integrate quickly using Laravel’s conventions and docs.
#[SensitiveParameter] to parameters carrying secrets by @axlon in https://github.com/laravel/mcp/pull/265Full Changelog: https://github.com/laravel/mcp/compare/v0.8.2...v0.9.0
Likelihood Of Impact: low
The Laravel\Mcp\Client\Contracts\Transport contract now requires a setProtocolVersion method. The client calls this method after the initialize handshake so the transport can send the negotiated protocol version on subsequent requests.
If your application implements this contract, add the method to your transport:
public function setProtocolVersion(string $version): void
{
$this->protocolVersion = $version;
}
Transports that do not send per-request headers may implement the method as a no-op, as the first-party StdioTransport does.
Likelihood Of Impact: Medium
The MCP client now validates the negotiated protocol version against the new ProtocolVersion::clientSupported() method rather than ProtocolVersion::supported(). The client supports 2025-11-25 and 2025-06-18.
Connecting to a server that negotiates 2025-03-26 or 2024-11-05 previously succeeded and will now throw a Laravel\Mcp\Exceptions\ClientException.
The ProtocolVersion::supported() method is unchanged and still reports every version the server accepts.
Full Changelog: https://github.com/laravel/mcp/compare/v0.8.1...v0.8.2
Full Changelog: https://github.com/laravel/mcp/compare/v0.8.0...v0.8.1
Full Changelog: https://github.com/laravel/mcp/compare/v0.7.2...v0.8.0
Full Changelog: https://github.com/laravel/mcp/compare/v0.7.1...v0.7.2
Full Changelog: https://github.com/laravel/mcp/compare/v0.6.6...v0.6.7
Full Changelog: https://github.com/laravel/mcp/compare/v0.6.4...v0.6.5
assertStructuredContent($closure) support by @gdebrauwer in https://github.com/laravel/mcp/pull/172SessionInitialized event by @jessarcher in https://github.com/laravel/mcp/pull/152mcp- prefix and update references by @pushpak1300 in https://github.com/laravel/mcp/pull/145assertStructuredContent method by @gdebrauwer in https://github.com/laravel/mcp/pull/140Full Changelog: https://github.com/laravel/mcp/compare/v0.5.0...v0.5.1
Full Changelog: https://github.com/laravel/mcp/compare/v0.4.1...v0.4.2
2025-11-25 to supported protocolVersion by @pushpak1300 in https://github.com/laravel/mcp/pull/125Full Changelog: https://github.com/laravel/mcp/compare/v0.4.0...v0.4.1
Role case names by @pushpak1300 in https://github.com/laravel/mcp/pull/116resource-template stub and update JsonSchema import by @pushpak1300 in https://github.com/laravel/mcp/pull/122Applications referencing the previous case names will need manual updates.
Required changes
Role::ASSISTANT should be updated to Role::AssistantRole::USER should be updated to Role::UserMake sure your codebase reflects these changes before upgrading to avoid build or runtime errors.
Tool implementations that explicitly type hint Illuminate\JsonSchema\JsonSchema in their schema() or outputSchema() methods must update to use the contract interface Illuminate\Contracts\JsonSchema\JsonSchema.
Before
use Illuminate\JsonSchema\JsonSchema;
public function schema(JsonSchema $schema): array
{
//
}
After
use Illuminate\Contracts\JsonSchema\JsonSchema;
public function schema(JsonSchema $schema): array
{
//
}
This affects only custom tool classes that override the schema methods. The update is minimal, requiring only the import change to the contract interface.
Full Changelog: https://github.com/laravel/mcp/compare/v0.3.4...v0.4.0
Full Changelog: https://github.com/laravel/mcp/compare/v0.3.1...v0.3.2
client_id to string in JSON response by @mostafa-rz in https://github.com/laravel/mcp/pull/93.junie Detritus by @yitzwillroth in https://github.com/laravel/mcp/pull/59artisan optimize command by @nunomaduro in https://github.com/laravel/mcp/pull/66Full Changelog: https://github.com/laravel/mcp/compare/v0.1.0...v0.1.1
How can I help you explore Laravel packages today?