cboxdk/statamic-mcp
A Statamic addon that exposes your site to AI assistants through the Model Context Protocol, letting MCP clients like Claude browse and manage entries, taxonomies, and content via secure tools.
Scope of the release. v3.2.1 is a patch release containing four bug fixes and no new features, no deprecations, and no breaking API changes. Its significance is disproportionate to its version number: all four defects sit on the write path between an MCP client and Statamic's content store, and two of them are data-integrity issues rather than ergonomics issues.
Architecture fit. The package is an MCP server/adapter layered over Statamic's content API, with a date-normalization step inserted between inbound payloads and Statamic's validation. The fixes reveal that this normalization was previously implemented as a single top-level conversion pass; v3.2.1 replaces it with a conversion applied at every nesting level (grid rows, replicator sets, groups) and across all content types (entries, terms, globals). The architectural observation for a TPM is that date coercion is being handled by enumeration of container types rather than by recursive traversal of the field tree. That is the root pattern that produced four separate bugs at once, and it is the pattern most likely to produce a fifth.
Integration feasibility. Low effort, high value. Composer-level upgrade, no configuration changes implied by the notes, no migration commands mentioned. The one caveat is data, not code — see below.
Technical risk.
Z to a wall-clock value formatted in app timezone, shifting stored times. 2026-06-01 10:00 sent to a Europe/Copenhagen site was stored as 12:00. This means historical records written through the MCP on non-UTC sites may already be wrong, and the fix does not correct them.prices grid carrying valid_from. Top-level range fields ({start, end}) and format: U Unix-timestamp fields similarly failed on all creates and updates.Key questions for the maintainer.
U combinations?Stack fit. Laravel + Statamic + an MCP client. The package adds a protocol surface, not a runtime dependency in the application's request path, so it does not alter the host application's architecture. The date-normalization layer is the only piece with meaningful coupling, and it couples to Statamic's fieldtype/validation internals — the most version-sensitive seam in the stack.
Migration path.
app.timezone, since a UTC staging environment reproduces exactly the blind spot that hid the original bug.prices grid containing valid_from; replicator set with a date; group with a date; top-level {start, end} range; format: U field; and the same matrix on a term and a global.Compatibility. Patch-level, semver-compatible. Verify the Statamic version constraint in composer.json before rollout; the fix touches validation behavior, which is sensitive to Statamic minor releases.
Sequencing. Staging validation in a non-UTC timezone → data audit decision (blocking only for non-UTC sites with MCP write history) → production rollout → test-matrix addition. The audit and the code upgrade are independent and can proceed in parallel.
Maintenance. Four distinct date defects in a single patch, all traceable to one design choice, is a signal to track this subsystem rather than treat v3.2.1 as closure. Ownership question worth raising: whether this logic belongs in the adapter or upstream in Statamic. Duplicating validation-adjacent normalization in an add-on means every Statamic fieldtype or validation change is a potential regression here.
Support. Net reduction in support burden — the grid/replicator date failure blocked all updates to affected records, and range and U-format failures blocked all creates and updates, all of which would have presented as opaque "Not a valid date" or PHP type errors to end users. Countervailing risk: the timezone change alters stored values, so expect a short tail of "the time changed" reports that need a prepared explanation of wall-clock vs. instant semantics.
Scaling. No performance or capacity implications. The added conversion work is per-payload and negligible against Statamic's own write cost.
Failure modes to watch.
U defects. Low harm, high visibility, and the mode most likely to be caught in staging.Ramp-up. Low for developers (patch upgrade, no API change). Moderate for whoever owns data quality: they need a working model of the date contract — an ISO 8601 Zulu value is an instant and lands on the site's clock; a wall-clock value is read in the app timezone and converted to UTC; stored values round-trip unchanged. That contract should be documented in the integration notes, because it is exactly the distinction whose absence caused both the shift and the failed validation.
How can I help you explore Laravel packages today?