Read-only is the only sensible default
Every production-grade Magento MCP we have looked at in 2026 enforces read-only at two layers. The protocol exposes only read operations, and the store itself refuses writes regardless of what the client asks for. Freento's open-source Magento 2 module is a clean reference for this pattern, and the commercial implementations do the same. That double enforcement isn't paranoia. It's the right architecture given three facts about where MCP sits in 2026.
First, models get the details wrong. They invent field names, pick the wrong option out of a list, send a number where text belongs. Validation catches most of it, but the model will try things nobody anticipated. On a read request, the cost of a bad call is an error message. On a write request, the cost can be a corrupted order.
Second, the specification treats tool descriptions as untrusted. If your server is shared across several stores and someone registers a tool with a misleading description, a downstream agent might call it. Consent flows are only as strong as the interface asking for consent, and those vary wildly across AI clients.
Third, write access multiplies the audit surface. You need to log who called what and when, what changed, and reconcile it against the change history Magento already keeps. Most teams don't have that ready on day one.
Read-only, scoped narrowly, with permissions that separate catalog from customer data from orders, covers maybe 80% of what merchants actually want: analytics, inventory checks, configuration audits, support diagnostics. All without the operational risk.