Skip to main content
Glama
zeluizr

Adobe Commerce MCP

Adobe Commerce MCP

Servidor MCP para desarrollar en PHP sobre Adobe Commerce: documentación oficial, archivos de configuración, CLI, Web API y scaffolding de módulos, sin red y sin credenciales.

adobe-commerce-mcp es un servidor Model Context Protocol para quien escribe módulos de Adobe Commerce (Magento Open Source) y Adobe Commerce en PaaS o en servidor propio: di.xml, plugins, observers, layout, db_schema.xml, webapi.xml y el resto del día a día en PHP. La documentación oficial viaja dentro del paquete; el servidor no abre conexiones, no pide login y no escribe en disco. Funciona con Claude Code, Claude Desktop, Cursor, VS Code, Windsurf y cualquier cliente MCP con transporte stdio.

npm node licencia


Por qué existe

El MCP oficial de Adobe, @adobe-commerce/commerce-extensibility-tools, cubre el desarrollo con App Builder (comandos aio). Para usarlo hay que iniciar sesión en Adobe IMS (aio auth login), también para buscar documentación; su licencia es propietaria (EULA), y una de sus herramientas envía el historial de la conversación a Adobe. Si desarrollas con App Builder, ese es el servidor que corresponde.

Para el desarrollo en PHP (módulos, di.xml, layout, db_schema.xml, webapi.xml) no hay un servidor oficial. Este cubre ese caso con la documentación pública de Adobe, licencia MIT, sin cuenta y sin red.

Related MCP server: Magento 2 GraphQL Documentation MCP Server

Características

Versión del código: 0.1.0, según package.json. La entrada src/index.ts conecta el servidor por stdio, y las diez herramientas se registran en src/tools/index.ts.

  • Documentación oficial offline: 1.896 páginas de cuatro repositorios de AdobeDocs, con búsqueda BM25 por secciones. Cada resultado trae título, URL pública y ruta en el repositorio de origen.

  • Archivos de configuración: qué es cada uno, dónde va (carpeta y área), la URN del XSD cuando la documentación la da y las páginas que lo explican.

  • CLI y Web API: los 147 comandos de bin/magento (2.4.9) con sus opciones, 614 endpoints REST del esquema OpenAPI y 225 queries y mutations de GraphQL.

  • Scaffolding: módulo, plugin, observer, controller y tabla de db_schema.xml. Las herramientas devuelven los archivos (ruta y contenido) para que el cliente los escriba, y cada archivo dice de qué página de la documentación se adaptó.

  • Local y sin credenciales: nada se descarga ni se envía; todo el conocimiento está en data/.

Instalación

El cliente MCP ejecuta el servidor bajo demanda con npx, así que no hace falta instalarlo. Requiere Node >= 18.

Claude Code

claude mcp add adobe-commerce -- npx -y adobe-commerce-mcp

Para compartirlo con el equipo en un repositorio, usa --scope project: la configuración queda en .mcp.json.

Claude Desktop, Cursor y Windsurf

En claude_desktop_config.json (Claude Desktop), ~/.cursor/mcp.json o .cursor/mcp.json (Cursor) y ~/.codeium/windsurf/mcp_config.json (Windsurf):

{
  "mcpServers": {
    "adobe-commerce": {
      "command": "npx",
      "args": ["-y", "adobe-commerce-mcp"]
    }
  }
}

VS Code

En .vscode/mcp.json:

{
  "servers": {
    "adobe-commerce": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "adobe-commerce-mcp"]
    }
  }
}

Otros clientes

Cualquier cliente con transporte stdio sirve: el comando es npx y los argumentos, -y adobe-commerce-mcp. Con una instalación global (npm install -g adobe-commerce-mcp), el comando es adobe-commerce-mcp.

Uso

Después de reiniciar el cliente, pide lo que necesitas en lenguaje natural y el asistente elige la herramienta:

  • "Crea el módulo Acme_Reviews que dependa de Magento_Catalog"

  • "Agrega un plugin after a Magento\Catalog\Model\Product::getName"

  • "¿Dónde va el system.xml y cuál es su XSD?"

  • "Crea la tabla acme_review con clave foránea a catalog_product_entity"

  • "¿Qué opciones tiene bin/magento setup:static-content:deploy?"

  • "¿Qué argumentos recibe la mutation addProductsToCart?"

