gtapps/laravel-agentic
A Laravel package for building agentic AI features: orchestrate LLM-driven agents, tool calls, and multi-step workflows inside your PHP app using familiar Laravel conventions.
Architecture fit. The package is a thin integration layer that exposes Laravel actions as MCP tools, delegating protocol handling to laravel/mcp and model/prompt plumbing to laravel/ai. v0.1.1 confirms that architecture is holding: both upstream bumps were absorbed with zero source changes, which is the single most important signal in this release. It means the package's public surface is genuinely a wrapper over first-party contracts rather than a fork of them — the right shape for something we would not want to own ourselves.
Integration feasibility. Low effort to trial, assuming the host application is already on Laravel and can accept laravel/ai ~0.11.0. Installation is Composer-only; there is no infrastructure, queue, or schema component implied. The package is a server, so the integration surface is a route/transport plus a registry of exposed actions — both reversible via config.
Technical risk. Elevated, and driven almost entirely by dependency velocity rather than by the package's own code:
0.1.x and now requires laravel/mcp ^1.0 and laravel/ai ~0.11.0. In Composer's caret semantics for 0.x releases, 0.10 → 0.11 is a breaking boundary, not a minor bump. The release notes state "no source changes needed," which is reassuring for this package but does not mean it is compatible with our application's other laravel/ai consumers. Version-lock conflicts are the most likely reason an adoption attempt fails, not the code.laravel/mcp 0.9 → 1.0 crosses a major boundary. Claiming protocol 2026-07-28 alongside legacy initialize clients is a compatibility promise we should verify against our MCP clients rather than assume. Protocol dual-stacking is exactly where clients silently degrade.tools/list title fix (Str::headline() over the action name, e.g. refund-invoice → Refund Invoice) is a labeling improvement. That the headline feature of a patch is a display string is a fair proxy for how much first-party logic this package actually contains — and therefore how much value it adds over wiring laravel/mcp directly.Key questions.
laravel/ai ~0.11.0 constraint conflict with anything else in our dependency graph today? Can we resolve it without upgrading unrelated packages?tools/list title overridable per action, and is uniqueness enforced or merely conventional? What happens with two actions whose headlines collide?initialize path still works against them post-laravel/mcp 1.0?laravel/mcp 1.0 API-stable in practice, or is the package's ^1.0 constraint going to float us onto breaking changes inside a "stable" major?laravel/ai prerelease bumps promptly? The cadence here looks reactive.Stack fit. Appropriate only for a Laravel application that already owns discrete, well-named actions with clear input schemas. The package's value scales with how much of our domain is already modeled as actions; if we would be writing new action classes purely to satisfy the tool registry, the wrapper is providing negative value and we should reconsider scope before adopting.
Migration path. Greenfield trial, not a migration. There is no prior assessment and no incumbent integration to displace, so treat this as a spike: install into one non-critical service, expose two or three read-only actions, and confirm the tool contract end to end. Do not attempt to convert existing internal APIs in the first pass.
Compatibility. Two hard gates, both worth resolving before any code is written:
laravel/ai ~0.11.0 and laravel/mcp ^1.0 co-install with our current lockfile. Given the 0.10 → 0.11 semver break, assume friction until demonstrated otherwise. If resolution forces upgrades elsewhere, that cost belongs to this evaluation, not to the trial.2026-07-28 path and a legacy initialize client. The dual-protocol claim in the notes is the feature most likely to be true for the happy path and false at the edges.Sequencing.
tools/list output shape and confirm the new title field renders as expected in the client UI.laravel/mcp usage.Maintenance. This is the dominant cost. We are effectively promising to chase two pre-1.0 first-party packages, and this release shows the package doing exactly that on our behalf — good, but it means upgrade pressure arrives whether or not we want it. Budget a recurring dependency-review task per quarter, not a one-off install. Pin the package version explicitly; do not ride a floating constraint.
Support. Thin. At 0.1.x with a single cosmetic fix in this release, there is no evidence of a support commitment, deprecation policy, or documented upgrade guide. Escalation path is upstream issues on laravel/mcp and laravel/ai, which is acceptable for an internal tooling layer and unacceptable for anything customer-facing.
Scaling. Two dimensions, and only one is comfortable:
Str::headline() is fine at ten tools and fragile at a hundred, where collisions and near-duplicates become likely and there is no override mechanism in evidence. Plan for a naming convention we enforce in review, and cap the exposed surface deliberately rather than registering every action.Failure modes.
laravel/mcp 1.0 jump — manifests as clients that connect but see no tools, which reads as a package bug and is expensive to diagnose.Ramp-up. Low for a Laravel developer — a config file, a route, and a handful of action classes. The real ramp-up is conceptual and belongs to the TPM and the prompt authors, not the engineers: understanding that tool titles and descriptions are a published interface, and that changing them is a release event requiring the same discipline as changing a public REST field name.
How can I help you explore Laravel packages today?