Skip to main content
Glama
boldcommerce

Magento 2 MCP Server

by boldcommerce

get_product_by_sku

Retrieve detailed product information from a Magento 2 store using the product's SKU identifier for inventory management, order processing, or catalog updates.

Instructions

Get detailed information about a product by its SKU

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
skuYesThe SKU (Stock Keeping Unit) of the product

Implementation Reference

  • The handler function fetches the product data from Magento API using the provided SKU, formats it with formatProduct helper, and returns the JSON stringified response or an error message.
    async ({ sku }) => {
      try {
        const productData = await callMagentoApi(`/products/${sku}`);
        const formattedProduct = formatProduct(productData);
        
        return {
          content: [
            {
              type: "text",
              text: JSON.stringify(formattedProduct, null, 2)
            }
          ]
        };
      } catch (error) {
        return {
          content: [
            {
              type: "text",
              text: `Error fetching product: ${error.message}`
            }
          ],
          isError: true
        };
      }
    }
  • Zod schema defining the input parameter 'sku' as a required string.
    {
      sku: z.string().describe("The SKU (Stock Keeping Unit) of the product")
    },
  • mcp-server.js:383-414 (registration)
    Registration of the 'get_product_by_sku' tool using McpServer's tool method, specifying name, description, input schema, and inline handler function.
    server.tool(
      "get_product_by_sku",
      "Get detailed information about a product by its SKU",
      {
        sku: z.string().describe("The SKU (Stock Keeping Unit) of the product")
      },
      async ({ sku }) => {
        try {
          const productData = await callMagentoApi(`/products/${sku}`);
          const formattedProduct = formatProduct(productData);
          
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify(formattedProduct, null, 2)
              }
            ]
          };
        } catch (error) {
          return {
            content: [
              {
                type: "text",
                text: `Error fetching product: ${error.message}`
              }
            ],
            isError: true
          };
        }
      }
    );
  • Supporting helper function that formats raw product data from Magento API into a clean, readable object, extracting custom attributes.
    function formatProduct(product) {
      if (!product) return "Product not found";
      
      // Extract custom attributes into a more readable format
      const customAttributes = {};
      if (product.custom_attributes && Array.isArray(product.custom_attributes)) {
        product.custom_attributes.forEach(attr => {
          customAttributes[attr.attribute_code] = attr.value;
        });
      }
      
      return {
        id: product.id,
        sku: product.sku,
        name: product.name,
        price: product.price,
        status: product.status,
        visibility: product.visibility,
        type_id: product.type_id,
        created_at: product.created_at,
        updated_at: product.updated_at,
        extension_attributes: product.extension_attributes,
        custom_attributes: customAttributes
      };
    }
  • Core utility helper for making authenticated API requests to the Magento 2 REST API using axios, handling errors and SSL bypass for development.
    async function callMagentoApi(endpoint, method = 'GET', data = null) {
      try {
        const url = `${MAGENTO_BASE_URL}${endpoint}`;
        const headers = {
          'Authorization': `Bearer ${MAGENTO_API_TOKEN}`,
          'Content-Type': 'application/json'
        };
        
        const config = {
          method,
          url,
          headers,
          data: data ? JSON.stringify(data) : undefined,
          // Bypass SSL certificate verification for development
          httpsAgent: new (require('https').Agent)({
            rejectUnauthorized: false
          })
        };
        
        const response = await axios(config);
        return response.data;
      } catch (error) {
        console.error('Magento API Error:', error.response?.data || error.message);
        throw error;
      }
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/boldcommerce/magento2-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server