Herramientas

Documentación y referencia

herramienta

parámetros

qué hace

search-docs

query, area?, limit?

Busca en la documentación; area es php, frontend, webapi u operations. Devuelve extractos con título, URL y ruta de origen.

read-doc

ref, section?

Devuelve una página completa o una sección, por id, ruta de origen o URL pública.

explain-config-file

file

Explica un archivo de configuración: di.xml, events.xml, webapi.xml, db_schema.xml, crontab.xml, routes.xml, system.xml, acl.xml, layout y 32 más.

lookup-cli-command

command

Descripción, uso, argumentos y opciones de un comando de bin/magento; acepta atajos (s:up) y palabras clave.

lookup-webapi

query, api?, method?, limit?

Endpoints REST (parámetros, cuerpo, qué token los llama) y queries y mutations de GraphQL (argumentos, retorno, ejemplo, guía).

Scaffolding

herramienta

parámetros

qué genera

scaffold-module

module, description?, packageName?, version?, license?, sequence?, php?, basePath?

registration.php, etc/module.xml y composer.json.

add-plugin

module, targetClass, method, type, pluginClass?, pluginName?, area?, sortOrder?, basePath?

La clase del plugin (before, after o around) y su di.xml.

add-observer

module, event, observerClass?, observerName?, area?, basePath?

La clase del observer y su events.xml.

add-controller

module, area, frontName, routeId?, controller?, action?, method?, title?, aclResource?, basePath?

routes.xml y el controller (página GET o JSON por POST); para páginas, el layout y el template; en adminhtml, ADMIN_RESOURCE y acl.xml.

add-db-schema

module, table, columns?, primaryKey?, unique?, indexes?, foreignKeys?, comment?, resource?, engine?, basePath?

La tabla en etc/db_schema.xml, con los pasos del whitelist y de setup:upgrade.

Las herramientas de scaffolding devuelven también structuredContent con files (path, content, source) y notes. Las rutas son relativas a la raíz de la instalación (app/code/<Vendor>/<Module> por defecto). La herramienta no ve el módulo: si el archivo ya existe, el nodo nuevo se fusiona con lo que hay, y las notas lo avisan.

Resources

URI

contenido

adobe-commerce://docs

Índice de la documentación por área y carpeta.

adobe-commerce://docs/{id}

Una página, por ejemplo adobe-commerce://docs/php/development/components/plugins.md.

adobe-commerce://config-files

Lista de los archivos de configuración del catálogo.

adobe-commerce://sources

Repositorios, commits y licencias de los datos.

De dónde vienen los datos

Todo sale de los repositorios públicos de documentación de Adobe, en el commit indicado en data/fonte.json:

repositorio

licencia

qué aporta

AdobeDocs/commerce-php

Apache-2.0

807 páginas: extensiones PHP, arquitectura, tutoriales, estándares de código, referencia de módulos.

AdobeDocs/commerce-frontend-core

Apache-2.0

262 páginas: temas, layouts, templates, UI components, JavaScript, Page Builder.

AdobeDocs/commerce-webapi

Apache-2.0

532 páginas de guías REST y GraphQL, el esquema OpenAPI 2.4.9 y la referencia generada de GraphQL 2.4.9.

AdobeDocs/commerce-operations.en

MIT

295 páginas: configuración, CLI, instalación, rendimiento, seguridad, actualización y la referencia de bin/magento.

Quedaron fuera las notas de versión, las más de 900 páginas de parches del Quality Patches Tool, las herramientas de monitoreo en la nube y la referencia de GraphQL de versiones anteriores. El código y los XSD del repositorio magento/magento2 no se usan: su licencia (OSL-3.0) no es compatible con la MIT de este paquete. Los templates de scaffolding se adaptaron de los ejemplos de la documentación.

Las licencias de las fuentes van en data/licenses/ y el detalle, en NOTICE. Este proyecto no está afiliado a Adobe ni cuenta con su respaldo.

Estructura

