Read-only is the only sensible default
Every production-grade Magento MCP I've looked at in 2026 enforces read-only at two layers. The protocol exposes only read tools, and the underlying PHP refuses writes regardless of what the client asks. Freento's open-source Magento 2 MCP 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, LLMs emit malformed tool arguments. Hallucinated field names, wrong enum values, mis-typed numbers. Server-side validation catches most of it, but the model will try things you didn't anticipate. On a read endpoint, the cost of a bad call is a 400 response. On a write endpoint, the cost can be a corrupted order.
Second, the spec treats tool annotations as untrusted. If your server is multi-tenant and a malicious user registers a tool with a misleading description, a downstream agent might call it. Host consent flows are only as strong as the host's UI, and the UI varies wildly across clients.
Third, write access multiplies the audit surface. You need to log who-called-what-when, what changed, and reconcile against Magento's existing change logs. Most teams don't have that ready on day one.
Read-only, scoped narrowly, with an ACL that separates catalog from customer PII from orders, covers maybe 80% of what merchants actually want: analytics, inventory checks, configuration audits, support diagnostics. All without the operational risk.