<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jigar Karangiya</title>
    <description>The latest articles on DEV Community by Jigar Karangiya (@jigarkarangiya).</description>
    <link>https://dev.to/jigarkarangiya</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1418490%2Ff00676e0-f5ce-477c-b07f-f5cf748e57c1.jpeg</url>
      <title>DEV Community: Jigar Karangiya</title>
      <link>https://dev.to/jigarkarangiya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jigarkarangiya"/>
    <language>en</language>
    <item>
      <title>Supercharging Adobe Commerce development: introducing the adobe-commerce-docs-mcp server</title>
      <dc:creator>Jigar Karangiya</dc:creator>
      <pubDate>Tue, 02 Jun 2026 06:36:26 +0000</pubDate>
      <link>https://dev.to/jigarkarangiya/supercharging-adobe-commerce-development-introducing-the-adobe-commerce-docs-mcp-server-b4p</link>
      <guid>https://dev.to/jigarkarangiya/supercharging-adobe-commerce-development-introducing-the-adobe-commerce-docs-mcp-server-b4p</guid>
      <description>&lt;p&gt;If you write code for Adobe Commerce or Magento 2, you spend a lot of time waiting. Build times are slow, static content deployment takes forever, but the real time sink is documentation. The EAV architecture, nested XML layouts, and ever-changing GraphQL mutations mean you are constantly Alt-Tabbing to a browser to double check a syntax pattern. &lt;/p&gt;

&lt;p&gt;Every time you leave your IDE to search the Experience League portal, you lose your train of thought. You copy error codes, dig through unrelated search results, and try to find a working code snippet. It is exhausting.&lt;/p&gt;

&lt;p&gt;I wanted my coding assistant to just know this stuff without making me look it up. That is why I configured this MCP server.&lt;/p&gt;

&lt;p&gt;The adobe-commerce-docs-mcp package connects your IDE directly to the official Adobe documentation. It works with Cursor, Claude Desktop, VS Code, and Windsurf, pulling raw markdown docs right into your chat context.&lt;/p&gt;




&lt;h2&gt;
  
  
  The architecture: bridging AI and docs
&lt;/h2&gt;

&lt;p&gt;Instead of relying on web search or stale training data, the server queries the live Adobe Experience League site. It indexes the content locally, caches pages, and handles queries via the MCP protocol.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24guf51j5mi0xxjs9l0z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24guf51j5mi0xxjs9l0z.png" alt="The architecture: bridging AI and docs" width="718" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. BM25 search ranking
&lt;/h3&gt;

&lt;p&gt;The server parses the official Adobe sitemap and ranks pages using BM25 relevance scoring. This is the same search algorithm databases use to weigh search term frequency against document length. It means your assistant gets the most relevant setup guide first, not just the page that mentions a keyword the most.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Synonyms and fuzzy matching
&lt;/h3&gt;

&lt;p&gt;You do not have to query exact terminology. The search engine maps Magento specific synonyms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;graphql searches also find pages with gql&lt;/li&gt;
&lt;li&gt;module searches also match extension&lt;/li&gt;
&lt;li&gt;cloud searches match ece&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also corrects simple typos like chekout or catlog to checkout and catalog.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Local caching
&lt;/h3&gt;

&lt;p&gt;Network requests are slow, so the server uses two layers of caching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An in-memory cache for recent queries.&lt;/li&gt;
&lt;li&gt;A persistent file cache on your disk. Sitemap data lasts 24 hours, while downloaded markdown pages last 7 days. This makes subsequent queries instant and saves API calls.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Nine built-in tools
&lt;/h2&gt;

&lt;p&gt;The server registers nine tools that your assistant can run.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;search_adobe_commerce_docs&lt;/td&gt;
&lt;td&gt;Searches the indexed sitemap with synonym expansion.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;get_doc_content&lt;/td&gt;
&lt;td&gt;Pulls clean markdown content of a page.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;get_code_examples&lt;/td&gt;
&lt;td&gt;Extracts only the code blocks, skipping long text to save tokens.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;get_page_toc&lt;/td&gt;
&lt;td&gt;Fetches heading titles so the model can inspect page structure first.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;get_related_docs&lt;/td&gt;
&lt;td&gt;Finds sibling or related pages in the documentation tree.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;lookup_error_code&lt;/td&gt;
&lt;td&gt;Queries specific error codes like MDVA-43395.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multi_page_search&lt;/td&gt;
&lt;td&gt;Runs up to five queries at once and combines unique results.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;list_doc_sections&lt;/td&gt;
&lt;td&gt;Lists all root categories of the documentation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;refresh_sitemap&lt;/td&gt;
&lt;td&gt;Force refreshes the cached sitemap index.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Configured resources
&lt;/h3&gt;

&lt;p&gt;Resources are static URIs the model can browse. You can query:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;commerce://sections: Lists sections.&lt;/li&gt;
&lt;li&gt;commerce://stats: Shows cache sizes and index counts.&lt;/li&gt;
&lt;li&gt;commerce://docs/{section}: Shows page lists for a specific category.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ready prompts
&lt;/h3&gt;

&lt;p&gt;The server exposes built-in prompts to handle common workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;troubleshoot-commerce-error: Helps resolve issues from log outputs.&lt;/li&gt;
&lt;li&gt;explain-commerce-concept: Walkthroughs of things like plugins or dependency injection.&lt;/li&gt;
&lt;li&gt;commerce-code-review: Audits files against Adobe Commerce standards.&lt;/li&gt;
&lt;li&gt;commerce-upgrade-guide: Planning advice for version upgrades.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Installation and setup
&lt;/h2&gt;