src/
├── index.ts            # entry point del binario (stdio)
├── server.ts           # McpServer: registra tools y resources
├── tools/              # una herramienta por archivo, registradas en tools/index.ts
├── scaffold/           # validación de nombres y formato de los archivos generados
├── resources/          # adobe-commerce://docs, config-files y sources
└── knowledge/          # carga de data/ y búsqueda BM25
scripts/
├── ingerir.ts          # genera data/ a partir de los clones de AdobeDocs
├── catalogo-config.ts  # catálogo de archivos de configuración, con sus fuentes
├── probar-mcp.mjs      # arranca el servidor por stdio y comprueba las herramientas
└── rastros.mjs         # busca rutas locales, correos personales y nombres de clientes
data/                   # generado: docs, cli.json, webapi/, config-files.json, licencias
test/                   # node --test sobre el build

Desarrollo

Desde una copia del repositorio:

npm install
npm run check

comando

qué hace

npm run build

Compila TypeScript en build/ y marca el binario como ejecutable.

npm run lint

Verificación de tipos de src/ y scripts/.

npm test

Pruebas con node --test sobre el build.

npm run probar-mcp

Arranca el servidor compilado por stdio y falla si falta alguna herramienta esperada.

npm run rastros

Busca rutas locales, correos personales y nombres de clientes fuera de node_modules.

npm run check

El gate: prettier --check, lint, build, pruebas, probar-mcp y rastros.

npm run ingerir -- <carpeta>

Regenera data/ a partir de los clones (también con FONTES_DIR).

npm run inspect

Abre el MCP Inspector sobre el build.

Para probar la versión local en un cliente, apunta el comando a la build:

claude mcp add adobe-commerce-local -- node /ruta/a/adobe-commerce-mcp/build/index.js

Actualizar la documentación

  1. Clona en una misma carpeta AdobeDocs/commerce-php, commerce-frontend-core, commerce-webapi y commerce-operations.en (un clon superficial alcanza).

  2. npm run ingerir -- <carpeta>. El script solo lee los archivos de texto; nada de los clones se ejecuta.

  3. La ingestión falla si una entrada del catálogo de configuración cita una página que no existe o una URN que no aparece en sus fuentes.

  4. npm run check y commit de data/: el paquete lo necesita.

Convenciones

  • TypeScript con módulos ESM; Prettier sin punto y coma y con comillas simples.

  • Las descripciones de las herramientas van en inglés: es lo que el modelo lee para elegirlas.

  • Conventional Commits.

  • El conocimiento es de solo lectura en tiempo de ejecución: nada se escribe en disco ni se descarga.

Ramas y publicación

El trabajo nace en una rama salida de dev y el PR va contra dev. De ahí se promueve a qa y, después de probar, a main, siempre con merge de la rama completa. El CI corre npm run check en Node 18, 20 y 22.

Para publicar, actualiza la versión en package.json, server.json y CHANGELOG.md y sube un tag v*: el workflow publish.yml corre el gate, publica en npm con provenance, crea el GitHub Release y publica server.json en el MCP Registry.

Changelog

Ver CHANGELOG.md.

Licencia

MIT. Los datos de data/ conservan las licencias de sus fuentes (Apache-2.0 y MIT); ver NOTICE.

Hecho con amor y café por commente.me

Available Tools

10 tools
add-controllerAdd a controller and routeA
Read-onlyIdempotent

Generate routes.xml, an action controller (GET page or POST JSON) and, for pages, the layout handle and template, for the frontend or adminhtml area (with ADMIN_RESOURCE and acl.xml for the Admin), adapted from the official routing docs. Returns the files for the caller to write.

NameRequiredDescriptionDefault
areaYesfrontend (storefront) or adminhtml (Admin)
titleNoPage title for GET actions
actionNoAction class (default "Index")
methodNoHTTP method: GET renders a page with a layout handle, POST returns JSON (default GET)
moduleYesModule name as Vendor_Module (e.g. "Acme_Reviews"), as registered in registration.php
routeIdNoRoute id in routes.xml and first part of the layout handle (default: frontName)
basePathNoModule directory relative to the Commerce root (default "app/code/<Vendor>/<Module>")
frontNameYesURL front name: the first URL segment, <frontName>/<controller>/<action> (e.g. "reviews")
controllerNoController folder (default "Index")
aclResourceNoadminhtml only: ACL resource for ADMIN_RESOURCE (default "<Vendor_Module>::<controller>")

