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