&lt;p&gt;You do not need to clone the repo or build the files yourself. The server runs via npx.&lt;/p&gt;

&lt;h3&gt;
  
  
  One-click config for Cursor
&lt;/h3&gt;

&lt;p&gt;If you use Cursor, open your terminal and run this installer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://raw.githubusercontent.com/jigarkkarangiya/adobe-commerce-docs-mcp/main/setup-cursor.sh&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This script adds the configuration to your settings file automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Manual config
&lt;/h3&gt;

&lt;p&gt;You can also add it manually. Edit your settings file depending on the application:&lt;/p&gt;

&lt;h4&gt;
  
  
  Cursor (mcp.json)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"adobe-commerce-docs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"adobe-commerce-docs-mcp"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Claude Desktop (claude_desktop_config.json)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"adobe-commerce-docs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"adobe-commerce-docs-mcp"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Environment variables
&lt;/h2&gt;

&lt;p&gt;You can change default behaviors by setting environment variables in your configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SITEMAP_URL overrides the default Experience League source link.&lt;/li&gt;
&lt;li&gt;CACHE_DIR specifies the directory for cached files, which defaults to ~/.cache/adobe-commerce-docs-mcp.&lt;/li&gt;
&lt;li&gt;SITEMAP_CACHE_TTL_MS controls sitemap refresh frequency, defaulting to 24 hours.&lt;/li&gt;
&lt;li&gt;PAGE_DISK_CACHE_TTL_MS controls page cache lifetime, defaulting to 7 days.&lt;/li&gt;
&lt;li&gt;MAX_CONTENT_LENGTH limits output length to 15,000 characters to keep context size manageable.&lt;/li&gt;
&lt;li&gt;PORT changes the port if you run the server using HTTP mode with the --http flag.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Example prompts
&lt;/h2&gt;

&lt;p&gt;Once active, you can query your assistant using natural language.&lt;/p&gt;

&lt;p&gt;If you ask: "Find code examples for creating a custom GraphQL mutation in Magento 2.4," the model runs search_adobe_commerce_docs, locates the mutation guide, and calls get_code_examples to output the XML and PHP schemas.&lt;/p&gt;

&lt;p&gt;If you ask: "I am getting error MDVA-43395 during deployment. Check what this is and how to fix it," the model uses lookup_error_code to inspect the knowledge base entry and details the steps required to resolve the issue.&lt;/p&gt;

&lt;p&gt;If you ask: "Review this plugin configuration in di.xml and tell me if it matches best practice," the model pulls up guidelines using the commerce-code-review template to audit your configuration against official standards.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;This package helps you stay in your editor and avoid losing focus. If you want to check it out or contribute, the source code and packages are available on GitHub and NPM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NPM: &lt;a href="//npmjs.com/package/adobe-commerce-docs-mcp"&gt;npmjs.com/package/adobe-commerce-docs-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="//github.com/jigarkkarangiya/adobe-commerce-docs-mcp"&gt;github.com/jigarkkarangiya/adobe-commerce-docs-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>adobe</category>
      <category>magneto</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Patch to Debug Blocks and Containers in Magento 2</title>
      <dc:creator>Jigar Karangiya</dc:creator>
      <pubDate>Thu, 11 Apr 2024 08:18:39 +0000</pubDate>
      <link>https://dev.to/jigarkarangiya/patch-to-debug-blocks-and-containers-in-magento-2-22b6</link>
      <guid>https://dev.to/jigarkarangiya/patch-to-debug-blocks-and-containers-in-magento-2-22b6</guid>
      <description>&lt;p&gt;Hello Devs,&lt;br&gt;
In this tutorial, we will see how to add comments in the page HTML which shows block and template container names.&lt;/p&gt;

&lt;p&gt;Magento provides template hints but its design is too confusing and frustrating. It hurts when you have limited hours to complete your task and are stuck in finding which PHTML file is rendering and which block is responsible for the logic.&lt;/p&gt;

&lt;p&gt;Today, I will share a patch I created to show comments in the page source. It will not affect the front end and not be visible to customers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Please do not use this in the production environment, use it only in your local setup.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can check comments inside the developer tool of the between and starting of the HTML element.&lt;/p&gt;

&lt;p&gt;Let’s check how.&lt;/p&gt;

&lt;p&gt;Download my patch from the URL below and put it inside the &lt;strong&gt;m2-hotfixes/&lt;/strong&gt; or &lt;strong&gt;Root Directory&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Patch download link :&lt;/strong&gt; &lt;a href="https://gist.github.com/jigarkkarangiya/7a99ffd0049b90e7622e2a5e83c9219c"&gt;https://gist.github.com/jigarkkarangiya/7a99ffd0049b90e7622e2a5e83c9219c&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;It will show the comment on the page below :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3tewtvut6b7p3vjkz8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3tewtvut6b7p3vjkz8i.png" alt="Image description" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it. Now you can easily debug which .phtml file and which block is responsible for rendering the content.&lt;/p&gt;

&lt;p&gt;I hope this article helped you to find what you were looking for.&lt;/p&gt;

&lt;p&gt;Bookmark it for your future reference. Do comment below if you have any other questions on that.&lt;/p&gt;

&lt;p&gt;Do share this trick with your team.&lt;/p&gt;

&lt;p&gt;Thank you. Happy Desiging !!&lt;/p&gt;

</description>
      <category>magento</category>
      <category>magento2</category>
      <category>php</category>
      <category>layouts</category>
    </item>
  </channel>
</rss>