Output Schema

NameRequiredDescription
filesYesFiles to write. The server never writes to disk.
notesYesNext steps and caveats

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description valuably reconciles with readOnlyHint=true by stating the tool returns the files "for the caller to write" rather than mutating the filesystem itself — that is exactly the clarification an agent needs. It also discloses the adminhtml-specific extras. It does not say what happens when target files already exist (idempotentHint implies regeneration, but the overwrite behavior is unstated).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the verb and the full artifact list, followed by the critical return-value note. No filler; every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be described, and the schema is fully documented. What is missing is prerequisite context (module existence, overwrite behavior on re-invocation) that matters for a scaffolding tool with 10 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter carries its own description and defaults, so the schema does the heavy lifting. The description adds a little context — GET yields a layout handle, POST yields JSON, adminhtml adds ACL — but nothing beyond what the schema already says. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ("Generate") plus an enumerated set of artifacts: routes.xml, action controller, layout handle/template, ADMIN_RESOURCE and acl.xml. It clearly scopes the frontend vs adminhtml outputs, so an agent knows exactly what will be produced. It stops short of differentiating itself from siblings like scaffold-module or add-plugin, which is the only thing keeping it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the artifact list; there is no explicit "use this when…" or "do not use this if…" and no mention of the prerequisite that the module must already exist (scaffold-module). The GET/POST and area distinctions are useful signals but they are parameter semantics, not usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add-db-schemaAdd a table to db_schema.xmlA
Read-onlyIdempotent

Generate a declarative schema etc/db_schema.xml table with columns, primary key, unique constraints, foreign keys and indexes, adapted from the official declarative schema docs, plus the whitelist and setup:upgrade steps. Returns the file for the caller to write.

NameRequiredDescriptionDefault
tableYesTable name (e.g. "acme_review")
engineNoSQL engine, default "innodb"
moduleYesModule name as Vendor_Module (e.g. "Acme_Reviews"), as registered in registration.php
uniqueNoUnique constraints, each a list of columns
columnsNoColumns. Without columns the table gets an entity_id int unsigned identity primary key.
commentNoTable comment
indexesNo
basePathNoModule directory relative to the Commerce root (default "app/code/<Vendor>/<Module>")
resourceNoDatabase resource (shard), default "default"
primaryKeyNoPrimary key columns (default: the identity column)
foreignKeysNo

Output Schema

NameRequiredDescription
filesYesFiles to write. The server never writes to disk.
notesYesNext steps and caveats

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and idempotentHint=true; the description reinforces this by stating 'Returns the file for the caller to write', which tells the agent the tool does not touch the filesystem itself — a genuinely useful clarification. It also mentions the whitelist and setup:upgrade follow-up steps, adding procedural context. It stops short of saying whether an existing table definition would be overwritten, which is why it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence front-loads the verb and the artifact, with the return-value caveat appended last. Every clause carries information, though 'declarative schema etc/db_schema.xml table' reads slightly awkwardly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 11 parameters at 82% coverage, full annotation coverage, and an output schema, the description only needs to establish intent and the non-writing contract — both of which it does. Nothing an agent needs to invoke the tool correctly is missing, aside from optional context on existing-table handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 82%, so the parameters are already well documented in the input schema. The description enumerates the element groups (columns, primaryKey, unique, foreignKeys, indexes), which mirrors the schema rather than adding semantics such as merge behavior or validation rules for these structures. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Generate) and a very specific resource (etc/db_schema.xml table) with the exact contents enumerated: columns, primary key, unique constraints, foreign keys, indexes. It is clearly distinguishable from siblings such as add-plugin or add-observer by the artifact alone, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied — an agent can infer this is for adding a table to a Magento module, and the phrase 'adapted from the official declarative schema docs' hints at the authority behind the output. There is no explicit when-to-use, no conditions under which it should not be used (e.g. altering an existing table), and no named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add-observerAdd an event observerA
Read-onlyIdempotent

Generate an observer class and its events.xml subscription (global or per area), adapted from the official events and observers docs. Returns the files for the caller to write. Use it to react to a dispatched event.

NameRequiredDescriptionDefault
areaNoglobal (etc/events.xml, all areas) or one area folder (default global)
eventYesEvent name to observe (e.g. "catalog_product_save_after", "checkout_cart_add_product_complete")
moduleYesModule name as Vendor_Module (e.g. "Acme_Reviews"), as registered in registration.php
basePathNoModule directory relative to the Commerce root (default "app/code/<Vendor>/<Module>")
observerNameNoObserver name in events.xml (unique per event)
observerClassNoObserver class name inside <Module>\Observer (default derived from the event name)

Output Schema

NameRequiredDescription
filesYesFiles to write. The server never writes to disk.
notesYesNext steps and caveats

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful context beyond them: it produces files and returns them "for the caller to write," so the agent knows no disk mutation occurs here, and notes the output is adapted from official docs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what is generated, followed by the return behavior and the use case. No redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the description correctly notes it returns files for the caller to write, so return values need no elaboration. The one gap is that it doesn't clarify the relationship to plugin-based interception or when an observer is preferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the enum for area, the module format, and observer naming are fully documented in the schema. The description only echoes the global/per-area distinction, meeting the baseline rather than adding syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-plus-resource: "Generate an observer class and its events.xml subscription (global or per area)." It distinguishes itself from siblings like add-plugin and add-controller by naming exactly what artifacts are produced.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it to react to a dispatched event" gives a when-to-use condition, but the description doesn't contrast this tool with alternatives such as add-plugin for intercepting behavior or add-controller for routing. Implied usage, no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add-pluginAdd a plugin (interceptor)A
Read-onlyIdempotent

Generate a before, after or around plugin class and its di.xml declaration for a public method of a class or interface, adapted from the official plugins docs. Returns the files for the caller to write. Use it to change the behavior of a core or third-party method without rewriting the class.

NameRequiredDescriptionDefault
areaNodi.xml area: global (etc/di.xml) or an area folder (default global)
typeYesPlugin type. The docs advise after over around unless the chain must be stopped.
methodYesPublic method to intercept (e.g. "getName", "save")
moduleYesModule name as Vendor_Module (e.g. "Acme_Reviews"), as registered in registration.php
basePathNoModule directory relative to the Commerce root (default "app/code/<Vendor>/<Module>")
sortOrderNosortOrder attribute in di.xml
pluginNameNoPlugin name in di.xml (default "<vendor>_<module>_<target>_<method>")
pluginClassNoPlugin class name inside <Module>\Plugin (default "<TargetShortName>Plugin")
targetClassYesClass or interface whose public method is intercepted (e.g. "Magento\Catalog\Model\Product")

Output Schema

NameRequiredDescription
filesYesFiles to write. The server never writes to disk.
notesYesNext steps and caveats

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The line 'Returns the files for the caller to write' is genuinely valuable: it explains why readOnlyHint=true is consistent with a scaffolding tool and tells the agent it must perform the write itself. What remains unstated is what happens when a target file already exists, whether directories are created, and what error conditions look like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero padding; the artifact produced is front-loaded and the caller's responsibility (writing the files) follows immediately. Nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full parameter documentation, the description needn't explain return values, and the 'returns files for the caller to write' note covers the key contract gap. Minor omissions: no mention of overwrite/conflict behavior for a generator that may target existing plugin files.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter (area, type, method, module, basePath, pluginName, pluginClass, sortOrder, targetClass) is documented with defaults and examples in the schema itself. The description only restates the before/after/around enum and the 'public method' constraint, adding no syntax or default guidance beyond the structured fields. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and artifact: 'Generate a before, after or around plugin class and its di.xml declaration' for a public method of a class or interface. That resource is clearly distinct from the sibling scaffolders (add-observer, add-controller, add-db-schema), so an agent can pick it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it to change the behavior of a core or third-party method without rewriting the class' gives a clear positive condition for selection, and the 'without rewriting the class' clause implicitly contrasts it with a class rewrite. It stops short of naming when not to use it (e.g., event-driven changes should go to add-observer instead) or any prerequisite such as the module already existing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain-config-fileExplain a module config fileA
Read-onlyIdempotent

Explain an Adobe Commerce module configuration file (di.xml, events.xml, webapi.xml, db_schema.xml, crontab.xml, routes.xml, system.xml, acl.xml, config.xml, layout, ui_component, schema.graphqls, requirejs-config.js and more): what it is for, where it goes (folder and area), the XSD URN from the docs, and the documentation pages. Use it before creating or editing one of these files.

NameRequiredDescriptionDefault
fileYesConfig file name or path inside a module (e.g. "di.xml", "etc/adminhtml/system.xml", "db_schema.xml", "crontab.xml", "webapi.xml", "view/frontend/layout/catalog_product_view.xml", "requirejs-config.js")

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real value by stating what the answer contains: purpose, location (folder and area), XSD URN, and documentation pages — which the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, with the purpose and scope front-loaded before the usage hint. The file-type list is long but each item earns its place by disambiguating scope; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only lookup tool with no output schema, the description is nearly sufficient because it enumerates the expected return content. It stops short of saying what happens for an unrecognized file name or whether the answer is version-specific, but nothing essential to invoking it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema's own example list already covers path forms like 'etc/adminhtml/system.xml' and 'view/frontend/layout/...'. The description's parallel enumeration reinforces that both bare names and module-relative paths are accepted, marginally improving on the schema but not adding format rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Explain') plus specific resource (Adobe Commerce module config file), with an enumerated list of file types that makes the scope unambiguous. It is clearly distinct from sibling tools like search-docs, read-doc, and scaffold-module.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives an explicit trigger: 'Use it before creating or editing one of these files,' which cleanly positions it relative to scaffold-module and add-db-schema. It does not name an alternative for when an agent already knows the file or wants raw doc content (read-doc/search-docs), leaving that inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup-cli-commandLook up a bin/magento commandA
Read-onlyIdempotent

Look up a bin/magento command of Adobe Commerce on-premises: description, usage, arguments and options, from the official CLI reference. Accepts full names, Symfony shortcuts (s:up) or keywords. Use it before suggesting or running a bin/magento command.

NameRequiredDescriptionDefault
commandYesA bin/magento command, full or with Symfony shortcuts (e.g. "setup:upgrade", "bin/magento s:up", "indexer:reindex"), or keywords to find one (e.g. "static content deploy", "maintenance")

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive and closed-world, so safety needs no restating. The description adds real context: results come from the official CLI reference and the input can be fuzzy ('full names, Symfony shortcuts, keywords'), which explains why near-miss queries still resolve. It omits what happens on a no-match query, a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first defines scope, source and return content; the second gives the call-to-action. No filler, and the core definition leads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one parameter, no output schema and full annotation coverage, this is nearly self-sufficient — it even says what fields the response contains. Only the behavior on an unresolvable command name is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single `command` parameter already documents full names, Symfony shortcuts and examples. The description echoes the same accepted input forms (s:up, keywords) so it adds emphasis but no new semantics beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('look up a bin/magento command') and enumerates what is returned: description, usage, arguments, options, from the official CLI reference. The bin/magento domain implicitly separates it from lookup-webapi and search-docs, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear usage rule — 'Use it before suggesting or running a bin/magento command' — which tells the agent when to reach for it. It does not state when to prefer search-docs or read-doc instead, so alternatives remain inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup-webapiLook up REST endpoints and GraphQL operationsA
Read-onlyIdempotent

Look up Adobe Commerce Web API: REST endpoints (path, method, parameters, body, which tokens can call it) from the official OpenAPI schema, and GraphQL queries and mutations (arguments, return type, example, guide). Accepts a GraphQL name, a REST path or keywords. Use it when writing integrations or storefront calls.

NameRequiredDescriptionDefault
apiNoLimit to REST or GraphQL
limitNoMax results for keyword search (default 10)
queryYesGraphQL query or mutation name (e.g. "products", "addProductsToCart"), REST path (e.g. "/V1/products/{sku}", "V1/orders"), or keywords (e.g. "cart coupon", "customer address")
methodNoREST only: HTTP method

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world behavior, and the description adds real context: the data comes from the official OpenAPI schema and results include path, method, parameters, body, accepted tokens, GraphQL arguments, return type and examples. It does not discuss result limits or ambiguity handling beyond what the schema's 'limit' field implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource being looked up and followed by the usage cue. Dense but each clause carries useful content; the long parenthetical listings are slightly heavy but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating what REST and GraphQL lookups return, which is enough for an agent to trust the result shape. It stops short of covering keyword-search behavior or pagination beyond the schema's 'limit' field.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with enums for 'api' and 'method' and examples for 'query'. The description restates the accepted query forms (GraphQL name, REST path, keywords) but adds no syntax or constraints beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (look up) and precise resource (Adobe Commerce REST endpoints and GraphQL queries/mutations), plus what is returned for each. This clearly separates it from siblings like search-docs or lookup-cli-command.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it when writing integrations or storefront calls" gives a concrete usage context. It does not name an alternative tool or state when-not to use it (e.g., versus search-docs), so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read-docRead an Adobe Commerce doc pageA
Read-onlyIdempotent

Read a full page, or one section, of the bundled Adobe Commerce documentation by id (from search-docs), source path or public developer.adobe.com / experienceleague.adobe.com URL. Use it after search-docs, or when the user pastes a docs link.

NameRequiredDescriptionDefault
refYesDocument id as returned by search-docs (e.g. "php/development/components/plugins.md"), source path (e.g. "commerce-php/src/pages/development/components/plugins.md") or public URL. Append "#anchor" to read one section.
sectionNoSection anchor or heading to read only that section (e.g. "around-methods")

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds meaningful behavioral context beyond that: the docs are 'bundled' (local, not a live fetch), and a single section can be targeted instead of the whole page. It does not mention output format or how very large pages are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and immediately followed by the routing condition. No redundant restatement of the title or wasted clauses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, fully documented, annotation-rich read tool this is nearly sufficient; the main omissions are what the returned content looks like (markdown? full text?) and any size or truncation behavior for long pages. Since no output schema exists, that omission is a real, if minor, gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents every accepted ref form, the #anchor convention, and the section parameter with an example. The description restates the same reference types without adding syntax, precedence, or fallback behavior, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read a full page, or one section, of the bundled Adobe Commerce documentation') and explicitly bounds the accepted reference forms (id, source path, public URL). This is clearly distinguishable from siblings like search-docs or lookup-webapi, which retrieve different artifacts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit sequencing guidance: 'Use it after search-docs, or when the user pastes a docs link', which names the primary alternative and the condition that selects this tool. It stops short of any when-not-to-use statement (e.g. don't use for searching unknown topics), so it is clear context without full exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scaffold-moduleScaffold an Adobe Commerce moduleA
Read-onlyIdempotent

Generate registration.php, etc/module.xml and composer.json for a new Adobe Commerce module (Vendor_Module), adapted from the official docs. Returns the files (path and content) for the caller to write; the server never writes to disk. Use it when starting a module.

NameRequiredDescriptionDefault
phpNoPHP constraint for composer.json require (e.g. "~8.3.0||~8.4.0"). Omitted when not given.
moduleYesModule name as Vendor_Module (e.g. "Acme_Reviews"), as registered in registration.php
licenseNocomposer.json license list (default ["proprietary"])
versionNocomposer.json version (default "1.0.0")
basePathNoModule directory relative to the Commerce root (default "app/code/<Vendor>/<Module>")
sequenceNoModules that must load before this one, for <sequence> in module.xml (e.g. ["Magento_Catalog"])
descriptionNocomposer.json description
packageNameNoComposer package name (default "<vendor>/module-<module>", lowercase)

Output Schema

NameRequiredDescription
filesYesFiles to write. The server never writes to disk.
notesYesNext steps and caveats

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the single behavior an agent most needs and cannot infer: the tool returns file paths and contents and never writes to disk, so the caller must persist them. This is consistent with readOnlyHint=true/destructiveHint=false and complements rather than repeats the annotations. 'Adapted from the official docs' also signals output fidelity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what gets generated, then the critical return/no-write behavior, then the usage cue. Every sentence carries distinct information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema covering the returned files, full parameter coverage, and annotations covering safety, the description is nearly complete. The one gap is collision behavior — it does not say what happens if files already exist at basePath, which matters despite idempotentHint=true.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including defaults and examples is already documented in structured data. The description adds no new parameter semantics beyond restating the Vendor_Module format, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and enumerates the concrete artifacts generated (registration.php, etc/module.xml, composer.json) for a new Vendor_Module. 'Use it when starting a module' separates it in spirit from the add-* siblings that extend existing modules, but no sibling is named explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it when starting a module' gives clear context for selecting it, and 'for a new Adobe Commerce module' implies the boundary against add-plugin/add-observer. There is no explicit when-not or named alternative, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-docsSearch Adobe Commerce docsA
Read-onlyIdempotent

Search the official Adobe Commerce (Magento Open Source) developer documentation bundled offline: PHP extensions, frontend core, Web APIs and operations. Use it first for any "how do I" question about modules, plugins, DI, events, declarative schema, layouts, caching, indexers, queues or configuration. Returns excerpts with title, public URL and source path; follow up with read-doc.

NameRequiredDescriptionDefault
areaNoRestrict to one doc set: php (PHP extensions), frontend (themes, layouts, UI components, JS), webapi (REST and GraphQL guides), operations (configuration, CLI, installation, performance)
limitNoMax results (default 5, max 20)
queryYesKeywords to look for in the official Adobe Commerce docs (e.g. "plugin around method", "declarative schema foreign key", "message queue consumer", "full page cache private content")

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile needs no restating. The description adds genuinely new context: the corpus is bundled offline (so no network freshness or live-doc assumptions), results are excerpts carrying title, public URL and source path, and read-doc is the drill-down path. It doesn't discuss ranking or relevance behavior, which is the only meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences in a clear order: what it searches, when to use it, what comes back and what to do next. The topic enumeration is dense but every item is a real retrieval cue; nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by saying results are excerpts with title, URL and source path, plus the read-doc follow-up, which is what an agent needs to chain calls. Only minor omissions remain, such as result ordering or whether excerpts are truncated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so query, area, and limit are already fully documented with examples, enum meanings and the default/max. The description's recital of the four doc areas roughly mirrors the area enum without adding format or query-syntax guidance beyond the schema. Baseline 3 is appropriate when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and a precisely scoped resource: the official Adobe Commerce/Magento developer documentation bundled offline, broken down into PHP extensions, frontend core, Web APIs and operations. It also names read-doc as the follow-up tool, so an agent can separate it from siblings like lookup-webapi or lookup-cli-command without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it first for any 'how do I' question" is an explicit routing directive that prioritizes this tool over siblings, and the enumerated topic list (modules, plugins, DI, events, declarative schema, layouts, caching, indexers, queues, configuration) gives concrete triggers. It stops short of saying when to prefer lookup-webapi or lookup-cli-command instead, so the exclusions are implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedadd-controller
    • First observedadd-db-schema
    • First observedadd-observer
    • First observedadd-plugin
    • First observedexplain-config-file
    • First observedlookup-cli-command
    • First observedlookup-webapi
    • First observedread-doc
    • First observedscaffold-module
    • First observedsearch-docs

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation4/5

Each tool has a distinct role: docs search/read pair, two reference lookups (CLI vs Web API), and five generators targeting different artifacts. The only friction is that explain-config-file covers the same file types (di.xml, events.xml, db_schema.xml) that add-plugin, add-observer and add-db-schema generate, but the 'explain before creating' framing keeps the boundary readable.

Naming Consistency4/5

All names are kebab-case verb_noun (explain-config-file, add-plugin, search-docs, lookup-webapi), which is predictable. Minor deviation: generators use three different verbs (add-, scaffold-, explain-) rather than one, so a new artifact type could plausibly be named either add- or scaffold-.

Tool Count5/5

Ten tools for a large development domain is well-scoped; every tool maps to a real workflow step (research, lookup, generate). No filler or duplicate tools.

Completeness4/5

Core module lifecycle artifacts are covered (module skeleton, plugin, observer, controller/routes, db_schema) plus a solid offline docs and reference layer. Gaps remain for other common generators such as crontab.xml, console commands, system.xml admin config, UI components and GraphQL resolvers, though agents can hand-write these from the bundled docs.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to interact with Magento 2 development environments through comprehensive tools for module management, database operations, cache control, configuration management, and system diagnostics. Supports complete development workflows from module creation to deployment and troubleshooting.
    28
    27 npm
    41
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides offline search and retrieval of Magento 2 GraphQL API documentation with 8 specialized tools for finding queries, mutations, types, tutorials, and code examples across 350+ locally indexed markdown files.
    8
    9
    -